p2p

package
v0.5.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Nov 9, 2022 License: Apache-2.0 Imports: 40 Imported by: 6

Documentation

Index

Constants

View Source
const EnvCustomNetwork = "CELESTIA_CUSTOM"

EnvCustomNetwork is the environment variable name used for setting a custom network.

Variables

View Source
var ErrInvalidNetwork = errors.New("params: invalid network")

ErrInvalidNetwork is thrown when unknown network is used.

Functions

func AddrsFactory

func AddrsFactory(announce []string, noAnnounce []string) func() (_ p2pconfig.AddrsFactory, err error)

AddrsFactory returns a constructor for AddrsFactory.

func BlockService

func BlockService(bs blockstore.Blockstore, ex exchange.Interface) blockservice.BlockService

BlockService constructs IPFS's BlockService for fetching arbitrary Merkle structures.

func ConnectionGater

func ConnectionGater(ds datastore.Batching) (*conngater.BasicConnectionGater, error)

ConnectionGater constructs a BasicConnectionGater.

func ConnectionManager

func ConnectionManager(cfg Config, bpeers Bootstrappers) (coreconnmgr.ConnManager, error)

ConnectionManager provides a constructor for ConnectionManager.

func ConstructModule

func ConstructModule(tp node.Type, cfg *Config) fx.Option

ConstructModule collects all the components and services related to p2p.

func ContentRouting

func ContentRouting(r routing.PeerRouting) routing.ContentRouting

ContentRouting constructs nil content routing, as for our use-case existing ContentRouting mechanisms, e.g DHT, are unsuitable

func DataExchange

func DataExchange(params bitSwapParams) (exchange.Interface, blockstore.Blockstore, error)

DataExchange provides a constructor for IPFS block's DataExchange over BitSwap.

func Flags

func Flags() *flag.FlagSet

Flags gives a set of p2p flags.

func GenesisFor added in v0.5.0

func GenesisFor(net Network) (string, error)

GenesisFor reports a hash of a genesis block for a given network. Genesis is strictly defined and can't be modified.

func ID

func ID(key crypto.PrivKey, pstore peerstore.Peerstore) (peer.ID, error)

func Key

func Key(kstore keystore.Keystore) (crypto.PrivKey, error)

Key provides a networking private key and PeerID of the node.

func Listen

func Listen(listen []string) func(host host.Host) (err error)

Listen returns invoke function that starts listening for inbound connections with libp2p.Host.

func ParseFlags

func ParseFlags(
	cmd *cobra.Command,
	cfg *Config,
) error

ParseFlags parses P2P flags from the given cmd and saves them to the passed config.

func PeerRouting

func PeerRouting(cfg Config, params routingParams) (routing.PeerRouting, error)

PeerRouting provides constructor for PeerRouting over DHT. Basically, this provides a way to discover peer addresses by respecting public keys.

func PeerStore

func PeerStore() (peerstore.Peerstore, error)

PeerStore constructs a PeerStore.

func PubSub

func PubSub(cfg Config, params pubSubParams) (*pubsub.PubSub, error)

PubSub provides a constructor for PubSub protocol with GossipSub routing.

func RoutedHost

func RoutedHost(base HostBase, r routing.PeerRouting) host.Host

RoutedHost constructs a wrapped Host that may fallback to address discovery, if any top-level operation on the Host is provided with PeerID(Hash(PbK)) only.

func WithHost

func WithHost(hst host.Host) fx.Option

WithHost sets custom Host's data for p2p networking.

func WithP2PKey

func WithP2PKey(key crypto.PrivKey) fx.Option

WithP2PKey sets custom Ed25519 private key for p2p networking.

func WithP2PKeyStr

func WithP2PKeyStr(key string) fx.Option

WithP2PKeyStr sets custom hex encoded Ed25519 private key for p2p networking.

Types

type Bootstrappers added in v0.5.0

type Bootstrappers []peer.AddrInfo

Bootstrappers is a type definition for nodes that will be used as bootstrappers.

func BootstrappersFor added in v0.5.0

func BootstrappersFor(net Network) (Bootstrappers, error)

BootstrappersFor returns address information of bootstrap peers for a given network.

type Config

type Config struct {
	// ListenAddresses - Addresses to listen to on local NIC.
	ListenAddresses []string
	// AnnounceAddresses - Addresses to be announced/advertised for peers to connect to
	AnnounceAddresses []string
	// NoAnnounceAddresses - Addresses the P2P subsystem may know about, but that should not be announced/advertised,
	// as undialable from WAN
	NoAnnounceAddresses []string
	// TODO(@Wondertan): This should be a build-time parameter. See https://github.com/celestiaorg/celestia-node/issues/63
	// Bootstrapper is flag telling this node is a bootstrapper.
	Bootstrapper bool
	// MutualPeers are peers which have a bidirectional peering agreement with the configured node.
	// Connections with those peers are protected from being trimmed, dropped or negatively scored.
	// NOTE: Any two peers must bidirectionally configure each other on their MutualPeers field.
	MutualPeers []string
	// PeerExchange configures the node, whether it should share some peers to a pruned peer.
	// This is enabled by default for Bootstrappers.
	PeerExchange bool
	// ConnManager is a configuration tuple for ConnectionManager.
	ConnManager               ConnManagerConfig
	RoutingTableRefreshPeriod time.Duration
}

Config combines all configuration fields for P2P subsystem.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns default configuration for P2P subsystem.

func (*Config) Validate

func (cfg *Config) Validate() error

Validate performs basic validation of the config.

type ConnManagerConfig

type ConnManagerConfig struct {
	// Low and High are watermarks governing the number of connections that'll be maintained.
	Low, High int
	// GracePeriod is the amount of time a newly opened connection is given before it becomes subject to pruning.
	GracePeriod time.Duration
}

ConnManagerConfig configures connection manager.

func DefaultConnManagerConfig

func DefaultConnManagerConfig() ConnManagerConfig

DefaultConnManagerConfig returns defaults for ConnManagerConfig.

type HostBase

type HostBase host.Host

func Host

func Host(cfg Config, params hostParams) (HostBase, error)

Host returns constructor for Host.

type Network added in v0.5.0

type Network string

Network is a type definition for DA network run by Celestia Node.

const (
	// DefaultNetwork is the default network of the current build.
	DefaultNetwork = Arabica
	// Arabica testnet. See: celestiaorg/networks.
	Arabica Network = "arabica-1"
	// Mamaki testnet. See: celestiaorg/networks.
	Mamaki Network = "mamaki"
	// Private can be used to set up any private network, including local testing setups.
	Private Network = "private"
	// BlockTime is a network block time.
	// TODO @renaynay @Wondertan (#790)
	BlockTime = time.Second * 30
)

NOTE: Every time we add a new long-running network, it has to be added here.

func ParseNetwork added in v0.5.0

func ParseNetwork(cmd *cobra.Command) (Network, error)

ParseNetwork tries to parse the network from the flags and environment, and returns either the parsed network or the build's default network

func (Network) Validate added in v0.5.0

func (n Network) Validate() error

Validate the network.

Jump to

Keyboard shortcuts

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