Documentation ¶
Index ¶
- Constants
- func EnsureIdentity(dir string) (crypto.PrivKey, error)
- func IdentityInfoFromDir(dir string) (string, error)
- func IsNoPeer(p Peer) bool
- type AddressList
- type Config
- type ConnectionInfo
- type Host
- func (fh *Host) Connected(p Peer) bool
- func (fh *Host) ConnectedPeerInfo(id peer.ID) *PeerInfo
- func (fh *Host) DHTServerEnabled() bool
- func (fh *Host) GetPeers() []Peer
- func (fh *Host) HaveRelay() bool
- func (fh *Host) KnownAddresses() []ma.Multiaddr
- func (fh *Host) ListenAddresses() []ma.Multiaddr
- func (fh *Host) NATDeviceType() (udpNATType, tcpNATType network.NATDeviceType)
- func (fh *Host) NeedPeerDiscovery() bool
- func (fh *Host) PeerCount() uint64
- func (fh *Host) PeerProtocols(p Peer) ([]protocol.ID, error)
- func (fh *Host) Ping() *Ping
- func (fh *Host) Reachability() network.Reachability
- func (fh *Host) Start() error
- func (fh *Host) Stop() error
- type Opt
- func WithBootnodes(bootnodes map[peer.ID]struct{}) Opt
- func WithConfig(cfg Config) Opt
- func WithContext(ctx context.Context) Opt
- func WithDirectNodes(direct map[peer.ID]struct{}) Opt
- func WithLog(logger log.Log) Opt
- func WithNodeReporter(reporter func()) Opt
- func WithRelayCandidateChannel(relayCh chan<- peer.AddrInfo) Opt
- type Peer
- type PeerInfo
- type Ping
- type PingOpt
- type RelayServer
Constants ¶
const ( PublicReachability = "public" PrivateReachability = "private" )
Variables ¶
This section is empty.
Functions ¶
func EnsureIdentity ¶ added in v1.0.0
EnsureIdentity generates an identity key file in given directory.
func IdentityInfoFromDir ¶ added in v1.3.0
IdentityInfoFromDir returns a printable ID from a given identity directory.
Types ¶
type AddressList ¶ added in v1.3.0
type AddressList []multiaddr.Multiaddr
AddressList represents a list of addresses.
func AddressListFromString ¶ added in v1.3.0
func AddressListFromString(s string) (AddressList, error)
AddressListFromString parses a string containing a Multiaddr and returns it as an AddressList.
func AddressListFromStringSlice ¶ added in v1.3.0
func AddressListFromStringSlice(s []string) (AddressList, error)
AddressListFromStringSlice parses strings in the slice into Multiaddr values and returns them as an AddressList.
func MustParseAddresses ¶ added in v1.3.0
func MustParseAddresses(s ...string) AddressList
MustParseAddresses parses multiaddr strings into AddressList, and panics upon any parse errors.
func (AddressList) String ¶ added in v1.3.0
func (al AddressList) String() string
String implements Stringer.
type Config ¶ added in v1.0.0
type Config struct { DataDir string LogLevel log.Level GracePeersShutdown time.Duration MaxMessageSize int // see https://lwn.net/Articles/542629/ for reuseport explanation DisableReusePort bool `mapstructure:"disable-reuseport"` DisableNatPort bool `mapstructure:"disable-natport"` DisableConnectionManager bool `mapstructure:"disable-connection-manager"` DisableResourceManager bool `mapstructure:"disable-resource-manager"` DisableDHT bool `mapstructure:"disable-dht"` Flood bool `mapstructure:"flood"` Listen AddressList `mapstructure:"listen"` Bootnodes []string `mapstructure:"bootnodes"` Direct []string `mapstructure:"direct"` MinPeers int `mapstructure:"min-peers"` LowPeers int `mapstructure:"low-peers"` HighPeers int `mapstructure:"high-peers"` InboundFraction float64 `mapstructure:"inbound-fraction"` OutboundFraction float64 `mapstructure:"outbound-fraction"` AutoscalePeers bool `mapstructure:"autoscale-peers"` AdvertiseAddress AddressList `mapstructure:"advertise-address"` AcceptQueue int `mapstructure:"p2p-accept-queue"` Metrics bool `mapstructure:"p2p-metrics"` Bootnode bool `mapstructure:"p2p-bootnode"` ForceReachability string `mapstructure:"p2p-reachability"` ForceDHTServer bool `mapstructure:"force-dht-server"` EnableHolepunching bool `mapstructure:"p2p-holepunching"` PrivateNetwork bool `mapstructure:"p2p-private-network"` RelayServer RelayServer `mapstructure:"relay-server"` IP4Blocklist []string `mapstructure:"ip4-blocklist"` IP6Blocklist []string `mapstructure:"ip6-blocklist"` GossipQueueSize int `mapstructure:"gossip-queue-size"` GossipValidationThrottle int `mapstructure:"gossip-validation-throttle"` GossipAtxValidationThrottle int `mapstructure:"gossip-atx-validation-throttle"` PingPeers []string `mapstructure:"ping-peers"` PingInterval time.Duration `mapstructure:"ping-interval"` Relay bool `mapstructure:"relay"` StaticRelays []string `mapstructure:"static-relays"` EnableTCPTransport bool `mapstructure:"enable-tcp-transport"` EnableQUICTransport bool `mapstructure:"enable-quic-transport"` EnableRoutingDiscovery bool `mapstructure:"enable-routing-discovery"` RoutingDiscoveryAdvertise bool `mapstructure:"routing-discovery-advertise"` AdvertiseInterval time.Duration `mapstructure:"advertise-interval"` }
Config for all things related to p2p layer.
type ConnectionInfo ¶ added in v1.1.2
type Host ¶ added in v1.0.0
Host is a conveniency wrapper for all p2p related functionality required to run a full spacemesh node.
func New ¶
func New( _ context.Context, logger log.Log, cfg Config, prologue []byte, quicNetCookie handshake.NetworkCookie, opts ...Opt, ) (*Host, error)
New initializes libp2p host configured for spacemesh.
func (*Host) ConnectedPeerInfo ¶ added in v1.1.2
ConnectedPeerInfo retrieves a peer info object for the given peer.ID, if the given peer is not connected then nil is returned.
func (*Host) DHTServerEnabled ¶ added in v1.3.0
DHTServerEnabled returns true if the server has DHT running in server mode.
func (*Host) HaveRelay ¶ added in v1.3.0
HaveRelay returns true if this host can be used as a relay, that is, it supports relay service and has public reachability.
func (*Host) KnownAddresses ¶ added in v1.3.0
KnownAddresses returns the addresses by which the peers know this one.
func (*Host) ListenAddresses ¶ added in v1.3.0
ListenAddresses returns the addresses on which this host listens.
func (*Host) NATDeviceType ¶ added in v1.3.0
func (fh *Host) NATDeviceType() (udpNATType, tcpNATType network.NATDeviceType)
NATDeviceType returns NATDeviceType returns the NAT device types for UDP and TCP so far for this host.
func (*Host) NeedPeerDiscovery ¶ added in v1.3.0
NeedPeerDiscovery returns true if it makes sense to do additional discovery of non-DHT (NATed) peers.
func (*Host) PeerProtocols ¶ added in v1.1.0
PeerProtocols returns the protocols supported by peer.
func (*Host) Ping ¶ added in v1.3.0
Ping returns Ping structure for this Host, if any PingPeers are specified in the config. Otherwise, it returns nil.
func (*Host) Reachability ¶ added in v1.3.0
func (fh *Host) Reachability() network.Reachability
Reachability returns reachability of the host (public, private, unknown).
type Opt ¶ added in v1.0.0
type Opt func(fh *Host)
Opt is for configuring Host.
func WithBootnodes ¶ added in v1.1.2
func WithContext ¶ added in v1.0.0
WithContext set context for Host.
func WithDirectNodes ¶ added in v1.1.2
func WithNodeReporter ¶ added in v1.0.0
func WithNodeReporter(reporter func()) Opt
WithNodeReporter updates reporter that is notified every time when node added or removed a peer.
func WithRelayCandidateChannel ¶ added in v1.3.0
type Peer ¶
Peer is an alias to libp2p's peer.ID.
const NoPeer Peer = ""
NoPeer is used when peer doesn't matter.
type PeerInfo ¶ added in v1.1.2
type PeerInfo struct { ID Peer Connections []ConnectionInfo Tags []string }
PeerInfo groups relevant information about a peer.
type RelayServer ¶ added in v1.0.7
type RelayServer struct { Enable bool `mapstructure:"enable"` Reservations int `mapstructure:"reservations"` TTL time.Duration `mapstructure:"ttl"` ConnDurationLimit time.Duration `mapstructure:"conn-duration-limit"` ConnDataLimit int64 `mapstructure:"conn-data-limit"` MaxCircuits int `mapstructure:"max-circuits"` BufferSize int `mapstructure:"buffer-size"` MaxReservationsPerPeer int `mapstructure:"max-reservations-per-peer"` MaxReservationsPerIP int `mapstructure:"max-reservations-per-ip"` MaxReservationsPerASN int `mapstructure:"max-reservations-per-asn"` }