Documentation ¶
Overview ¶
package p2p is a low-level library responsible for peer discovery and sending/receiving messages.
Index ¶
- Variables
- func BootstrapListToAddrInfos(bootstrapList []string) ([]peer.AddrInfo, error)
- func ConnectToBootstrapList(ctx context.Context, host host.Host, bootstrapList []string) error
- func Filters(filters *filter.Filters) libp2p.Option
- func NewDHT(ctx context.Context, storageDir string, host host.Host) (*dht.IpfsDHT, error)
- type Config
- type Message
- type MessageHandler
- type Node
- func (n *Node) AddPeerScore(id peer.ID, tag string, diff int)
- func (n *Node) BanIP(maddr ma.Multiaddr) error
- func (n *Node) Connect(peerInfo peer.AddrInfo, timeout time.Duration) error
- func (n *Node) GetNumPeers() int
- func (n *Node) ID() peer.ID
- func (n *Node) Multiaddrs() []ma.Multiaddr
- func (n *Node) ProtectIP(maddr ma.Multiaddr) error
- func (n *Node) SetPeerScore(id peer.ID, tag string, val int)
- func (n *Node) Start() error
- func (n *Node) UnbanIP(maddr ma.Multiaddr) error
- func (n *Node) UnsetPeerScore(id peer.ID, tag string)
Constants ¶
This section is empty.
Variables ¶
var DefaultBootstrapList = []string{
"/ip4/3.214.190.67/tcp/60558/ipfs/16Uiu2HAmGx8Z6gdq5T5AQE54GMtqDhDFhizywTy1o28NJbAMMumF",
"/ip4/3.214.190.67/tcp/60559/ws/ipfs/16Uiu2HAmGx8Z6gdq5T5AQE54GMtqDhDFhizywTy1o28NJbAMMumF",
"/dns4/bootstrap-0.mesh.0x.org/tcp/60558/ipfs/16Uiu2HAmGx8Z6gdq5T5AQE54GMtqDhDFhizywTy1o28NJbAMMumF",
"/dns4/bootstrap-0.mesh.0x.org/tcp/60559/ws/ipfs/16Uiu2HAmGx8Z6gdq5T5AQE54GMtqDhDFhizywTy1o28NJbAMMumF",
"/ip4/18.200.96.60/tcp/60558/ipfs/16Uiu2HAkwsDZk4LzXy2rnWANRsyBjB4fhjnsNeJmjgsBqxPGTL32",
"/ip4/18.200.96.60/tcp/60559/ws/ipfs/16Uiu2HAkwsDZk4LzXy2rnWANRsyBjB4fhjnsNeJmjgsBqxPGTL32",
"/dns4/bootstrap-1.mesh.0x.org/tcp/60558/ipfs/16Uiu2HAkwsDZk4LzXy2rnWANRsyBjB4fhjnsNeJmjgsBqxPGTL32",
"/dns4/bootstrap-1.mesh.0x.org/tcp/60559/ws/ipfs/16Uiu2HAkwsDZk4LzXy2rnWANRsyBjB4fhjnsNeJmjgsBqxPGTL32",
"/ip4/13.232.193.142/tcp/60558/ipfs/16Uiu2HAkykwoBxwyvoEbaEkuKMeKrmJDPZ2uKFPUKtqd2JbGHUNH",
"/ip4/13.232.193.142/tcp/60559/ws/ipfs/16Uiu2HAkykwoBxwyvoEbaEkuKMeKrmJDPZ2uKFPUKtqd2JbGHUNH",
"/dns4/bootstrap-2.mesh.0x.org/tcp/60558/ipfs/16Uiu2HAkykwoBxwyvoEbaEkuKMeKrmJDPZ2uKFPUKtqd2JbGHUNH",
"/dns4/bootstrap-2.mesh.0x.org/tcp/60559/ws/ipfs/16Uiu2HAkykwoBxwyvoEbaEkuKMeKrmJDPZ2uKFPUKtqd2JbGHUNH",
"/ip4/34.201.54.78/tcp/4001/ipfs/12D3KooWHwJDdbx73qiBpSCJfg4RuYyzqnLUwfLBqzn77TSy7kRX",
"/ip4/18.204.221.103/tcp/4001/ipfs/12D3KooWQS6Gsr2kLZvF7DVtoRFtj24aar5jvz88LvJePrawM3EM",
}
DefaultBootstrapList is a list of addresses to use by default for bootstrapping the DHT.
Functions ¶
func ConnectToBootstrapList ¶
Types ¶
type Config ¶
type Config struct { // Topic is a unique string representing the pubsub topic. Only Nodes which // have the same topic will share messages with one another. Topic string // TCPPort is the port on which to listen for incoming TCP connections. TCPPort int // WebSocketsPort is the port on which to listen for incoming WebSockets // connections. WebSocketsPort int // Insecure controls whether or not messages should be encrypted. It should // always be set to false in production. Insecure bool // PrivateKey is the private key which will be used for signing messages and // generating a peer ID. PrivateKey p2pcrypto.PrivKey // MessageHandler is an interface responsible for validating, storing, and // finding new messages to share. MessageHandler MessageHandler // RendezvousString is a unique identifier for the rendezvous point. This node // will attempt to find peers with the same Rendezvous string. RendezvousString string // UseBootstrapList determines whether or not to use the list of hard-coded // peers to bootstrap the DHT for peer discovery. UseBootstrapList bool // BootstrapList is a list of multiaddress strings to use for bootstrapping // the DHT. If empty, the default list will be used. BootstrapList []string // DataDir is the directory to use for storing data. DataDir string }
Config contains configuration options for a Node.
type MessageHandler ¶
type MessageHandler interface { // HandleMessages is called whenever new messages are received. It should only // return an error if there was a problem handling the messages. It should not // return an error for invalid or duplicate messages. HandleMessages([]*Message) error GetMessagesToShare(max int) ([][]byte, error) }
MessageHandler is an interface responsible for validating and storing messages as well as selecting messages which are ready to be shared.
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
Node is the main type for the p2p package. It represents a particpant in the 0x Mesh network who is capable of sending, receiving, validating, and storing messages.
func New ¶
New creates a new Node with the given context and config. The Node will stop all background operations if the context is canceled.
func (*Node) AddPeerScore ¶
AddPeerScore adds diff to the current score for a given peer. Tag is a unique identifier for the score. A peer's total score is the sum of the scores associated with each tag. Peers that end up with a low total score will eventually be disconnected.
func (*Node) BanIP ¶
BanIP adds the IP address of the given Multiaddr to the blacklist. The node will no longer dial or accept connections from this IP address. However, if the IP address is protected, calling BanIP will not ban the IP address and will instead return errProtectedIP. BanIP does not automatically disconnect from the given multiaddress if there is currently an open connection.
func (*Node) Connect ¶
Connect ensures there is a connection between this host and the peer with given peerInfo. If there is not an active connection, Connect will dial the peer, and block until a connection is open, timeout is exceeded, or an error is returned.
func (*Node) GetNumPeers ¶
GetNumPeers returns the number of peers the node is connected to
func (*Node) Multiaddrs ¶
Multiaddrs returns all multi addresses at which the node is dialable.
func (*Node) ProtectIP ¶
ProtectIP permanently adds the IP address of the given Multiaddr to a list of protected IP addresses. Protected IPs can never be banned and will not be added to the blacklist. If the IP address is already on the blacklist, it will be removed.
func (*Node) SetPeerScore ¶
SetPeerScore sets the current score for a given peer (overwriting any previous value with the same tag). Tag is a unique identifier for the score. A peer's total score is the sum of the scores associated with each tag. Peers that end up with a low total score will eventually be disconnected.
func (*Node) Start ¶
Start causes the Node to continuously send messages to and receive messages from its peers. It blocks until an error is encountered or `Stop` is called.