Documentation ¶
Overview ¶
Package core implements the IpfsNode object and related methods.
Packages underneath core/ provide a (relatively) stable, low-level API to carry out most IPFS-related tasks. For more details on the other interfaces and how core/... fits into the bigger IPFS picture, see:
$ godoc github.com/ipfs/go-ipfs
Index ¶
- Constants
- Variables
- func Bootstrap(n *IpfsNode, cfg BootstrapConfig) (io.Closer, error)
- func Resolve(ctx context.Context, nsys namesys.NameSystem, r *resolver.Resolver, ...) (ipld.Node, error)
- func ResolveIPNS(ctx context.Context, nsys namesys.NameSystem, p path.Path) (path.Path, error)
- type BootstrapConfig
- type BuildCfg
- type ConstructPeerHostOpts
- type DiscoveryOption
- type HostOption
- type IpfsNode
- type Mounts
- type RoutingOption
Constants ¶
const DefaultIpnsCacheSize = 128
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 ErrNoNamesys = errors.New(
"core/resolve: no Namesys on IpfsNode - can't resolve ipns entry")
ErrNoNamesys is an explicit error for when an IPFS node doesn't (yet) have a name system
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).
func Resolve ¶ added in v0.3.2
func Resolve(ctx context.Context, nsys namesys.NameSystem, r *resolver.Resolver, p path.Path) (ipld.Node, error)
Resolve resolves the given path by parsing out protocol-specific entries (e.g. /ipns/<node-key>) and then going through the /ipfs/ entries and returning the final node.
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() []pstore.PeerInfo }
BootstrapConfig specifies parameters used in an IpfsNode's network bootstrapping process.
func BootstrapConfigWithPeers ¶
func BootstrapConfigWithPeers(pis []pstore.PeerInfo) BootstrapConfig
type BuildCfg ¶ added in v0.3.8
type BuildCfg struct { // If online is set, the node will have networking enabled Online bool // ExtraOpts is a map of extra options used to configure the ipfs nodes creation ExtraOpts map[string]bool // If permanent then node should run more expensive processes // that will improve performance in long run Permanent bool // DisableEncryptedConnections disables connection encryption *entirely*. // DO NOT SET THIS UNLESS YOU'RE TESTING. DisableEncryptedConnections bool // If NilRepo is set, a repo backed by a nil datastore will be constructed NilRepo bool Routing RoutingOption Host HostOption Repo repo.Repo }
type ConstructPeerHostOpts ¶ added in v0.4.8
type ConstructPeerHostOpts struct { AddrsFactory p2pbhost.AddrsFactory DisableNatPortMap bool DisableRelay bool EnableRelayHop bool ConnectionManager ifconnmgr.ConnManager }
type DiscoveryOption ¶ added in v0.3.2
type HostOption ¶
type HostOption func(ctx context.Context, id peer.ID, ps pstore.Peerstore, options ...libp2p.Option) (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 PNetFingerprint []byte // fingerprint of private network // Services Peerstore pstore.Peerstore // storage for other Peer instances Blockstore bstore.GCBlockstore // the block store (lower level) Filestore *filestore.Filestore // the filestore blockstore BaseBlocks bstore.Blockstore // the raw blockstore, no filestore wrapping GCLocker bstore.GCLocker // the locker used to protect the blockstore during gc Blocks bserv.BlockService // the block service, get/add blocks. DAG ipld.DAGService // the merkle dag service, get/add objects. Resolver *resolver.Resolver // the path resolution system Reporter metrics.Reporter Discovery discovery.Service FilesRoot *mfs.Root RecordValidator record.Validator // 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 Provider provider.Provider // the value provider system Reprovider *rp.Reprovider // the value reprovider system IpnsRepub *ipnsrp.Republisher AutoNAT *autonat.AutoNATService PubSub *pubsub.PubSub PSRouter *psrouter.PubsubValueStore DHT *dht.IpfsDHT P2P *p2p.P2P // Flags IsOnline bool // Online is set when networking is enabled. IsDaemon bool // Daemon is set when running on a long-running daemon. // contains filtered or unexported fields }
IpfsNode is IPFS Core module. It represents an IPFS instance.
func (*IpfsNode) Bootstrap ¶
func (n *IpfsNode) Bootstrap(cfg BootstrapConfig) error
Bootstrap will set and call the IpfsNodes bootstrap function.
func (*IpfsNode) GetKey ¶ added in v0.4.5
GetKey will return a key from the Keystore with name `name`.
func (*IpfsNode) HandlePeerFound ¶ added in v0.3.2
HandlePeerFound attempts to connect to peer from `PeerInfo`, if it fails logs a warning log.
type Mounts ¶
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 RoutingOption ¶
type RoutingOption func(context.Context, p2phost.Host, ds.Batching, record.Validator) (routing.IpfsRouting, error)
var DHTClientOption RoutingOption = constructClientDHTRouting
var DHTOption RoutingOption = constructDHTRouting
var NilRouterOption RoutingOption = nilrouting.ConstructNilRouting
Directories ¶
Path | Synopsis |
---|---|
Package commands implements the ipfs command interface Using github.com/ipfs/go-ipfs/commands to define the command line and HTTP APIs.
|
Package commands implements the ipfs command interface Using github.com/ipfs/go-ipfs/commands to define the command line and HTTP APIs. |
Package coreapi provides direct access to the core commands in IPFS.
|
Package coreapi provides direct access to the core commands in IPFS. |
Package corehttp provides utilities for the webui, gateways, and other high-level HTTP interfaces to IPFS.
|
Package corehttp provides utilities for the webui, gateways, and other high-level HTTP interfaces to IPFS. |