Expand description
RESS protocol for stateless Ethereum nodes.
Enables stateless nodes to fetch execution witnesses, bytecode, and block data from stateful peers for minimal on-disk state with full execution capability.
§Node Types
- Stateless: Minimal state, requests data on-demand
- Stateful: Full Ethereum nodes providing state data
Valid connections: Stateless ↔ Stateless ✅, Stateless ↔ Stateful ✅, Stateful ↔ Stateful ❌
§Messages
NodeType (0x00): HandshakeGetHeaders/Headers (0x01/0x02): Block headersGetBlockBodies/BlockBodies (0x03/0x04): Block bodiesGetBytecode/Bytecode (0x05/0x06): Contract bytecodeGetWitness/Witness (0x07/0x08): Execution witnesses
§Flow
- Exchange
NodeTypefor compatibility - Download ancestor blocks via headers/bodies
- For new payloads: request witness → get missing bytecode → execute
Protocol version: ress/1
Modules§
- test_
utils test-utils - Miscellaneous test utilities.
Structs§
- GetHeaders
- A request for a peer to return block headers starting at the requested block.
The peer must return at most
limitheaders. The headers will be returned starting atstart_hash, traversing towards the genesis block. - Protocol
State - Protocol state is an helper struct to store the protocol events.
- Ress
Protocol Connection - The connection handler for the custom
RLPxprotocol. - Ress
Protocol Handler - The protocol handler takes care of incoming and outgoing connections.
- Ress
Protocol Message - An Ress protocol message, containing a message ID and payload.
Enums§
- Node
Type - Node type variant.
- Protocol
Event - The events that can be emitted by our custom protocol.
- Ress
Message - Represents a message in the ress protocol.
- Ress
MessageID - Represents message IDs for
ressprotocol messages. - Ress
Peer Request - Ress peer request.
Traits§
- Ress
Protocol Provider - A provider trait for ress protocol.