p2p

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 2, 2023 License: MIT Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LengthHeader        = 4 // LengthHeader represent how many bytes we used as header
	TimeoutReadPayload  = time.Second * 10
	TimeoutWritePayload = time.Second * 10
	MaxPayload          = 20000000 // 20M
)
View Source
const (
	// TimeoutConnecting maximum time for wait for peers to connect
	TimeoutConnecting = time.Second * 20
)

Variables

View Source
var (
	ErrJoinPartyTimeout = errors.New("fail to join party, timeout")
	ErrLeaderNotReady   = errors.New("leader not reachable")
	ErrSignReceived     = errors.New("signature received")
	ErrNotActiveSigner  = errors.New("not active signer")
	ErrSigGenerated     = errors.New("signature generated")
)
View Source
var ApplyDeadline = true

applyDeadline will be true , and only disable it when we are doing test the reason being the p2p network , mocknet, mock stream doesn't support SetReadDeadline ,SetWriteDeadline feature

View Source
var TSSProtocolID protocol.ID = "/p2p/tss"

TSSProtocolID protocol id used for tss

Functions

func LeaderNode

func LeaderNode(msgID string, blockHeight int64, pIDs []string) (string, error)

LeaderNode use the given input buf to calculate a hash , and consistently choose a node as a master coordinate note

func ReadStreamWithBuffer

func ReadStreamWithBuffer(stream network.Stream) ([]byte, error)

ReadStreamWithBuffer read data from the given stream

func WriteStreamWithBuffer

func WriteStreamWithBuffer(msg []byte, stream network.Stream) error

WriteStreamWithBuffer write the message to stream

Types

type Communication

type Communication struct {
	BroadcastMsgChan chan *messages.BroadcastMsgChan
	// contains filtered or unexported fields
}

Communication use p2p to broadcast messages among all the TSS nodes

func NewCommunication

func NewCommunication(rendezvous string, bootstrapPeers []maddr.Multiaddr, port int, externalIP string) (*Communication, error)

NewCommunication create a new instance of Communication

func (*Communication) Broadcast

func (c *Communication) Broadcast(peers []peer.ID, msg []byte, msgID string)

Broadcast message to Peers

func (*Communication) CancelSubscribe

func (c *Communication) CancelSubscribe(topic messages.THORChainTSSMessageType, msgID string)

func (*Communication) ExportPeerAddress

func (c *Communication) ExportPeerAddress() map[peer.ID]addr.AddrList

func (*Communication) GetHost

func (c *Communication) GetHost() host.Host

GetHost return the host

func (*Communication) GetLocalPeerID

func (c *Communication) GetLocalPeerID() string

GetLocalPeerID from p2p host

func (*Communication) ProcessBroadcast

func (c *Communication) ProcessBroadcast()

func (*Communication) ReleaseStream

func (c *Communication) ReleaseStream(msgID string)

func (*Communication) SetSubscribe

func (c *Communication) SetSubscribe(topic messages.THORChainTSSMessageType, msgID string, channel chan *Message)

func (*Communication) Start

func (c *Communication) Start(priKeyBytes []byte) error

Start will start the communication

func (*Communication) Stop

func (c *Communication) Stop() error

Stop communication

type Config

type Config struct {
	RendezvousString string
	Port             int
	BootstrapPeers   addrList
	ExternalIP       string
}

Config is configuration for P2P

type Message

type Message struct {
	PeerID  peer.ID
	Payload []byte
}

Message that get transfer across the wire

type MessageIDSubscriber

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

MessageIDSubscriber

func NewMessageIDSubscriber

func NewMessageIDSubscriber() *MessageIDSubscriber

NewMessageIDSubscriber create a new instance of MessageIDSubscriber

func (*MessageIDSubscriber) GetSubscriber

func (ms *MessageIDSubscriber) GetSubscriber(msgID string) chan *Message

GetSubscribers return a subscriber of given message id

func (*MessageIDSubscriber) IsEmpty

func (ms *MessageIDSubscriber) IsEmpty() bool

IsEmpty check whether there is subscribers

func (*MessageIDSubscriber) Subscribe

func (ms *MessageIDSubscriber) Subscribe(msgID string, channel chan *Message)

Subscribe a message id

func (*MessageIDSubscriber) UnSubscribe

func (ms *MessageIDSubscriber) UnSubscribe(msgID string)

UnSubscribe a messageid

type PartyCoordinator

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

func NewPartyCoordinator

func NewPartyCoordinator(host host.Host, timeout time.Duration) *PartyCoordinator

NewPartyCoordinator create a new instance of PartyCoordinator

func (*PartyCoordinator) HandleStream

func (pc *PartyCoordinator) HandleStream(stream network.Stream)

func (*PartyCoordinator) HandleStreamWithLeader

func (pc *PartyCoordinator) HandleStreamWithLeader(stream network.Stream)

HandleStream handle party coordinate stream

func (*PartyCoordinator) JoinPartyWithLeader

func (pc *PartyCoordinator) JoinPartyWithLeader(msgID string, blockHeight int64, peers []string, threshold int, signChan chan string) ([]peer.ID, string, error)

func (*PartyCoordinator) JoinPartyWithRetry

func (pc *PartyCoordinator) JoinPartyWithRetry(msgID string, peers []string) ([]peer.ID, error)

JoinPartyWithRetry this method provide the functionality to join party with retry and back off

func (*PartyCoordinator) ReleaseStream

func (pc *PartyCoordinator) ReleaseStream(msgID string)

func (*PartyCoordinator) Stop

func (pc *PartyCoordinator) Stop()

Stop the PartyCoordinator rune

type PeerStatus

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

func NewPeerStatus

func NewPeerStatus(peerNodes []peer.ID, myPeerID peer.ID, leader string, threshold int) *PeerStatus

type StreamMgr

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

func NewStreamMgr

func NewStreamMgr() *StreamMgr

func (*StreamMgr) AddStream

func (sm *StreamMgr) AddStream(msgID string, stream network.Stream)

func (*StreamMgr) ReleaseStream

func (sm *StreamMgr) ReleaseStream(msgID string)

Jump to

Keyboard shortcuts

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