Documentation
¶
Overview ¶
package core implements the IpfsNode object and methods for constructing and properly setting it up.
Index ¶
- Constants
- Variables
- func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error)
- type BootstrapConfig
- type ConfigOption
- type HostOption
- type IpfsNode
- type Mounts
- type NodeBuilder
- func (nb *NodeBuilder) Build(ctx context.Context) (*IpfsNode, error)
- func (nb *NodeBuilder) Offline() *NodeBuilder
- func (nb *NodeBuilder) Online() *NodeBuilder
- func (nb *NodeBuilder) SetHost(ho HostOption) *NodeBuilder
- func (nb *NodeBuilder) SetRepo(r repo.Repo) *NodeBuilder
- func (nb *NodeBuilder) SetRouting(ro RoutingOption) *NodeBuilder
- type RoutingOption
Constants ¶
const IpnsValidatorTag = "ipns"
Variables ¶
var DefaultBootstrapConfig = BootstrapConfig{
MinPeerThreshold: 4,
Period: 30 * time.Second,
ConnectionTimeout: (30 * time.Second) / 3,
}
DefaultBootstrapConfig specifies default sane parameters for bootstrapping.
var ErrAlreadyBuilt = errors.New("this builder has already been used")
var ErrNotEnoughBootstrapPeers = errors.New("not enough bootstrap peers to bootstrap")
ErrNotEnoughBootstrapPeers signals that we do not have enough bootstrap peers to bootstrap correctly.
Functions ¶
func Bootstrap ¶
func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error)
Bootstrap kicks off IpfsNode bootstrapping. This function will periodically check the number of open connections and -- if there are too few -- initiate connections to well-known bootstrap peers. It also kicks off subsystem bootstrapping (i.e. routing).
Types ¶
type BootstrapConfig ¶
type BootstrapConfig struct {
// MinPeerThreshold governs whether to bootstrap more connections. If the
// node has less open connections than this number, it will open connections
// to the bootstrap nodes. From there, the routing system should be able
// to use the connections to the bootstrap nodes to connect to even more
// peers. Routing systems like the IpfsDHT do so in their own Bootstrap
// process, which issues random queries to find more peers.
MinPeerThreshold int
// Period governs the periodic interval at which the node will
// attempt to bootstrap. The bootstrap process is not very expensive, so
// this threshold can afford to be small (<=30s).
Period time.Duration
// ConnectionTimeout determines how long to wait for a bootstrap
// connection attempt before cancelling it.
ConnectionTimeout time.Duration
// BootstrapPeers is a function that returns a set of bootstrap peers
// for the bootstrap process to use. This makes it possible for clients
// to control the peers the process uses at any moment.
BootstrapPeers func() []peer.PeerInfo
}
BootstrapConfig specifies parameters used in an IpfsNode's network bootstrapping process.
func BootstrapConfigWithPeers ¶
func BootstrapConfigWithPeers(pis []peer.PeerInfo) BootstrapConfig
type ConfigOption ¶
type ConfigOption func(ctx context.Context) (*IpfsNode, error)
func OnlineWithOptions ¶
func OnlineWithOptions(r repo.Repo, router RoutingOption, ho HostOption) ConfigOption
type HostOption ¶
type HostOption func(ctx context.Context, id peer.ID, ps peer.Peerstore) (p2phost.Host, error)
var DefaultHostOption HostOption = constructPeerHost
type IpfsNode ¶
type IpfsNode struct {
// Self
Identity peer.ID // the local node's identity
Repo repo.Repo
// Local node
Pinning pin.Pinner // the pinning manager
Mounts Mounts // current mount state, if any.
PrivateKey ic.PrivKey // the local node's private Key
// Services
Peerstore peer.Peerstore // storage for other Peer instances
Blockstore bstore.Blockstore // the block store (lower level)
Blocks *bserv.BlockService // the block service, get/add blocks.
DAG merkledag.DAGService // the merkle dag service, get/add objects.
Resolver *path.Resolver // the path resolution system
// Online
PeerHost p2phost.Host // the network host (server+client)
Bootstrapper io.Closer // the periodic bootstrapper
Routing routing.IpfsRouting // the routing system. recommend ipfs-dht
Exchange exchange.Interface // the block exchange + strategy (bitswap)
Namesys namesys.NameSystem // the name system, resolves paths to hashes
Diagnostics *diag.Diagnostics // the diagnostics service
Reprovider *rp.Reprovider // the value reprovider system
ctxgroup.ContextGroup
// contains filtered or unexported fields
}
IpfsNode is IPFS Core module. It represents an IPFS instance.
func NewIPFSNode ¶
func NewIPFSNode(parent context.Context, option ConfigOption) (*IpfsNode, error)
func NewMockNode ¶
func NewMockNode() (*IpfsNode, error)
NewMockNode constructs an IpfsNode for use in tests.
func (*IpfsNode) LoadPrivateKey ¶
func (n *IpfsNode) LoadPrivateKey() error
func (*IpfsNode) OnlineMode ¶
func (n *IpfsNode) OnlineMode() bool
func (*IpfsNode) SetupOfflineRouting ¶
func (n *IpfsNode) SetupOfflineRouting() error
SetupOfflineRouting loads the local nodes private key and uses it to instantiate a routing system in offline mode. This is primarily used for offline ipns modifications.
type Mounts ¶
type Mounts struct {
Ipfs mount.Mount
Ipns mount.Mount
}
Mounts defines what the node's mount state is. This should perhaps be moved to the daemon or mount. It's here because it needs to be accessible across daemon requests.
type NodeBuilder ¶
type NodeBuilder struct {
// contains filtered or unexported fields
}
NodeBuilder is an object used to generate an IpfsNode
func NewNodeBuilder ¶
func NewNodeBuilder() *NodeBuilder
func (*NodeBuilder) SetRouting ¶
func (nb *NodeBuilder) SetRouting(ro RoutingOption) *NodeBuilder
type RoutingOption ¶
type RoutingOption func(context.Context, p2phost.Host, ds.ThreadSafeDatastore) (routing.IpfsRouting, error)
var DHTOption RoutingOption = constructDHTRouting