Documentation ¶
Overview ¶
Package api implements the P2P API.
Index ¶
- Constants
- func AddrInfoToString(info peer.AddrInfo) []string
- func AddrInfosFromConsensusAddrs(addrs []string) ([]peer.AddrInfo, error)
- func PubKeyToPublicKey(pubKey libp2pCrypto.PubKey) (signature.PublicKey, error)
- func PublicKeyMapToPeerIDs(pks map[signature.PublicKey]struct{}) ([]core.PeerID, error)
- func PublicKeyToPeerID(pk signature.PublicKey) (core.PeerID, error)
- func SignerToPrivKey(signer signature.Signer) libp2pCrypto.PrivKey
- type CommitteeMessage
- type Handler
- type ImportanceKind
- type PeerManager
- type PeerRegistry
- type PeerTagger
- type SeedService
- type Service
- type Status
- type TopicKind
- type TxMessage
Constants ¶
const ( ImportantNodeCompute = 1 ImportantNodeKeyManager = 2 )
Variables ¶
This section is empty.
Functions ¶
func AddrInfoToString ¶
AddrInfoToString converts AddressInfo to a list of p2p string multiaddresses.
For example, an address info with ID 1234 and multiaddresses /ip4/127.0.0.1/tcp/8080 and /ip6/::1/tcp/8080 would be converted to a list ["/ip4/127.0.0.1/tcp/8080/p2p/1234", "/ip6/::1/tcp/8080/p2p/1234"].
func AddrInfosFromConsensusAddrs ¶
AddrInfosFromConsensusAddrs converts string consensus addresses to addr infos.
func PubKeyToPublicKey ¶
func PubKeyToPublicKey(pubKey libp2pCrypto.PubKey) (signature.PublicKey, error)
PubKeyToPublicKey converts a libp2pCrypto.PubKey to a PublicKey.
func PublicKeyMapToPeerIDs ¶
PublicKeyMapToPeerIDs converts a map of public keys to a list of peer identifiers.
func PublicKeyToPeerID ¶
PublicKeyToPeerID converts a public key to a peer identifier.
func SignerToPrivKey ¶
func SignerToPrivKey(signer signature.Signer) libp2pCrypto.PrivKey
SignerToPrivKey converts a Signer to a libp2pCrypto.PrivKey.
Types ¶
type CommitteeMessage ¶
type CommitteeMessage struct { // Epoch is the epoch this message belongs to. Epoch beacon.EpochTime `json:"epoch,omitempty"` // Proposal is a batch proposal. Proposal *commitment.Proposal `json:",omitempty"` }
CommitteeMessage is a message published to nodes via gossipsub on the committee topic.
type Handler ¶
type Handler interface { // DecodeMessage decodes the given incoming message. DecodeMessage(msg []byte) (interface{}, error) // AuthorizeMessage handles authorizing an incoming message. // // The message handler will be re-invoked on error with a periodic backoff unless errors are // wrapped via `p2pError.Permanent`. AuthorizeMessage(ctx context.Context, peerID signature.PublicKey, msg interface{}) error // HandleMessage handles an incoming message from a peer. // // The message handler will be re-invoked on error with a periodic backoff unless errors are // wrapped via `p2pError.Permanent`. HandleMessage(ctx context.Context, peerID signature.PublicKey, msg interface{}, isOwn bool) error }
Handler is a handler for P2P messages.
type ImportanceKind ¶
type ImportanceKind uint8
ImportanceKind is the node importance kind.
func (ImportanceKind) Tag ¶
func (ik ImportanceKind) Tag(runtimeID common.Namespace) string
Tag returns the connection manager tag associated with the given importance kind.
func (ImportanceKind) TagValue ¶
func (ik ImportanceKind) TagValue() int
TagValue returns the connection manager tag value associated with the given importance kind.
type PeerManager ¶
type PeerManager interface { // PeerRegistry returns the peer registry. PeerRegistry() PeerRegistry // PeerTagger returns the peer tagger. PeerTagger() PeerTagger }
PeerManager is an interface for managing peers in the P2P network.
type PeerRegistry ¶
type PeerRegistry interface { // Initialized returns a channel that will be closed once the first node refresh event from // the registry is received. Initialized() <-chan struct{} // NumPeers returns the number of registered peers. NumPeers() int }
PeerRegistry is an interface for accessing peer information from the registry.
type PeerTagger ¶
type PeerTagger interface { // SetPeerImportance configures peer importance for the given list of peers. // // This makes it less likely for those peers to be pruned. SetPeerImportance(kind ImportanceKind, runtimeID common.Namespace, pids []peer.ID) }
PeerTagger is an interface for tagging important peers.
type SeedService ¶
type SeedService interface { service.BackgroundService // Addresses returns the listen addresses of the host. Addresses() []string // Peers returns a list of peers located in the peer store. Peers() []string }
SeedService is a P2P node service interface.
type Service ¶
type Service interface { service.BackgroundService // GetStatus returns the P2P status of the node. GetStatus() *Status // Addresses returns the P2P addresses of the node. Addresses() []node.Address // Peers returns a list of connected P2P peers for the given runtime. Peers(runtimeID common.Namespace) []string // Publish publishes the given message to the given topic. Publish(ctx context.Context, topic string, msg interface{}) // RegisterHandler registers a message handler for the specified runtime and topic kind. RegisterHandler(topic string, handler Handler) // BlockPeer blocks a specific peer from being used by the local node. BlockPeer(peerID core.PeerID) // Host returns the P2P host. Host() core.Host // PeerManager returns the P2P peer manager. PeerManager() PeerManager // RegisterProtocol starts tracking and managing peers that support the given protocol. RegisterProtocol(p core.ProtocolID, min int, total int) // RegisterProtocolServer registers a protocol server for the given protocol. RegisterProtocolServer(srv rpc.Server) // GetMinRepublishInterval returns the minimum republish interval that needs to be respected by // the caller when publishing the same message. If Publish is called for the same message more // quickly, the message may be dropped and not published. GetMinRepublishInterval() time.Duration }
Service is a P2P node service interface.
type Status ¶
type Status struct { // PubKey is the public key used for P2P communication. PubKey signature.PublicKey `json:"pub_key"` // PeerID is the peer ID derived by hashing peer's public key. PeerID peer.ID `json:"peer_id"` // Addresses is a list of configured P2P addresses used when registering the node. Addresses []node.Address `json:"addresses"` // NumPeers is the number of connected peers. NumPeers int `json:"num_peers"` // NumConnections is the number of peer connections. NumConnections int `json:"num_connections"` // Protocols is a set of registered protocols together with the number of connected peers. Protocols map[core.ProtocolID]int `json:"protocols"` // Topics is a set of registered topics together with the number of connected peers. Topics map[string]int `json:"topics"` }
Status is the P2P status of a node.