Documentation
¶
Index ¶
- Constants
- type ChanMsg
- type Client
- type Peer
- func (me *Peer) AddNeighbor(idForNetwork crypto.Hash, addr string) (*Peer, error)
- func (me *Peer) ConfirmSnapshotForPeer(idForNetwork, snap crypto.Hash)
- func (me *Peer) ListenNeighbors() error
- func (me *Peer) Neighbors() []*Peer
- func (me *Peer) PingNeighbor(addr string) error
- func (me *Peer) SendCommitmentsMessage(idForNetwork crypto.Hash, commitments []*crypto.Key) error
- func (me *Peer) SendFullChallengeMessage(idForNetwork crypto.Hash, s *common.Snapshot, ...) error
- func (me *Peer) SendSnapshotAnnouncementMessage(idForNetwork crypto.Hash, s *common.Snapshot, R crypto.Key) error
- func (me *Peer) SendSnapshotCommitmentMessage(idForNetwork crypto.Hash, snap crypto.Hash, R crypto.Key, wantTx bool) error
- func (me *Peer) SendSnapshotConfirmMessage(idForNetwork crypto.Hash, snap crypto.Hash) error
- func (me *Peer) SendSnapshotFinalizationMessage(idForNetwork crypto.Hash, s *common.Snapshot) error
- func (me *Peer) SendSnapshotResponseMessage(idForNetwork crypto.Hash, snap crypto.Hash, si *[32]byte) error
- func (me *Peer) SendTransactionChallengeMessage(idForNetwork crypto.Hash, snap crypto.Hash, cosi *crypto.CosiSignature, ...) error
- func (me *Peer) SendTransactionMessage(idForNetwork crypto.Hash, ver *common.VersionedTransaction) error
- func (me *Peer) SendTransactionRequestMessage(idForNetwork crypto.Hash, tx crypto.Hash) error
- func (me *Peer) Teardown()
- type PeerMessage
- type QuicClient
- type QuicTransport
- type SyncHandle
- type SyncPoint
- type Transport
- type TransportMessage
Constants ¶
View Source
const ( PeerMessageTypePing = 1 PeerMessageTypeAuthentication = 3 PeerMessageTypeGraph = 4 PeerMessageTypeSnapshotConfirm = 5 PeerMessageTypeTransactionRequest = 6 PeerMessageTypeTransaction = 7 PeerMessageTypeSnapshotAnnouncement = 10 // leader send snapshot to peer PeerMessageTypeSnapshotCommitment = 11 // peer generate ri based, send Ri to leader PeerMessageTypeTransactionChallenge = 12 // leader send bitmask Z and aggregated R to peer PeerMessageTypeSnapshotResponse = 13 // peer generate A from nodes and Z, send response si = ri + H(R || A || M)ai to leader PeerMessageTypeSnapshotFinalization = 14 // leader generate A, verify si B = ri B + H(R || A || M)ai B = Ri + H(R || A || M)Ai, then finalize based on threshold PeerMessageTypeCommitments = 15 PeerMessageTypeFullChallenge = 16 PeerMessageTypeBundle = 100 PeerMessageTypeGossipNeighbors = 101 MaxMessageBundleSize = 16 )
View Source
const ( MaxIncomingStreams = 128 HandshakeTimeout = 10 * time.Second IdleTimeout = 60 * time.Second ReadDeadline = 10 * time.Second WriteDeadline = 10 * time.Second )
View Source
const ( TransportMessageVersion = 2 TransportMessageMaxSize = 32 * 1024 * 1024 TransportMessageHeaderSize = 6 TransportCompressionGzip = 1 TransportCompressionZstd = 2 TransportCompressionMethod = TransportCompressionZstd )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Peer ¶
type Peer struct {
IdForNetwork crypto.Hash
Address string
// contains filtered or unexported fields
}
func (*Peer) AddNeighbor ¶
func (*Peer) ConfirmSnapshotForPeer ¶
func (*Peer) ListenNeighbors ¶
func (*Peer) PingNeighbor ¶ added in v0.7.25
func (*Peer) SendCommitmentsMessage ¶ added in v0.14.6
func (*Peer) SendFullChallengeMessage ¶ added in v0.14.6
func (*Peer) SendSnapshotAnnouncementMessage ¶ added in v0.5.0
func (*Peer) SendSnapshotCommitmentMessage ¶ added in v0.5.0
func (*Peer) SendSnapshotConfirmMessage ¶
func (*Peer) SendSnapshotFinalizationMessage ¶ added in v0.5.0
func (*Peer) SendSnapshotResponseMessage ¶ added in v0.5.0
func (*Peer) SendTransactionChallengeMessage ¶ added in v0.5.0
func (me *Peer) SendTransactionChallengeMessage(idForNetwork crypto.Hash, snap crypto.Hash, cosi *crypto.CosiSignature, tx *common.VersionedTransaction) error
func (*Peer) SendTransactionMessage ¶
func (*Peer) SendTransactionRequestMessage ¶
type PeerMessage ¶
type PeerMessage struct {
Type uint8
Snapshot *common.Snapshot
SnapshotHash crypto.Hash
Transaction *common.VersionedTransaction
TransactionHash crypto.Hash
Cosi crypto.CosiSignature
Commitment crypto.Key
Challenge crypto.Key
Response [32]byte
WantTx bool
Commitments []*crypto.Key
Graph []*SyncPoint
Data []byte
Neighbors []string
}
type QuicClient ¶
type QuicClient struct {
// contains filtered or unexported fields
}
func (*QuicClient) Close ¶
func (c *QuicClient) Close() error
func (*QuicClient) Receive ¶
func (c *QuicClient) Receive() (*TransportMessage, error)
func (*QuicClient) RemoteAddr ¶ added in v0.4.1
func (c *QuicClient) RemoteAddr() net.Addr
func (*QuicClient) Send ¶
func (c *QuicClient) Send(data []byte) error
type QuicTransport ¶
type QuicTransport struct {
// contains filtered or unexported fields
}
func NewQuicClient ¶
func NewQuicClient(addr string) (*QuicTransport, error)
func NewQuicServer ¶
func NewQuicServer(addr string) (*QuicTransport, error)
func (*QuicTransport) Close ¶ added in v0.8.3
func (t *QuicTransport) Close() error
func (*QuicTransport) Listen ¶
func (t *QuicTransport) Listen() error
type SyncHandle ¶
type SyncHandle interface {
GetCacheStore() *ristretto.Cache
BuildAuthenticationMessage() []byte
Authenticate(msg []byte) (crypto.Hash, string, error)
UpdateNeighbors(neighbors []string) error
BuildGraph() []*SyncPoint
UpdateSyncPoint(peerId crypto.Hash, points []*SyncPoint)
ReadAllNodesWithoutState() []crypto.Hash
ReadSnapshotsSinceTopology(offset, count uint64) ([]*common.SnapshotWithTopologicalOrder, error)
ReadSnapshotsForNodeRound(nodeIdWithNetwork crypto.Hash, round uint64) ([]*common.SnapshotWithTopologicalOrder, error)
SendTransactionToPeer(peerId, tx crypto.Hash) error
CachePutTransaction(peerId crypto.Hash, ver *common.VersionedTransaction) error
CosiQueueExternalAnnouncement(peerId crypto.Hash, s *common.Snapshot, R *crypto.Key) error
CosiAggregateSelfCommitments(peerId crypto.Hash, snap crypto.Hash, commitment *crypto.Key, wantTx bool) error
CosiQueueExternalChallenge(peerId crypto.Hash, snap crypto.Hash, cosi *crypto.CosiSignature, ver *common.VersionedTransaction) error
CosiQueueExternalFullChallenge(peerId crypto.Hash, s *common.Snapshot, commitment, challenge *crypto.Key, cosi *crypto.CosiSignature, ver *common.VersionedTransaction) error
CosiAggregateSelfResponses(peerId crypto.Hash, snap crypto.Hash, response *[32]byte) error
VerifyAndQueueAppendSnapshotFinalization(peerId crypto.Hash, s *common.Snapshot) error
CosiQueueExternalCommitments(peerId crypto.Hash, commitments []*crypto.Key) error
}
Click to show internal directories.
Click to hide internal directories.