Crate reth_eth_wire

Source
Expand description

Implementation of the eth wire protocol.

§Feature Flags

  • serde (default): Enable serde support
  • arbitrary: Adds proptest and arbitrary support for wire types.

Modules§

  • Implements the GetBlockHeaders, GetBlockBodies, BlockHeaders, and BlockBodies message types.
  • Types for broadcasting new data.
  • All capability related types
  • RLPx disconnect reason sent to/received from peer
  • Error types for stream variants
  • Header types.
  • Implements Ethereum wire protocol for versions 66, 67, and 68. Defines structs/enums for messages, request-response pairs, and broadcasts. Handles compatibility with EthVersion.
  • Rlpx protocol multiplexer and satellite stream
  • Abstraction over primitive types in network messages.
  • A Protocol defines a P2P subprotocol in a RLPx connection
  • Implements the GetReceipts and Receipts message types.
  • Implements the GetNodeData and NodeData message types.
  • Implements the GetPooledTransactions and PooledTransactions message types.
  • Support for representing the version of the eth

Structs§

  • The response to GetBlockBodies, containing the block bodies that the peer knows about if any were found.
  • A block hash and a block number.
  • The response to GetBlockHeaders, containing headers if any headers were found.
  • Represents all capabilities of a node.
  • A message indicating a supported capability and capability version.
  • Network primitive types used by Ethereum networks.
  • An EthStream wraps over any Stream that yields bytes and makes it compatible with eth-networking protocol messages, which get RLP encoded/decoded.
  • A request for a peer to return block bodies for the given block hashes.
  • A request for a peer to return block headers starting at the requested block. The peer must return at most limit headers. If the reverse field is true, the headers will be returned starting at start_block, traversing towards the genesis block. Otherwise, headers will be returned starting at start_block, traversing towards the latest block.
  • A request for state tree nodes corresponding to the given hashes. This message was removed in eth/67, only clients running eth/66 or earlier will respond to this message.
  • A list of transaction hashes that the peer would like transaction bodies for.
  • A request for transaction receipts from the given block hashes.
  • Raw rlpx protocol message used in the p2p handshake, containing information about the supported RLPx protocol version and capabilities.
  • This is a superset of HelloMessage that provides additional protocol Protocol information about the number of messages used by each capability in order to do proper message ID multiplexing.
  • A new block with the current total difficulty, which includes the difficulty of the returned block.
  • This informs peers of new blocks that have appeared on the network.
  • This informs peers of transaction hashes for transactions that have appeared on the network, but have not been included in a block.
  • Same as NewPooledTransactionHashes66 but extends that beside the transaction hashes, the node sends the transaction types and their sizes (as defined in EIP-2718) as well.
  • The response to GetNodeData, containing the state tree nodes or contract bytecode corresponding to the requested hashes.
  • A P2PStream wraps over any Stream that yields bytes and makes it compatible with p2p protocol messages.
  • Data that has passed an initial validation pass that is not specific to any mempool message type.
  • The response to GetPooledTransactions, containing the transaction bodies associated with the requested hashes.
  • An eth protocol message, containing a message ID and payload.
  • The response to GetReceipts, containing receipt lists that correspond to each block requested.
  • Hashes to request from a peer.
  • Same as Transactions but this is intended as egress message send from local to many peers.
  • The status message is used in the eth protocol handshake to ensure that peers are on the same network and are following the same fork.
  • Builder for Status messages.
  • This informs peers of transactions that have appeared on the network and are not yet included in a block.
  • An un-authenticated EthStream. This is consumed and returns a EthStream after the Status handshake is completed.
  • An un-authenticated P2PStream. This is consumed and returns a P2PStream after the Hello handshake is completed.
  • This represents an unknown disconnect reason with the given code.
  • Partially validated data from an announcement or a PooledTransactions response.

Enums§

Constants§

Traits§

  • This trait is meant to allow higher level protocols like eth to disconnect from a peer, using lower-level disconnect functions (such as those that exist in the p2p protocol) if the underlying stream supports it.
  • Validation pass that checks for unique transaction hashes.
  • Gracefully disconnects the connection by sending a disconnect message and stop reading new messages.
  • Interface for handling mempool message data. Used in various filters in pipelines in TransactionsManager and in queries to TransactionPool.
  • Extension of HandleMempoolData interface, for mempool messages that are versioned.
  • This is a helper trait for use in bounds, where some of the NetworkPrimitives associated types must be the same as the [NodePrimitives] associated types.
  • Abstraction over primitive types which might appear in network messages. See crate::EthMessage for more context.

Type Aliases§