Documentation ¶
Index ¶
- Constants
- Variables
- type LibP2PNetwork
- type OutputMessage
- type Peer
- func (p *Peer) Close() (res error)
- func (p *Peer) Configuration() *PeerConfiguration
- func (p *Peer) CreateStream(ctx context.Context, peerID peer.ID, protocolID string) (network.Stream, error)
- func (p *Peer) GetRandomPeerID() peer.ID
- func (p *Peer) ID() peer.ID
- func (p *Peer) MultiAddresses() []ma.Multiaddr
- func (p *Peer) Network() network.Network
- func (p *Peer) PublicKey() (crypto.PubKey, error)
- func (p *Peer) RegisterProtocolHandler(protocolID string, handler network.StreamHandler)
- func (p *Peer) RemoveProtocolHandler(protocolID string)
- func (p *Peer) Validators() []peer.ID
- type PeerConfiguration
- type PeerInfo
- type PeerKeyPair
- type ProtobufReader
- type ProtobufWriter
- type ReceiveProtocol
- type ReceivedMessage
- type SendProtocol
- type TypeFunc
- type ValidatorNetOptions
Constants ¶
const ( ErrStringInvalidPrivateKey = "invalid private key" ErrStringInvalidPublicKey = "invalid public key" )
const ( ProtocolBlockProposal = "/ab/block-proposal/0.0.1" ProtocolUnicityCertificates = "/ab/certificates/0.0.1" ProtocolBlockCertification = "/ab/block-certification/0.0.1" ProtocolInputForward = "/ab/input-forward/0.0.1" ProtocolLedgerReplicationReq = "/ab/replication-req/0.0.1" ProtocolLedgerReplicationResp = "/ab/replication-resp/0.0.1" ProtocolHandshake = "/ab/handshake/0.0.1" ErrStrPeerIsNil = "peer is nil" ErrStrProtocolIDEmpty = "protocol ID is empty" ErrStrOutputChIsNil = "output channel is nil" ErrStrTypeFuncIsNil = "type func is nil" )
Variables ¶
var DefaultValidatorNetOptions = ValidatorNetOptions{ ResponseChannelCapacity: 1000, ForwarderTimeout: 300 * time.Millisecond, BlockCertificationTimeout: 300 * time.Millisecond, BlockProposalTimeout: 300 * time.Millisecond, LedgerReplicationRequestTimeout: 300 * time.Millisecond, LedgerReplicationResponseTimeout: 300 * time.Millisecond, HandshakeTimeout: 300 * time.Millisecond, }
var ErrNotProtoMessage = errors.New("input isn't protobuf message")
var (
ErrPeerConfigurationIsNil = errors.New("peer configuration is nil")
)
Functions ¶
This section is empty.
Types ¶
type LibP2PNetwork ¶
type LibP2PNetwork struct { ReceivedMsgCh chan ReceivedMessage // messages from LibP2PNetwork to other components. // contains filtered or unexported fields }
func NewLibP2PNetwork ¶
func NewLibP2PNetwork(self *Peer, capacity uint) (*LibP2PNetwork, error)
NewLibP2PNetwork creates a new libP2P network without protocols.
func NewLibP2PValidatorNetwork ¶
func NewLibP2PValidatorNetwork(self *Peer, opts ValidatorNetOptions) (*LibP2PNetwork, error)
NewLibP2PValidatorNetwork creates a new libp2p for a validator.
func (*LibP2PNetwork) Close ¶
func (n *LibP2PNetwork) Close()
func (*LibP2PNetwork) ReceivedChannel ¶
func (n *LibP2PNetwork) ReceivedChannel() <-chan ReceivedMessage
func (*LibP2PNetwork) Send ¶
func (n *LibP2PNetwork) Send(out OutputMessage, receivers []peer.ID) error
type OutputMessage ¶
type OutputMessage struct { Protocol string // protocol to use to send the message Message proto.Message // message to send }
OutputMessage represents a message that will be sent to other nodes.
type Peer ¶
type Peer struct {
// contains filtered or unexported fields
}
Peer represents a single node in p2p network. It is a wrapper around the libp2p host.Host.
func NewPeer ¶
func NewPeer(conf *PeerConfiguration) (*Peer, error)
NewPeer constructs a new peer node with given configuration. If no peer key is provided, it generates a random Secp256k1 key-pair and derives a new identity from it. If no transport and listen addresses are provided, the node listens to the multiaddresses "/ip4/0.0.0.0/tcp/0".
func (*Peer) Configuration ¶
func (p *Peer) Configuration() *PeerConfiguration
Configuration returns peer configuration
func (*Peer) CreateStream ¶
func (p *Peer) CreateStream(ctx context.Context, peerID peer.ID, protocolID string) (network.Stream, error)
CreateStream opens a new stream to given peer p, and writes a libp2p protocol header with given ProtocolID.
func (*Peer) GetRandomPeerID ¶
GetRandomPeerID returns a random peer.ID from the peerstore.
func (*Peer) MultiAddresses ¶
MultiAddresses the address associated with this Peer.
func (*Peer) RegisterProtocolHandler ¶
func (p *Peer) RegisterProtocolHandler(protocolID string, handler network.StreamHandler)
RegisterProtocolHandler sets the protocol stream handler for given protocol.
func (*Peer) RemoveProtocolHandler ¶
RemoveProtocolHandler removes the given protocol handler.
func (*Peer) Validators ¶
type PeerConfiguration ¶
type PeerConfiguration struct { Address string // address to listen for incoming connections. Uses libp2p multiaddress format. KeyPair *PeerKeyPair // keypair for the peer. PersistentPeers []*PeerInfo // a list of known peers (in case of partition node this list must contain all validators). }
PeerConfiguration includes single peer configuration values.
type PeerInfo ¶
type PeerInfo struct { Address string // address of the peer PublicKey []byte // public key of the peer }
PeerInfo contains a public key and address.
type PeerKeyPair ¶
PeerKeyPair contains node's public and private key.
type ProtobufReader ¶
type ProtobufReader struct {
// contains filtered or unexported fields
}
func NewProtoBufReader ¶
func NewProtoBufReader(r io.Reader) *ProtobufReader
func (*ProtobufReader) Close ¶
func (pr *ProtobufReader) Close() error
type ProtobufWriter ¶
type ProtobufWriter struct {
// contains filtered or unexported fields
}
func NewProtoBufWriter ¶
func NewProtoBufWriter(w io.Writer) *ProtobufWriter
func (*ProtobufWriter) Close ¶
func (pw *ProtobufWriter) Close() error
func (*ProtobufWriter) Write ¶
func (pw *ProtobufWriter) Write(msg interface{}) (err error)
type ReceiveProtocol ¶
ReceiveProtocol is used to receive protobuf messages from other peers in the network.
func NewReceiverProtocol ¶
func NewReceiverProtocol[T proto.Message](self *Peer, protocolID string, outCh chan<- ReceivedMessage, typeFunc TypeFunc[T]) (*ReceiveProtocol[T], error)
func (*ReceiveProtocol[T]) Close ¶
func (p *ReceiveProtocol[T]) Close()
func (*ReceiveProtocol[T]) HandleStream ¶
func (p *ReceiveProtocol[T]) HandleStream(s libp2pNetwork.Stream)
func (*ReceiveProtocol[T]) ID ¶
func (p *ReceiveProtocol[T]) ID() string
type ReceivedMessage ¶
ReceivedMessage represents a message received over the network.
type SendProtocol ¶
type SendProtocol struct {
// contains filtered or unexported fields
}
SendProtocol is used to send protobuf messages to other peers in the network.
func NewSendProtocol ¶
func (*SendProtocol) ID ¶
func (p *SendProtocol) ID() string