mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-23 11:27:25 +08:00
commit d05a4d5f688dbd09900ceccdcc5f8109dd0671c2
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:50:16 2024 -0500
merge
commit db57ff1f191f9dedc87ca77da1c71244dd2325bd
Merge: 7b43494 2e3279a
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:49:32 2024 -0500
Merge branch 'v1.4.19' into not-release
commit 7b43494246e28152b46710c8c9821429d4231f7e
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Wed Jun 12 00:49:13 2024 -0500
pull from release site
commit 2e3279ac930ac630d9ca2b26cf4f3232abe79823
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:31:02 2024 -0500
remove binaries
commit 2768a8778b3860c5736352c8aa950e3496a46e56
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:24:44 2024 -0500
signatory #8 added
commit 6a944628575ccadd17c9f9f4a11a49c032fa0c1d
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 06:08:26 2024 -0500
signatory #6 added
commit b401fb65e5ddbe0340fe85aab1182d6120a4e161
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:39:03 2024 -0500
signatory #3 added
commit e5700913c0f6246fb607bcd3e219c257cb4a80e9
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:31:24 2024 -0500
signatory #15 added
commit 9b1da6c03e517135bfcd59226f900adab42f3687
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 05:23:02 2024 -0500
signatories #4 and #16 added
commit 9c97d1bbc399a070ac21b35ed9b1af127fa4c7ea
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 04:59:27 2024 -0500
signatories #1 and #2 added
commit 905e3f78a8121eade1c331ae910ed25dd534f27a
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 04:40:32 2024 -0500
build, binaries, signatory #13
commit ebfb57bc29d9ed1fb25d0dd100e38709354b3d84
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Sat Jun 8 03:38:53 2024 -0500
tests pass, let's go
commit 5d4612c6c624c3dc18f9a5657936034ac9d9d8dd
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:53:15 2024 -0500
update version info + readme
commit 6b0dd69e930d01b98acb8d7b56bb5d572e1a4324
Merge: 090d630 859221b
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 08:25:16 2024 +0000
Merge branch 'feat-data-worker-direct-config' into 'v1.4.19'
feat: support detached configuration mode for data workers
See merge request quilibrium/ceremonyclient!7
commit 859221b179ab2631fa474be2494259afaaa6bd51
Author: Cassandra Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:24:22 2024 -0500
feat: support detached configuration mode for data workers
commit 090d6301d44a2aa88886120783cd5a6e537aa6d1
Merge: 62db30c d1cae94
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 06:25:43 2024 +0000
Merge branch 'feat-go-1-22' into 'v1.4.19'
feat: go 1.22 support
See merge request quilibrium/ceremonyclient!6
commit d1cae942165f4871f8051e266722c0ca717780cb
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 06:25:43 2024 +0000
feat: go 1.22 support
commit 62db30c54f9258c92113c6664ce817670a339083
Merge: 0cbc0d0 f36cea3
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 03:52:17 2024 +0000
Merge branch 'rust-vdf' into 'v1.4.19'
Switch to Rust VDF
See merge request quilibrium/ceremonyclient!2
commit f36cea323bfe5e56f519f59f9a0cce35f0f8b6ab
Author: Agost Biro <agostbiro@gmail.com>
Date: Fri Jun 7 03:52:16 2024 +0000
Switch to Rust VDF
commit 0cbc0d0d319713e20ca7f48588c4153833e58429
Merge: 986e12c 0c48a83
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Fri Jun 7 00:50:15 2024 +0000
Merge branch 'release_image' into 'v1.4.19'
create docker image based on release binaries
See merge request quilibrium/ceremonyclient!4
commit 0c48a83bb5751abf7c8c0ff188bfdc2130631e78
Author: Marius Scurtescu <marius.scurtescu@gmail.com>
Date: Fri Jun 7 00:50:15 2024 +0000
create docker image based on release binaries
commit 986e12c88bb2d2b412b59f7db1ae39f828304dbe
Merge: 58456c1 a3ef5c6
Author: Cassie Heart <cassandra@quilibrium.com>
Date: Wed Jun 5 22:01:37 2024 +0000
Merge branch 'signature_check' into 'v1.4.19'
add default of signature check from QUILIBRIUM_SIGNATURE_CHECK env var
See merge request quilibrium/ceremonyclient!1
commit a3ef5c6af2d5de107d01c45a62d7324165e2551b
Author: Marius Scurtescu <marius.scurtescu@gmail.com>
Date: Wed Jun 5 14:37:50 2024 -0700
add default of signature check from QUILIBRIUM_SIGNATURE_CHECK env var
208 lines
6.3 KiB
Go
208 lines
6.3 KiB
Go
// Package network provides core networking abstractions for libp2p.
|
|
//
|
|
// The network package provides the high-level Network interface for interacting
|
|
// with other libp2p peers, which is the primary public API for initiating and
|
|
// accepting connections to remote peers.
|
|
package network
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"time"
|
|
|
|
"github.com/libp2p/go-libp2p/core/peer"
|
|
"github.com/libp2p/go-libp2p/core/peerstore"
|
|
|
|
ma "github.com/multiformats/go-multiaddr"
|
|
)
|
|
|
|
// MessageSizeMax is a soft (recommended) maximum for network messages.
|
|
// One can write more, as the interface is a stream. But it is useful
|
|
// to bunch it up into multiple read/writes when the whole message is
|
|
// a single, large serialized object.
|
|
const MessageSizeMax = 1 << 22 // 4 MB
|
|
|
|
// Direction represents which peer in a stream initiated a connection.
|
|
type Direction int
|
|
|
|
const (
|
|
// DirUnknown is the default direction.
|
|
DirUnknown Direction = iota
|
|
// DirInbound is for when the remote peer initiated a connection.
|
|
DirInbound
|
|
// DirOutbound is for when the local peer initiated a connection.
|
|
DirOutbound
|
|
)
|
|
|
|
const unrecognized = "(unrecognized)"
|
|
|
|
func (d Direction) String() string {
|
|
str := [...]string{"Unknown", "Inbound", "Outbound"}
|
|
if d < 0 || int(d) >= len(str) {
|
|
return unrecognized
|
|
}
|
|
return str[d]
|
|
}
|
|
|
|
// Connectedness signals the capacity for a connection with a given node.
|
|
// It is used to signal to services and other peers whether a node is reachable.
|
|
type Connectedness int
|
|
|
|
const (
|
|
// NotConnected means no connection to peer, and no extra information (default)
|
|
NotConnected Connectedness = iota
|
|
|
|
// Connected means has an open, live connection to peer
|
|
Connected
|
|
|
|
// Deprecated: CanConnect is deprecated and will be removed in a future release.
|
|
//
|
|
// CanConnect means recently connected to peer, terminated gracefully
|
|
CanConnect
|
|
|
|
// Deprecated: CannotConnect is deprecated and will be removed in a future release.
|
|
//
|
|
// CannotConnect means recently attempted connecting but failed to connect.
|
|
// (should signal "made effort, failed")
|
|
CannotConnect
|
|
|
|
// Limited means we have a transient connection to the peer, but aren't fully connected.
|
|
Limited
|
|
)
|
|
|
|
func (c Connectedness) String() string {
|
|
str := [...]string{"NotConnected", "Connected", "CanConnect", "CannotConnect", "Limited"}
|
|
if c < 0 || int(c) >= len(str) {
|
|
return unrecognized
|
|
}
|
|
return str[c]
|
|
}
|
|
|
|
// Reachability indicates how reachable a node is.
|
|
type Reachability int
|
|
|
|
const (
|
|
// ReachabilityUnknown indicates that the reachability status of the
|
|
// node is unknown.
|
|
ReachabilityUnknown Reachability = iota
|
|
|
|
// ReachabilityPublic indicates that the node is reachable from the
|
|
// public internet.
|
|
ReachabilityPublic
|
|
|
|
// ReachabilityPrivate indicates that the node is not reachable from the
|
|
// public internet.
|
|
//
|
|
// NOTE: This node may _still_ be reachable via relays.
|
|
ReachabilityPrivate
|
|
)
|
|
|
|
func (r Reachability) String() string {
|
|
str := [...]string{"Unknown", "Public", "Private"}
|
|
if r < 0 || int(r) >= len(str) {
|
|
return unrecognized
|
|
}
|
|
return str[r]
|
|
}
|
|
|
|
// ConnStats stores metadata pertaining to a given Conn.
|
|
type ConnStats struct {
|
|
Stats
|
|
// NumStreams is the number of streams on the connection.
|
|
NumStreams int
|
|
}
|
|
|
|
// Stats stores metadata pertaining to a given Stream / Conn.
|
|
type Stats struct {
|
|
// Direction specifies whether this is an inbound or an outbound connection.
|
|
Direction Direction
|
|
// Opened is the timestamp when this connection was opened.
|
|
Opened time.Time
|
|
// Limited indicates that this connection is Limited. It maybe limited by
|
|
// bytes or time. In practice, this is a connection formed over a circuit v2
|
|
// relay.
|
|
Limited bool
|
|
// Extra stores additional metadata about this connection.
|
|
Extra map[interface{}]interface{}
|
|
}
|
|
|
|
// StreamHandler is the type of function used to listen for
|
|
// streams opened by the remote side.
|
|
type StreamHandler func(Stream)
|
|
|
|
// Network is the interface used to connect to the outside world.
|
|
// It dials and listens for connections. it uses a Swarm to pool
|
|
// connections (see swarm pkg, and peerstream.Swarm). Connections
|
|
// are encrypted with a TLS-like protocol.
|
|
type Network interface {
|
|
Dialer
|
|
io.Closer
|
|
|
|
// SetStreamHandler sets the handler for new streams opened by the
|
|
// remote side. This operation is thread-safe.
|
|
SetStreamHandler(StreamHandler)
|
|
|
|
// NewStream returns a new stream to given peer p.
|
|
// If there is no connection to p, attempts to create one.
|
|
NewStream(context.Context, peer.ID) (Stream, error)
|
|
|
|
// Listen tells the network to start listening on given multiaddrs.
|
|
Listen(...ma.Multiaddr) error
|
|
|
|
// ListenAddresses returns a list of addresses at which this network listens.
|
|
ListenAddresses() []ma.Multiaddr
|
|
|
|
// InterfaceListenAddresses returns a list of addresses at which this network
|
|
// listens. It expands "any interface" addresses (/ip4/0.0.0.0, /ip6/::) to
|
|
// use the known local interfaces.
|
|
InterfaceListenAddresses() ([]ma.Multiaddr, error)
|
|
|
|
// ResourceManager returns the ResourceManager associated with this network
|
|
ResourceManager() ResourceManager
|
|
}
|
|
|
|
// Dialer represents a service that can dial out to peers
|
|
// (this is usually just a Network, but other services may not need the whole
|
|
// stack, and thus it becomes easier to mock)
|
|
type Dialer interface {
|
|
// Peerstore returns the internal peerstore
|
|
// This is useful to tell the dialer about a new address for a peer.
|
|
// Or use one of the public keys found out over the network.
|
|
Peerstore() peerstore.Peerstore
|
|
|
|
// LocalPeer returns the local peer associated with this network
|
|
LocalPeer() peer.ID
|
|
|
|
// DialPeer establishes a connection to a given peer
|
|
DialPeer(context.Context, peer.ID) (Conn, error)
|
|
|
|
// ClosePeer closes the connection to a given peer
|
|
ClosePeer(peer.ID) error
|
|
|
|
// Connectedness returns a state signaling connection capabilities
|
|
Connectedness(peer.ID) Connectedness
|
|
|
|
// Peers returns the peers connected
|
|
Peers() []peer.ID
|
|
|
|
// Conns returns the connections in this Network
|
|
Conns() []Conn
|
|
|
|
// ConnsToPeer returns the connections in this Network for given peer.
|
|
ConnsToPeer(p peer.ID) []Conn
|
|
|
|
// Notify/StopNotify register and unregister a notifiee for signals
|
|
Notify(Notifiee)
|
|
StopNotify(Notifiee)
|
|
}
|
|
|
|
// AddrDelay provides an address along with the delay after which the address
|
|
// should be dialed
|
|
type AddrDelay struct {
|
|
Addr ma.Multiaddr
|
|
Delay time.Duration
|
|
}
|
|
|
|
// DialRanker provides a schedule of dialing the provided addresses
|
|
type DialRanker func([]ma.Multiaddr) []AddrDelay
|