Documentation
¶
Index ¶
- func Dial(n *enode.Node, opts DialOpts) (*rlpxConn, error)
- func Listen(ln *enode.LocalNode) (*net.UDPConn, error)
- func NewEthProtocol(version uint, opts EthProtocolOptions) ethp2p.Protocol
- func ParseBootnodes(bootnodes string) ([]*enode.Node, error)
- func ParseNode(source string) (*enode.Node, error)
- func ParsePrivateKey(file string, key string) (*ecdsa.PrivateKey, error)
- func ReadNodeSet(file string) ([]*enode.Node, error)
- func WriteDNSTreeNodes(file string, tree *dnsdisc.Tree) error
- func WriteNodeSet(file string, ns NodeSet, writeErrors bool) error
- func WritePeers(file string, urls []string) error
- func WriteURLs(file string, ns NodeSet) error
- type AccountRange
- type BlockBodies
- type BlockHashEntry
- type BlockHeaders
- type ByteCodes
- type Cache
- type Conns
- type DialOpts
- type Direction
- type Disconnect
- type Disconnects
- type Error
- type EthProtocolOptions
- type GetAccountRange
- type GetBlockBodies
- type GetBlockHeaders
- type GetByteCodes
- type GetPooledTransactions
- type GetStorageRanges
- type GetTrieNodes
- type GetWitnessPacket
- type GetWitnessRequest
- type HeadBlock
- type Hello
- type Message
- type MessageCount
- type NewBlock
- type NewBlockHashes
- type NewPooledTransactionHashes
- type NewPooledTransactionHashes66
- type NewWitnessHashesPacket
- type NewWitnessPacket
- type NodeJSON
- type NodeSet
- type Ping
- type Pong
- type PooledTransactions
- type Status
- type StorageRanges
- type Transactions
- type TrieNodes
- type WitnessPacketRLPPacket
- type WitnessPacketResponse
- type WitnessPageRequest
- type WitnessPageResponse
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Dial ¶
Dial attempts to Dial the given node and perform a handshake, returning the created Conn if successful.
func NewEthProtocol ¶
func NewEthProtocol(version uint, opts EthProtocolOptions) ethp2p.Protocol
NewEthProtocol creates the new eth protocol. This will handle writing the status exchange, message handling, and writing blocks/txs to the database.
func ParseBootnodes ¶
ParseBootnodes parses the bootnodes string and returns a node slice.
func ParsePrivateKey ¶ added in v0.1.90
func ParsePrivateKey(file string, key string) (*ecdsa.PrivateKey, error)
ParsePrivateKey loads a private key from a file path or hex string. If file is provided, it attempts to load from the file path first. If the file doesn't exist, it generates a new key and saves it to the file. If key is provided instead, it parses the hex-encoded private key string. If neither file nor key is provided, it generates and returns a new private key.
func ReadNodeSet ¶
ReadNodeSet parses a list of discovery node URLs loaded from a JSON file.
func WriteDNSTreeNodes ¶ added in v0.1.61
func WritePeers ¶
Types ¶
type AccountRange ¶
type AccountRange snap.AccountRangePacket
func (AccountRange) Code ¶
func (msg AccountRange) Code() int
func (AccountRange) ReqID ¶
func (msg AccountRange) ReqID() uint64
type BlockBodies ¶
type BlockBodies eth.BlockBodiesPacket
BlockBodies is the network packet for block content distribution.
func (BlockBodies) Code ¶
func (msg BlockBodies) Code() int
func (BlockBodies) ReqID ¶
func (msg BlockBodies) ReqID() uint64
type BlockHashEntry ¶ added in v0.1.63
type BlockHashEntry struct {
// contains filtered or unexported fields
}
type BlockHeaders ¶
type BlockHeaders eth.BlockHeadersPacket
func (BlockHeaders) Code ¶
func (msg BlockHeaders) Code() int
func (BlockHeaders) ReqID ¶
func (msg BlockHeaders) ReqID() uint64
type ByteCodes ¶
type ByteCodes snap.ByteCodesPacket
type Cache ¶ added in v0.1.93
type Cache[K comparable, V any] struct { // contains filtered or unexported fields }
Cache is a thread-safe LRU cache with optional TTL-based expiration.
func NewCache ¶ added in v0.1.93
NewCache creates a new cache with the given max size and optional TTL. If maxSize <= 0, the cache has no size limit. If ttl is 0, entries never expire based on time.
func (*Cache[K, V]) Add ¶ added in v0.1.93
func (c *Cache[K, V]) Add(key K, value V)
Add adds or updates a value in the cache.
func (*Cache[K, V]) Contains ¶ added in v0.1.93
Contains checks if a key exists in the cache and is not expired. Uses a read lock and doesn't update LRU ordering.
func (*Cache[K, V]) Get ¶ added in v0.1.93
Get retrieves a value from the cache and updates LRU ordering.
func (*Cache[K, V]) Keys ¶ added in v0.1.93
func (c *Cache[K, V]) Keys() []K
Keys returns all keys in the cache.
type Conns ¶ added in v0.1.89
type Conns struct {
// contains filtered or unexported fields
}
Conns manages a collection of active peer connections for transaction broadcasting.
func (*Conns) Add ¶ added in v0.1.89
func (c *Conns) Add(cn *conn)
Add adds a connection to the manager.
func (*Conns) BroadcastTx ¶ added in v0.1.89
func (c *Conns) BroadcastTx(tx *types.Transaction) int
BroadcastTx broadcasts a single transaction to all connected peers. Returns the number of peers the transaction was successfully sent to.
func (*Conns) BroadcastTxs ¶ added in v0.1.89
func (c *Conns) BroadcastTxs(txs types.Transactions) int
BroadcastTxs broadcasts multiple transactions to all connected peers. Returns the number of peers the transactions were successfully sent to.
func (*Conns) GetPeerConnectedAt ¶ added in v0.1.91
GetPeerConnectedAt returns the connection time for a peer by their ID. Returns zero time if the peer is not found.
type DialOpts ¶ added in v0.1.90
func NewDialOpts ¶ added in v0.1.90
func NewDialOpts() DialOpts
type Direction ¶ added in v0.1.91
type Direction string
Direction represents the direction of a message (sent or received).
type Disconnect ¶
type Disconnect struct {
Reason p2p.DiscReason
}
Disconnect is the RLP structure for a disconnect message.
func (Disconnect) Code ¶
func (msg Disconnect) Code() int
func (Disconnect) ReqID ¶
func (msg Disconnect) ReqID() uint64
type Disconnects ¶
type Disconnects []p2p.DiscReason
Disconnects is the RLP structure for disconnect messages.
func (Disconnects) Code ¶
func (msg Disconnects) Code() int
func (Disconnects) ReqID ¶
func (msg Disconnects) ReqID() uint64
type EthProtocolOptions ¶
type EthProtocolOptions struct {
Context context.Context
Database database.Database
GenesisHash common.Hash
RPC string
SensorID string
NetworkID uint64
Conns *Conns
ForkID forkid.ID
MsgCounter *prometheus.CounterVec
// Head keeps track of the current head block of the chain. This is required
// when doing the status exchange.
Head *HeadBlock
HeadMutex *sync.RWMutex
// Requests cache configuration
MaxRequests int
RequestsCacheTTL time.Duration
}
EthProtocolOptions is the options used when creating a new eth protocol.
type GetAccountRange ¶
type GetAccountRange snap.GetAccountRangePacket
GetAccountRange represents an account range query.
func (GetAccountRange) Code ¶
func (msg GetAccountRange) Code() int
func (GetAccountRange) ReqID ¶
func (msg GetAccountRange) ReqID() uint64
type GetBlockBodies ¶
type GetBlockBodies eth.GetBlockBodiesPacket
GetBlockBodies represents a GetBlockBodies request
func (GetBlockBodies) Code ¶
func (msg GetBlockBodies) Code() int
func (GetBlockBodies) ReqID ¶
func (msg GetBlockBodies) ReqID() uint64
type GetBlockHeaders ¶
type GetBlockHeaders eth.GetBlockHeadersPacket
GetBlockHeaders represents a block header query.
func (GetBlockHeaders) Code ¶
func (msg GetBlockHeaders) Code() int
func (GetBlockHeaders) ReqID ¶
func (msg GetBlockHeaders) ReqID() uint64
type GetByteCodes ¶
type GetByteCodes snap.GetByteCodesPacket
func (GetByteCodes) Code ¶
func (msg GetByteCodes) Code() int
func (GetByteCodes) ReqID ¶
func (msg GetByteCodes) ReqID() uint64
type GetPooledTransactions ¶
type GetPooledTransactions eth.GetPooledTransactionsPacket
func (GetPooledTransactions) Code ¶
func (msg GetPooledTransactions) Code() int
func (GetPooledTransactions) ReqID ¶
func (msg GetPooledTransactions) ReqID() uint64
type GetStorageRanges ¶
type GetStorageRanges snap.GetStorageRangesPacket
func (GetStorageRanges) Code ¶
func (msg GetStorageRanges) Code() int
func (GetStorageRanges) ReqID ¶
func (msg GetStorageRanges) ReqID() uint64
type GetTrieNodes ¶
type GetTrieNodes snap.GetTrieNodesPacket
func (GetTrieNodes) Code ¶
func (msg GetTrieNodes) Code() int
func (GetTrieNodes) ReqID ¶
func (msg GetTrieNodes) ReqID() uint64
type GetWitnessPacket ¶ added in v0.1.90
type GetWitnessPacket struct {
RequestId uint64
*GetWitnessRequest
}
GetWitnessPacket represents a witness query with request ID wrapping.
func (GetWitnessPacket) Code ¶ added in v0.1.90
func (msg GetWitnessPacket) Code() int
func (GetWitnessPacket) ReqID ¶ added in v0.1.90
func (msg GetWitnessPacket) ReqID() uint64
type GetWitnessRequest ¶ added in v0.1.90
type GetWitnessRequest struct {
WitnessPages []WitnessPageRequest // Request by list of witness pages
}
GetWitnessRequest represents a list of witnesses query by witness pages.
type Hello ¶
type Hello struct {
Version uint64
Name string
Caps []p2p.Cap
ListenPort uint64
ID []byte // secp256k1 public key
// Ignore additional fields (for forward compatibility).
Rest []rlp.RawValue `rlp:"tail"`
}
Hello is the RLP structure of the protocol handshake.
type MessageCount ¶
type MessageCount struct {
BlockHeaders int64 `json:"block_headers,omitempty"`
BlockBodies int64 `json:"block_bodies,omitempty"`
Blocks int64 `json:"blocks,omitempty"`
BlockHashes int64 `json:"block_hashes,omitempty"`
BlockHeaderRequests int64 `json:"block_header_requests,omitempty"`
BlockBodiesRequests int64 `json:"block_bodies_requests,omitempty"`
Transactions int64 `json:"transactions,omitempty"`
TransactionHashes int64 `json:"transaction_hashes,omitempty"`
TransactionRequests int64 `json:"transaction_requests,omitempty"`
Pings int64 `json:"pings,omitempty"`
Errors int64 `json:"errors,omitempty"`
Disconnects int64 `json:"disconnects,omitempty"`
NewWitness int64 `json:"new_witness,omitempty"`
NewWitnessHashes int64 `json:"new_witness_hashes,omitempty"`
GetWitnessRequest int64 `json:"get_witness_request,omitempty"`
Witness int64 `json:"witness,omitempty"`
}
MessageCount is used to help the outer goroutine to receive summary of the number and type of messages that were sent. This is used for distributed logging. It can be used to count the different types of messages received across all peer connections to provide a summary.
func (*MessageCount) Clear ¶
func (count *MessageCount) Clear()
Clear clears all of the counts from the message counter.
func (*MessageCount) IsEmpty ¶
func (c *MessageCount) IsEmpty() bool
IsEmpty checks whether the sum of all the counts is empty. Make sure to call Load before this method to get an accurate count.
func (*MessageCount) Load ¶
func (count *MessageCount) Load() MessageCount
Load takes a snapshot of all the counts in a thread-safe manner. Make sure you call this and read from the returned object.
type NewBlock ¶
type NewBlock eth.NewBlockPacket
NewBlock is the network packet for the block propagation message.
type NewBlockHashes ¶
type NewBlockHashes eth.NewBlockHashesPacket
NewBlockHashes is the network packet for the block announcements.
func (NewBlockHashes) Code ¶
func (msg NewBlockHashes) Code() int
func (NewBlockHashes) ReqID ¶
func (msg NewBlockHashes) ReqID() uint64
type NewPooledTransactionHashes ¶
NewPooledTransactionHashes is the network packet for the tx hash propagation message.
func (NewPooledTransactionHashes) Code ¶
func (msg NewPooledTransactionHashes) Code() int
func (NewPooledTransactionHashes) ReqID ¶
func (msg NewPooledTransactionHashes) ReqID() uint64
type NewPooledTransactionHashes66 ¶
NewPooledTransactionHashes66 is the network packet for the tx hash propagation message.
func (NewPooledTransactionHashes66) Code ¶
func (msg NewPooledTransactionHashes66) Code() int
func (NewPooledTransactionHashes66) ReqID ¶
func (msg NewPooledTransactionHashes66) ReqID() uint64
type NewWitnessHashesPacket ¶ added in v0.1.90
func (NewWitnessHashesPacket) Code ¶ added in v0.1.90
func (msg NewWitnessHashesPacket) Code() int
func (NewWitnessHashesPacket) ReqID ¶ added in v0.1.90
func (msg NewWitnessHashesPacket) ReqID() uint64
type NewWitnessPacket ¶ added in v0.1.90
func (NewWitnessPacket) Code ¶ added in v0.1.90
func (msg NewWitnessPacket) Code() int
func (NewWitnessPacket) ReqID ¶ added in v0.1.90
func (msg NewWitnessPacket) ReqID() uint64
type PooledTransactions ¶
type PooledTransactions eth.PooledTransactionsPacket
func (PooledTransactions) Code ¶
func (msg PooledTransactions) Code() int
func (PooledTransactions) ReqID ¶
func (msg PooledTransactions) ReqID() uint64
type Status ¶
type Status eth.StatusPacket
Status is the network packet for the status message for eth/64 and later.
type StorageRanges ¶
type StorageRanges snap.StorageRangesPacket
func (StorageRanges) Code ¶
func (msg StorageRanges) Code() int
func (StorageRanges) ReqID ¶
func (msg StorageRanges) ReqID() uint64
type Transactions ¶
type Transactions eth.TransactionsPacket
func (Transactions) Code ¶
func (msg Transactions) Code() int
func (Transactions) ReqID ¶
func (msg Transactions) ReqID() uint64
type TrieNodes ¶
type TrieNodes snap.TrieNodesPacket
type WitnessPacketRLPPacket ¶ added in v0.1.90
type WitnessPacketRLPPacket struct {
RequestId uint64
WitnessPacketResponse
}
WitnessPacketRLPPacket represents a witness response with request ID wrapping.
func (WitnessPacketRLPPacket) Code ¶ added in v0.1.90
func (msg WitnessPacketRLPPacket) Code() int
func (WitnessPacketRLPPacket) ReqID ¶ added in v0.1.90
func (msg WitnessPacketRLPPacket) ReqID() uint64
type WitnessPacketResponse ¶ added in v0.1.90
type WitnessPacketResponse []WitnessPageResponse
WitnessPacketResponse represents a witness response, to use when we already have the witness rlp encoded.