§1A transaction's path#
- Sign. The client serializes a canonical V2 envelope and signs it, bound to the chain and genesis.
- Submit. RPC or gossip decodes it and offers it to the transaction pool.
- Admit. Pool checks, repeated on every head change, decide eligibility. Admission is not a promise of inclusion.
- Propose. The elected proposer orders candidates and simulates them within block budgets.
- Execute. Validators authenticate the proposal and execute the whole block strictly. An invalid transaction invalidates the block; a valid action that fails produces a failed receipt.
- Finalize. Validators holding more than two thirds of voting power precommit. The commit persists blocks, receipts, state and validator data together.
- Observe. RPC exposes the canonical result. Shielded wallets rebuild their state from authenticated compact blocks.
§2Invariants every change must preserve#
- Identity is more than a chain ID. Genesis, effective consensus configuration and the protocol commitment together identify a network.
- Execution is deterministic. Proposer selection never replaces strict execution by every validator.
- Invalid input never partially commits. A valid transaction that fails follows receipt, fee and nonce rules instead.
- Safety state survives restarts. Validator locks and signing watermarks persist. Running a duplicate signer or resetting them defeats safety.
- Consensus changes move together. Encodings, gas schedules, activation rules and state-root commitments are reviewed as one change.
- Advice is not finality. An RPC simulation, a unit test or a past review result is never evidence of inclusion or of deployment readiness.
§3The protocol commitment#
Protocol rules are pinned in a compiled protocol manifest: domain strings, gas prices, action codes, activation revisions and size limits. The manifest is encoded canonically, with each constant's name next to its value, and hashed with Keccak-256. That hash is written into the genesis header together with the chain ID. Timing and economic parameters, such as slot duration, epoch length, stake and slashing, are bound separately by each node's consensus-configuration commitment, and nodes with different values do not interoperate.
A node refuses a genesis whose commitment differs from the one it was built with. There is no migration between manifest revisions: a semantic change means a coordinated restart from a fresh genesis. The log lists every revision.
| Field | Value |
|---|---|
| Manifest revision | 28 |
| Protocol identifier | resilience/session-authorization/1 |
| Capability | resilience/tx-auth/2 |
| Hash function | Keccak-256 with original padding (not NIST SHA3-256) |
| Development genesis commitment | 0xcb4f7146ea76f23d2dbf1b5ba6087690f216a2be25e09270195efa27cbfffa8a |
| Development chain ID | 1337, replaced at a public genesis |
§4Cryptographic primitives#
| Use | Primitive |
|---|---|
| Hashing, state, signing domains | Keccak-256 (original padding), one literal domain label per construction |
| Account, root, validator and network keys | Ed25519 (RFC 8032), canonical encodings only |
| Session keys, optionally | P-256 (secp256r1) ECDSA, raw 64-byte r‖s signatures |
| Leader election and randomness | ECVRF-EDWARDS25519-SHA512-TAI (RFC 9381, suite 0x03) |
| Shielded transfers | Orchard: Halo 2 proofs on the Pallas/Vesta curve cycle, RedPallas signatures |
| Validator keystore | scrypt with AES-256-GCM |
§5Component map#
| Area | Responsibility | Where |
|---|---|---|
| Consensus | Proposals, votes, locks, leader election, finalized import | internal/consensus, internal/blockchain, crypto |
| Execution | State transition, EVM, authenticated trie, storage | internal/state, internal/vm, internal/db |
| Networking | libp2p gossip, sync, peer scoring, transaction pool | internal/p2p, internal/txpool |
| Authorization | Root, session, recovery and sponsorship rules | pkg/sessionauth |
| Privacy | Orchard bridge, wallet, native Rust library | pkg/shielded |
| Client boundary | JSON-RPC and the command-line client | internal/rpc, cmd/resilience-cli |
Sources: internal/blockchain/protocol_manifest.go, configs/genesis.json, architecture overview.
Cite this page
@misc{resilience-protocol,
title = {{Protocol overview}},
author = {{Resilience Network}},
year = {2026},
note = {Reference implementation c3acec4, protocol manifest r28},
url = {https://resiliencenetwork.xyz/protocol/}
}