network

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2023 License: AGPL-3.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
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"
)

Variables

View Source
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,
}
View Source
var (
	ErrPeerConfigurationIsNil = errors.New("peer configuration is nil")
)

Functions

func NodeIDFromPublicKeyBytes added in v0.2.0

func NodeIDFromPublicKeyBytes(pubKey []byte) (peer.ID, error)

Types

type LibP2PNetwork

type LibP2PNetwork struct {
	// contains filtered or unexported fields
}

LibP2PNetwork implements "alphabill network" using libp2p.

Zero value is not useable, use one of the constructors to create network!

func NewLibP2PRootChainNetwork

func NewLibP2PRootChainNetwork(self *Peer, capacity uint, sendCertificateTimeout time.Duration) (*LibP2PNetwork, error)

func NewLibP2PValidatorNetwork

func NewLibP2PValidatorNetwork(self *Peer, opts ValidatorNetOptions) (*LibP2PNetwork, error)

NewLibP2PValidatorNetwork creates a new libp2p for a validator.

func (*LibP2PNetwork) ReceivedChannel

func (n *LibP2PNetwork) ReceivedChannel() <-chan any

func (*LibP2PNetwork) Send

func (n *LibP2PNetwork) Send(ctx context.Context, msg any, receivers ...peer.ID) error

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(ctx context.Context, 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) BootstrapNodes added in v0.2.0

func (p *Peer) BootstrapNodes() []peer.AddrInfo

func (*Peer) Close

func (p *Peer) Close() error

Close shuts down the libp2p host and related services.

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) FilterValidators added in v0.2.0

func (p *Peer) FilterValidators(exclude peer.ID) []peer.ID

func (*Peer) GetRandomPeerID

func (p *Peer) GetRandomPeerID() peer.ID

GetRandomPeerID returns a random peer.ID from the peerstore.

func (*Peer) ID

func (p *Peer) ID() peer.ID

ID returns the identifier associated with this Peer.

func (*Peer) MultiAddresses

func (p *Peer) MultiAddresses() []ma.Multiaddr

MultiAddresses the address associated with this Peer.

func (*Peer) Network

func (p *Peer) Network() network.Network

Network returns the Network of the Peer.

func (*Peer) PublicKey

func (p *Peer) PublicKey() (crypto.PubKey, error)

PublicKey returns the public key of the 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

func (p *Peer) RemoveProtocolHandler(protocolID string)

RemoveProtocolHandler removes the given protocol handler.

func (*Peer) String added in v0.2.0

func (p *Peer) String() string

String returns short representation of node id

func (*Peer) Validators

func (p *Peer) Validators() []peer.ID

type PeerConfiguration

type PeerConfiguration struct {
	Address        string          // address to listen for incoming connections. Uses libp2p multiaddress format.
	KeyPair        *PeerKeyPair    // keypair for the peer.
	BootstrapPeers []peer.AddrInfo // a list of seed peers to connect to.
	Validators     []peer.ID       // a list of known peers (in case of partition node this list must contain all validators).
}

PeerConfiguration includes single peer configuration values.

type PeerKeyPair

type PeerKeyPair struct {
	PublicKey  []byte
	PrivateKey []byte
}

PeerKeyPair contains node's public and private key.

type ValidatorNetOptions

type ValidatorNetOptions struct {
	// How many messages will be buffered (ReceivedChannel) in case of slow consumer.
	// Once buffer is full messages will be dropped (ie not processed)
	// until consumer catches up.
	ResponseChannelCapacity uint

	ForwarderTimeout                 time.Duration
	BlockCertificationTimeout        time.Duration
	BlockProposalTimeout             time.Duration
	LedgerReplicationRequestTimeout  time.Duration
	LedgerReplicationResponseTimeout time.Duration
	HandshakeTimeout                 time.Duration
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL