Documentation ¶
Overview ¶
Package libp2p provides webmesh integration with libp2p.
Package libp2p provides webmesh integration with libp2p.
Index ¶
- Constants
- func NewAnnouncer[REQ, RESP any](ctx context.Context, opts AnnounceOptions, rt transport.UnaryServer[REQ, RESP]) (io.Closer, error)
- func NewConnFromStream(stream network.Stream) net.Conn
- func NewDHT(ctx context.Context, host host.Host, bootstrapPeers []multiaddr.Multiaddr, ...) (*dht.IpfsDHT, error)
- func NewDiscoveryJoinRoundTripper(ctx context.Context, opts RoundTripOptions) (transport.JoinRoundTripper, error)
- func NewDiscoveryRoundTripper[REQ, RESP any](ctx context.Context, opts RoundTripOptions) (transport.RoundTripper[REQ, RESP], error)
- func NewDiscoveryTransport(ctx context.Context, opts TransportOptions) (transport.RPCTransport, error)
- func NewJoinAnnouncer(ctx context.Context, opts AnnounceOptions, join transport.JoinServer) (io.Closer, error)
- func NewJoinRoundTripper(ctx context.Context, opts RoundTripOptions) (transport.JoinRoundTripper, error)
- func NewRoundTripper[REQ, RESP any](ctx context.Context, opts RoundTripOptions) (transport.RoundTripper[REQ, RESP], error)
- func NewTransport(host Host, credentials ...grpc.DialOption) transport.RPCTransport
- func NewUncertifiedPeerstore() (peerstore.Peerstore, error)
- func RPCProtocolFor(method string) protocol.ID
- func SetMaxSystemBuffers()
- func SetSystemBuffers(size int)
- func ToMultiaddrs(addrs []string) []multiaddr.Multiaddr
- func UDPRelayProtocolFor(pubkey crypto.PublicKey) protocol.ID
- type AnnounceOptions
- type Announcer
- type DiscoveryHost
- type Host
- type HostOptions
- type RoundTripOptions
- type TransportOptions
- type UDPRelay
- type UDPRelayOptions
- type UncertifiedPeerstore
Constants ¶
const ( // BootstrapProtocol is the protocol used for bootstrapping a mesh. BootstrapProtocol = protocol.ID("/webmesh/bootstrap/0.0.1") // RPCProtocol is the protocol used for executing RPCs against a mesh. // The method should be appended to the end of the protocol. RPCProtocol = protocol.ID("/webmesh/rpc/0.0.1") // RaftProtocol is the protocol used for webmesh raft. // This is not used yet. RaftProtocol = protocol.ID("/webmesh/raft/0.0.1") // UDPRelayProtocol is the protocol used for relaying UDP packets. // The destination node should be appended to the end of the protocol. UDPRelayProtocol = protocol.ID("/webmesh/udp-relay/0.0.1") )
const MaxBuffer = 2500000
MaxBuffer is the maximum buffer size for libp2p.
Variables ¶
This section is empty.
Functions ¶
func NewAnnouncer ¶
func NewAnnouncer[REQ, RESP any](ctx context.Context, opts AnnounceOptions, rt transport.UnaryServer[REQ, RESP]) (io.Closer, error)
NewAnnouncer creates a generic announcer for the given method, request, and response objects.
func NewConnFromStream ¶ added in v0.15.0
NewConnFromStream creates a new net.Conn from a libp2p stream.
func NewDHT ¶
func NewDHT(ctx context.Context, host host.Host, bootstrapPeers []multiaddr.Multiaddr, connectTimeout time.Duration) (*dht.IpfsDHT, error)
NewDHT returns a DHT for given host. If bootstrap peers is empty, the default bootstrap peers will be used.
func NewDiscoveryJoinRoundTripper ¶ added in v0.15.0
func NewDiscoveryJoinRoundTripper(ctx context.Context, opts RoundTripOptions) (transport.JoinRoundTripper, error)
NewDiscoveryJoinRoundTripper returns a round tripper that uses the libp2p kademlia DHT to join a cluster. The created host is closed when the round tripper is closed.
func NewDiscoveryRoundTripper ¶ added in v0.15.0
func NewDiscoveryRoundTripper[REQ, RESP any](ctx context.Context, opts RoundTripOptions) (transport.RoundTripper[REQ, RESP], error)
NewDiscoveryRoundTripper returns a round tripper that uses the libp2p kademlia DHT. The created host is closed when the round tripper is closed.
func NewDiscoveryTransport ¶ added in v0.15.0
func NewDiscoveryTransport(ctx context.Context, opts TransportOptions) (transport.RPCTransport, error)
NewDiscoveryTransport returns a new RPC transport over libp2p using the IPFS DHT for discovery.
func NewJoinAnnouncer ¶
func NewJoinAnnouncer(ctx context.Context, opts AnnounceOptions, join transport.JoinServer) (io.Closer, error)
NewJoinAnnouncer creates a new announcer on the kadmilia DHT and executes received join requests against the given join Server.
func NewJoinRoundTripper ¶
func NewJoinRoundTripper(ctx context.Context, opts RoundTripOptions) (transport.JoinRoundTripper, error)
NewJoinRoundTripper returns a round tripper that dials the given multiaddrs directly using an uncertified peerstore.
func NewRoundTripper ¶
func NewRoundTripper[REQ, RESP any](ctx context.Context, opts RoundTripOptions) (transport.RoundTripper[REQ, RESP], error)
NewRoundTripper returns a round tripper that dials the given multiaddrs directly using an uncertified peerstore.
func NewTransport ¶ added in v0.15.0
func NewTransport(host Host, credentials ...grpc.DialOption) transport.RPCTransport
NewTransport returns a new transport using the underlying host. The passed addresses to Dial are parsed as a multiaddrs. It assumes the host's peerstore has been populated with the addresses before calls to Dial.
func NewUncertifiedPeerstore ¶ added in v0.15.0
NewUncertifiedPeerstore creates a new uncertified peerstore.
func RPCProtocolFor ¶
RPCProtocolFor returns the RPCProtocol for the given method.
func SetMaxSystemBuffers ¶
func SetMaxSystemBuffers()
SetMaxSystemBuffers sets the system buffers to the maximum size for libp2p.
func SetSystemBuffers ¶
func SetSystemBuffers(size int)
SetSystemBuffers sets the system buffers to use for libp2p.
func ToMultiaddrs ¶ added in v0.15.0
func ToMultiaddrs(addrs []string) []multiaddr.Multiaddr
ToMultiaddrs returns the given strings as multiaddrs. It silently ignores any invalid multiaddrs.
Types ¶
type AnnounceOptions ¶
type AnnounceOptions struct { // Rendezvous is the pre-shared key to use as a rendezvous point for the DHT. Rendezvous string // AnnounceTTL is the TTL to use for the discovery service. AnnounceTTL time.Duration // HostOptions are options for configuring the host. These can be left // empty if using a pre-created host. HostOptions HostOptions // Method is the method to announce. Method string // Host is a pre-started host to use for announcing. Host host.Host }
AnnounceOptions are options for announcing the host or discovering peers on the libp2p kademlia DHT.
func (AnnounceOptions) MarshalJSON ¶ added in v0.11.2
func (opts AnnounceOptions) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
type Announcer ¶
type Announcer interface { // AnnounceToDHT should announce the join protocol to the DHT, // such that it can be used by a libp2p transport.JoinRoundTripper. AnnounceToDHT(ctx context.Context, opts AnnounceOptions) error // LeaveDHT should remove the join protocol from the DHT for the // given rendezvous string. LeaveDHT(ctx context.Context, rendezvous string) error }
Announcer is an interface for nodes that can announce themselves to the network.
type DiscoveryHost ¶
type DiscoveryHost interface { Host // DHT is the underlying libp2p DHT. DHT() *dht.IpfsDHT // Announce announces the host to the DHT for the given rendezvous string. Announce(ctx context.Context, rendezvous string, ttl time.Duration) }
DiscoveryHost is an interface that provides facilities for discovering and connecting to peers over libp2p. It can be used to avoid the need for re-creating a libp2p host and bootstrapping the DHT for each new connection.
func NewDiscoveryHost ¶
func NewDiscoveryHost(ctx context.Context, opts HostOptions) (DiscoveryHost, error)
NewDiscoveryHost creates a new libp2p host connected to the DHT with the given options.
func WrapHostWithDiscovery ¶
func WrapHostWithDiscovery(ctx context.Context, host Host, bootstrapPeers []multiaddr.Multiaddr, connectTimeout time.Duration) (DiscoveryHost, error)
WrapHostWithDiscovery will wrap a native libp2p Host, bootstrap a DHT alongside it and return a DiscoveryHost.
type Host ¶ added in v0.15.0
type Host interface { // ID returns the peer ID of the host as a raw string. ID() string // Host is the underlying libp2p host. Host() host.Host // AddAddrs adds the given addresses to the host's peerstore. AddAddrs(addrs []multiaddr.Multiaddr, id peer.ID, ttl time.Duration) error // SignAddrs creates an envelope for this host's peer ID and addresses. SignAddrs(seq uint64) (*record.Envelope, error) // ConsumePeerRecord consumes a peer record and adds it to the peerstore. ConsumePeerRecord(rec *record.Envelope, ttl time.Duration) error // RPCListener creates and returns a new net.Listener listening for RPC connections. // This should only ever be called once per host. The host will be closed when the // listener is closed. RPCListener() net.Listener // Close closes the host and its DHT. Close() error }
Host is an interface that provides facilities for connecting to peers over libp2p.
type HostOptions ¶
type HostOptions struct { // Key is the key to use for identification. If left empty, an ephemeral // key is generated. Key crypto.PrivateKey // BootstrapPeers is a list of bootstrap peers to use for the DHT when // creating a discovery host. If empty or nil, the default bootstrap // peers will be used. BootstrapPeers []multiaddr.Multiaddr // Options are options for configuring the libp2p host. Options []config.Option // LocalAddrs is a list of local addresses to announce the host with. // If empty or nil, the default local addresses will be used. LocalAddrs []multiaddr.Multiaddr // ConnectTimeout is the timeout for connecting to peers when bootstrapping. ConnectTimeout time.Duration // UncertifiedPeerstore uses an uncertified peerstore for the host. // This is useful for testing or when using the host to dial pre-trusted // peers. UncertifiedPeerstore bool // NoFallbackDefaults disables the use of fallback defaults when creating // the host. This is useful for testing. NoFallbackDefaults bool }
HostOptions are options for creating a new libp2p host.
func (HostOptions) MarshalJSON ¶ added in v0.11.2
func (o HostOptions) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler.
type RoundTripOptions ¶
type RoundTripOptions struct { // Multiaddrs are the multiaddrs to dial. These are mutually exclusive with // Rendezvous. Multiaddrs []multiaddr.Multiaddr // Rendezvous is a rendezvous point on the DHT. Rendezvous string // HostOptions are options for configuring the host. These can be left // empty if using a pre-created host. HostOptions HostOptions // Method is the method to try to execute. Method string // Host is a pre-started host to use for the round trip Host Host // Credentials are gRPC DialOptions to use for the gRPC connection. Credentials []grpc.DialOption }
RoundTripOptions are options for performing a round trip against a discovery node.
type TransportOptions ¶ added in v0.15.0
type TransportOptions struct { // Rendezvous is the pre-shared string to use as a rendezvous point for the DHT. Rendezvous string // HostOptions are options for configuring the host. These can be left // empty if using a pre-created host. HostOptions HostOptions // Host is a pre-started host to use for the transport. Host Host // Credentials are the credentials to use for the transport. Credentials []grpc.DialOption }
TransportOptions are options for configuring an RPC transport over libp2p.
type UDPRelay ¶
type UDPRelay struct { UDPRelayOptions // contains filtered or unexported fields }
UDPRelay is a UDP relay.
func NewUDPRelay ¶
func NewUDPRelay(ctx context.Context, opts UDPRelayOptions) (*UDPRelay, error)
NewUDPRelay creates a new UDP relay.
func NewUDPRelayWithHost ¶
func NewUDPRelayWithHost(ctx context.Context, host DiscoveryHost, opts UDPRelayOptions) (*UDPRelay, error)
NewUDPRelay creates a new UDP relay with the given host.
func (*UDPRelay) Closed ¶
func (u *UDPRelay) Closed() <-chan struct{}
Closed returns a channel that is closed when the relay is closed.
type UDPRelayOptions ¶
type UDPRelayOptions struct { // PrivateKey is the private key to use for the host. // This is required. PrivateKey crypto.PrivateKey // RemotePubKey is the public key of the remote node to negotiate a UDP relay with. RemotePubKey crypto.PublicKey // Relay are options for the relay Relay relay.UDPOptions // Host are options for configuring the host Host HostOptions }
UDPRelayOptions are the options for negotiating a UDP relay.
type UncertifiedPeerstore ¶ added in v0.15.0
UncertifiedPeerstore is a peerstore that does not verify peer addresses with signatures.
func (*UncertifiedPeerstore) ConsumePeerRecord ¶ added in v0.15.0
func (*UncertifiedPeerstore) GetPeerRecord ¶ added in v0.15.0
func (ps *UncertifiedPeerstore) GetPeerRecord(p peer.ID) *record.Envelope
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
embedded
|
|
protocol
Package protocol defines the libp2p webmesh protocol.
|
Package protocol defines the libp2p webmesh protocol. |
transport
Package transport defines the libp2p webmesh transport.
|
Package transport defines the libp2p webmesh transport. |
util
Package util provides utility functions for the webmesh libp2p integrations.
|
Package util provides utility functions for the webmesh libp2p integrations. |
wgtransport
Package wgtransport implements a Webmesh WireGuard transport for libp2p.
|
Package wgtransport implements a Webmesh WireGuard transport for libp2p. |