ipfs

package module
v0.0.0-...-8b9b725 Latest Latest
Warning

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

Go to latest
Published: Apr 7, 2019 License: MIT Imports: 0 Imported by: 16

README ΒΆ

πŸŽ‰ Deprecated πŸŽ‰

This repository has been archived and deprecated as the upstream IPFS switched over to Go modules, making it possible to finally use IPFS from Go in an officially supported way!

Head over to https://github.com/ipfs/go-ipfs for the new code (minimum version of v0.4.20-rc1 is needed for Go modules).


Ungx-ed fork of go-ipfs

GoDoc

This repository is an unofficial fork of github.com/ipfs/go-ipfs, converted from a gx based project to a plain Go project. The goal is to act as an IPFS library that can be imported and used from Go apps without the need of switching all dependency management over to gx. As a bonus, this fork is compatible with GoDoc!

For a rundown of why gx is not the best solution at the moment, please see the rationale section behind the ungx project.

Differences from upstream

Upstream go-ipfs is both a gx based project, as well as depends on many third party gx based packages. To use it in plain Go projects, all gx packages need to be resolved into their original canonical versions, or need to be converted into non-gx ones.

This fork uses the following logic to ungx go-ipfs:

  • If a dependency has a plain Go canonical version (e.g. golang.org/x/net), the dependency is converted from an IPFS multihash into its canonical path and vendored into the standard vendor folder. This ensures they play nice with the usual package managers.
  • If a dependency is only available as a gx project (e.g. github.com/libp2p/go-libp2p), the dependency is converted from an IPFS multihash into its canonical path, but is moved into the gxlibs folder within the main repository. This ensures external packages can import them.

Two caveats were also needed to enable this fork:

  • If multiple versions of the same plain Go dependency is found, these cannot be vendored in. In such cases, all clashing dependencies are embedded into the gxlibs/gx/ipfs folder with their original IPFS multihashes. This retains the original behavior whilst still permitting imports.
  • If an embedded dependency contains canonical path constraints (e.g. golang.org/x/sys/unix), these constraints are blindly deleted from the dependency sources. Unfortunately this is the only way to allow external code to import them without Go failing the build.

The ungx-ing process is done automatically for the master branch in a nightly Travis cron job from the ungx branch in this repository. Upstream releases (i.e. tags) are not yet ungx-ed to prevent having to re-tag versions if a bug in ungx is discovered. Those will be added and tagged when the process is deemed reliable enough.

Demo

The hello-world of IPFS is retrieving the official welcome page from the network. With the IPFS command line client this looks something like:

$ ipfs cat QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB
Hello and Welcome to IPFS!

β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β• β–ˆβ–ˆβ•”β•β•β•  β•šβ•β•β•β•β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
β•šβ•β•β•šβ•β•     β•šβ•β•     β•šβ•β•β•β•β•β•β•
[...]

Doing the same thing from Go is a bit more involved as it entails creating an ephemeral in-process IPFS node and using that as a gateway to retrieve the welcome page:

package main

import (
	"context"
	"fmt"
	"io/ioutil"
	"log"

	"github.com/ipsn/go-ipfs/core"
	"github.com/ipsn/go-ipfs/core/coreapi"
	"github.com/ipsn/go-ipfs/core/coreapi/interface"
)

func main() {
	// Create a new IPFS network node
	node, err := core.NewNode(context.TODO(), &core.BuildCfg{Online: true})
	if err != nil {
		log.Fatalf("Failed to start IPFS node: %v", err)
	}
	path, _ := iface.ParsePath("QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB")

	// Resolve the IPFS welcome page
	reader, err := coreapi.NewCoreAPI(node).Unixfs().Get(context.TODO(), path)
	if err != nil {
		log.Fatalf("Failed to look up IPFS welcome page: %v", err)
	}
	// Retrieve and print the welcome page
	blob, err := ioutil.ReadAll(reader)
	if err != nil {
		log.Fatalf("Failed to retrieve IPFS welcome page: %v", err)
	}
	fmt.Println(string(blob))
}

However, after the dependencies are met, our pure Go IPFS code works flawlessly:

$ go get -v github.com/ipsn/go-ipfs/core
$ go run ipfs.go
Hello and Welcome to IPFS!

β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•”β•β•β•β•β•
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β• β–ˆβ–ˆβ•”β•β•β•  β•šβ•β•β•β•β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
β•šβ•β•β•šβ•β•     β•šβ•β•     β•šβ•β•β•β•β•β•β•
[...]
Proper dependencies

Although the above demo works correctly, running go get -v github.com/ipsn/go-ipfs/core is not for the faint of heart. It will place about 1193 packages into you GOPATH 😱. A much better solution is to use your favorite dependency manager!

Demo with govendor:

$ go get -u github.com/kardianos/govendor
$ govendor init
$ govendor fetch -v +missing
$ go run ipfs.go
[...]

Credits

This repository is maintained by PΓ©ter SzilΓ‘gyi (@karalabe), but authorship of all code contained inside belongs to the upstream go-ipfs project.

License

Same as upstream (MIT).

Documentation ΒΆ

Overview ΒΆ

IPFS is a global, versioned, peer-to-peer filesystem

There are sub-packages within the ipfs package for various low-level utilities, which are in turn assembled into:

core/...:

The low-level API that gives consumers all the knobs they need,
which we try hard to keep stable.

shell/...:

The high-level API that gives consumers easy access to common
operations (e.g. create a file node from a reader without wrapping
with metadata). We work really hard to keep this stable.

Then on top of the core/... and shell/... Go APIs, we have:

cmd/...:

Command-line executables

test/...:

Integration tests, etc.

To avoid cyclic imports, imports should never pull in higher-level APIs into a lower-level package. For example, you could import all of core and shell from cmd/... or test/..., but you couldn't import any of shell from core/....

Index ΒΆ

Constants ΒΆ

View Source
const ApiVersion = "/go-ipfs/" + CurrentVersionNumber + "/"
View Source
const CurrentVersionNumber = "0.4.20-dev"

CurrentVersionNumber is the current application's version literal

Variables ΒΆ

View Source
var CurrentCommit string

CurrentCommit is the current git commit, this is set as a ldflag in the Makefile

Functions ΒΆ

This section is empty.

Types ΒΆ

This section is empty.

Directories ΒΆ

Path Synopsis
blocks
blockstoreutil
Package blockstoreutil provides utility functions for Blockstores.
Package blockstoreutil provides utility functions for Blockstores.
cmd
ipfs
cmd/ipfs implements the primary CLI binary for ipfs
cmd/ipfs implements the primary CLI binary for ipfs
seccat
package main provides an implementation of netcat using the secio package.
package main provides an implementation of netcat using the secio package.
Package core implements the IpfsNode object and related methods.
Package core implements the IpfsNode object and related methods.
commands
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.
coreapi
Package coreapi provides direct access to the core commands in IPFS.
Package coreapi provides direct access to the core commands in IPFS.
corehttp
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.
exchange
Package filestore implements a Blockstore which is able to read certain blocks of data directly from its original location in the filesystem.
Package filestore implements a Blockstore which is able to read certain blocks of data directly from its original location in the filesystem.
pb
fuse
ipns
package fuse/ipns implements a fuse filesystem that interfaces with ipns, the naming system for ipfs.
package fuse/ipns implements a fuse filesystem that interfaces with ipns, the naming system for ipfs.
mount
package mount provides a simple abstraction around a mount point
package mount provides a simple abstraction around a mount point
readonly
package fuse/readonly implements a fuse filesystem to access files stored inside of ipfs.
package fuse/readonly implements a fuse filesystem to access files stored inside of ipfs.
gxlibs
github.com/bifurcation/mint
Read a generic "framed" packet consisting of a header and a This is used for both TLS Records and TLS Handshake Messages
Read a generic "framed" packet consisting of a header and a This is used for both TLS Records and TLS Handshake Messages
github.com/dgraph-io/badger
Package badger implements an embeddable, simple and fast key-value database, written in pure Go.
Package badger implements an embeddable, simple and fast key-value database, written in pure Go.
github.com/hsanjuan/go-libp2p-gostream
Package gostream allows to replace the standard net stack in Go with [LibP2P](https://github.com/libp2p/libp2p) streams.
Package gostream allows to replace the standard net stack in Go with [LibP2P](https://github.com/libp2p/libp2p) streams.
github.com/hsanjuan/go-libp2p-http
Package p2phttp allows to serve HTTP endpoints and make HTTP requests through LibP2P (https://github.com/libp2p/libp2p) using Go's standard "http" and "net" stacks.
Package p2phttp allows to serve HTTP endpoints and make HTTP requests through LibP2P (https://github.com/libp2p/libp2p) using Go's standard "http" and "net" stacks.
github.com/ipfs/go-bitswap
package bitswap implements the IPFS exchange interface with the BitSwap bilateral exchange protocol.
package bitswap implements the IPFS exchange interface with the BitSwap bilateral exchange protocol.
github.com/ipfs/go-bitswap/decision
package decision implements the decision engine for the bitswap service.
package decision implements the decision engine for the bitswap service.
github.com/ipfs/go-bitswap/wantlist
Package wantlist implements an object for bitswap that contains the keys that a given peer wants.
Package wantlist implements an object for bitswap that contains the keys that a given peer wants.
github.com/ipfs/go-block-format
Package blocks contains the lowest level of IPLD data structures.
Package blocks contains the lowest level of IPLD data structures.
github.com/ipfs/go-blockservice
package blockservice implements a BlockService interface that provides a single GetBlock/AddBlock interface that seamlessly retrieves data either locally or from a remote peer through the exchange.
package blockservice implements a BlockService interface that provides a single GetBlock/AddBlock interface that seamlessly retrieves data either locally or from a remote peer through the exchange.
github.com/ipfs/go-cid
Package cid implements the Content-IDentifiers specification (https://github.com/ipld/cid) in Go.
Package cid implements the Content-IDentifiers specification (https://github.com/ipld/cid) in Go.
github.com/ipfs/go-datastore/autobatch
Package autobatch provides a go-datastore implementation that automatically batches together writes by holding puts in memory until a certain threshold is met.
Package autobatch provides a go-datastore implementation that automatically batches together writes by holding puts in memory until a certain threshold is met.
github.com/ipfs/go-datastore/delayed
Package delayed wraps a datastore allowing to artificially delay all operations.
Package delayed wraps a datastore allowing to artificially delay all operations.
github.com/ipfs/go-datastore/examples
Package fs is a simple Datastore implementation that stores keys as directories and files, mirroring the key.
Package fs is a simple Datastore implementation that stores keys as directories and files, mirroring the key.
github.com/ipfs/go-datastore/failstore
Package failstore implements a datastore which can produce custom failures on operations by calling a user-provided error function.
Package failstore implements a datastore which can produce custom failures on operations by calling a user-provided error function.
github.com/ipfs/go-datastore/keytransform
Package keytransform introduces a Datastore Shim that transforms keys before passing them to its child.
Package keytransform introduces a Datastore Shim that transforms keys before passing them to its child.
github.com/ipfs/go-datastore/mount
Package mount provides a Datastore that has other Datastores mounted at various key prefixes and is threadsafe
Package mount provides a Datastore that has other Datastores mounted at various key prefixes and is threadsafe
github.com/ipfs/go-datastore/namespace
Package namespace introduces a namespace Datastore Shim, which basically mounts the entire child datastore under a prefix.
Package namespace introduces a namespace Datastore Shim, which basically mounts the entire child datastore under a prefix.
github.com/ipfs/go-datastore/retrystore
Package retrystore provides a datastore wrapper which allows to retry operations.
Package retrystore provides a datastore wrapper which allows to retry operations.
github.com/ipfs/go-ds-flatfs
Package flatfs is a Datastore implementation that stores all objects in a two-level directory structure in the local file system, regardless of the hierarchy of the keys.
Package flatfs is a Datastore implementation that stores all objects in a two-level directory structure in the local file system, regardless of the hierarchy of the keys.
github.com/ipfs/go-ds-measure
Package measure provides a Datastore wrapper that records metrics using github.com/ipfs/go-metrics-interface
Package measure provides a Datastore wrapper that records metrics using github.com/ipfs/go-metrics-interface
github.com/ipfs/go-ipfs-blockstore
Package blockstore implements a thin wrapper over a datastore, giving a clean interface for Getting and Putting block objects.
Package blockstore implements a thin wrapper over a datastore, giving a clean interface for Getting and Putting block objects.
github.com/ipfs/go-ipfs-blocksutil
Package blocksutil provides utility functions for working with Blocks.
Package blocksutil provides utility functions for working with Blocks.
github.com/ipfs/go-ipfs-chunker
Package chunk implements streaming block splitters.
Package chunk implements streaming block splitters.
github.com/ipfs/go-ipfs-cmds
Package cmds helps building both standalone and client-server applications.
Package cmds helps building both standalone and client-server applications.
github.com/ipfs/go-ipfs-config
package config implements the ipfs config file datastructures and utilities.
package config implements the ipfs config file datastructures and utilities.
github.com/ipfs/go-ipfs-ds-help
Package dshelp provides utilities for parsing and creating datastore keys used by go-ipfs
Package dshelp provides utilities for parsing and creating datastore keys used by go-ipfs
github.com/ipfs/go-ipfs-exchange-interface
Package exchange defines the IPFS exchange interface
Package exchange defines the IPFS exchange interface
github.com/ipfs/go-ipfs-exchange-offline
package offline implements an object that implements the exchange interface but returns nil values to every request.
package offline implements an object that implements the exchange interface but returns nil values to every request.
github.com/ipfs/go-ipfs-posinfo
Package posinfo wraps offset information used by ipfs filestore nodes
Package posinfo wraps offset information used by ipfs filestore nodes
github.com/ipfs/go-ipfs-pq
Package pq implements a priority queue.
Package pq implements a priority queue.
github.com/ipfs/go-ipfs-routing/mock
Package mockrouting provides a virtual routing server.
Package mockrouting provides a virtual routing server.
github.com/ipfs/go-ipfs-routing/none
Package nilrouting implements a routing client that does nothing.
Package nilrouting implements a routing client that does nothing.
github.com/ipfs/go-ipfs-routing/offline
Package offline implements IpfsRouting with a client which is only able to perform offline operations.
Package offline implements IpfsRouting with a client which is only able to perform offline operations.
github.com/ipfs/go-ipfs-util
Package util implements various utility functions used within ipfs that do not currently have a better place to live.
Package util implements various utility functions used within ipfs that do not currently have a better place to live.
github.com/ipfs/go-log
Package log is the logging library used by IPFS (https://github.com/ipfs/go-ipfs).
Package log is the logging library used by IPFS (https://github.com/ipfs/go-ipfs).
github.com/ipfs/go-merkledag
Package merkledag implements the IPFS Merkle DAG data structures.
Package merkledag implements the IPFS Merkle DAG data structures.
github.com/ipfs/go-merkledag/traverse
Package traverse provides merkledag traversal functions
Package traverse provides merkledag traversal functions
github.com/ipfs/go-path
Package path contains utilities to work with ipfs paths.
Package path contains utilities to work with ipfs paths.
github.com/ipfs/go-path/resolver
Package resolver implements utilities for resolving paths within ipfs.
Package resolver implements utilities for resolving paths within ipfs.
github.com/ipfs/go-unixfs
Package unixfs implements a data format for files in the IPFS filesystem It is not the only format in ipfs, but it is the one that the filesystem assumes
Package unixfs implements a data format for files in the IPFS filesystem It is not the only format in ipfs, but it is the one that the filesystem assumes
github.com/ipfs/go-unixfs/hamt
Package hamt implements a Hash Array Mapped Trie over ipfs merkledag nodes.
Package hamt implements a Hash Array Mapped Trie over ipfs merkledag nodes.
github.com/ipfs/go-unixfs/importer
Package importer implements utilities used to create IPFS DAGs from files and readers.
Package importer implements utilities used to create IPFS DAGs from files and readers.
github.com/ipfs/go-unixfs/importer/balanced
Package balanced provides methods to build balanced DAGs, which are generalistic DAGs in which all leaves (nodes representing chunks of data) are at the same distance from the root.
Package balanced provides methods to build balanced DAGs, which are generalistic DAGs in which all leaves (nodes representing chunks of data) are at the same distance from the root.
github.com/ipfs/go-unixfs/importer/trickle
Package trickle allows to build trickle DAGs.
Package trickle allows to build trickle DAGs.
github.com/ipfs/go-unixfs/io
Package io implements convenience objects for working with the ipfs unixfs data format.
Package io implements convenience objects for working with the ipfs unixfs data format.
github.com/ipfs/go-unixfs/mod
Package mod provides DAG modification utilities to, for example, insert additional nodes in a unixfs DAG or truncate them.
Package mod provides DAG modification utilities to, for example, insert additional nodes in a unixfs DAG or truncate them.
github.com/ipfs/interface-go-ipfs-core
Package iface defines IPFS Core API which is a set of interfaces used to interact with IPFS nodes.
Package iface defines IPFS Core API which is a set of interfaces used to interact with IPFS nodes.
github.com/jbenet/go-is-domain
Package isdomain package allows users to check whether strings represent domain names.
Package isdomain package allows users to check whether strings represent domain names.
github.com/jbenet/goprocess
Package goprocess introduces a Process abstraction that allows simple organization, and orchestration of work.
Package goprocess introduces a Process abstraction that allows simple organization, and orchestration of work.
github.com/jbenet/goprocess/periodic
Package periodic is part of github.com/jbenet/goprocess.
Package periodic is part of github.com/jbenet/goprocess.
github.com/jbenet/goprocess/ratelimit
Package ratelimit is part of github.com/jbenet/goprocess.
Package ratelimit is part of github.com/jbenet/goprocess.
github.com/libp2p/go-buffer-pool
Package pool provides a sync.Pool equivalent that buckets incoming requests to one of 32 sub-pools, one for each power of 2, 0-32.
Package pool provides a sync.Pool equivalent that buckets incoming requests to one of 32 sub-pools, one for each power of 2, 0-32.
github.com/libp2p/go-libp2p-crypto
Package crypto implements various cryptographic utilities used by ipfs.
Package crypto implements various cryptographic utilities used by ipfs.
github.com/libp2p/go-libp2p-kad-dht
Package dht implements a distributed hash table that satisfies the ipfs routing interface.
Package dht implements a distributed hash table that satisfies the ipfs routing interface.
github.com/libp2p/go-libp2p-kbucket
package kbucket implements a kademlia 'k-bucket' routing table.
package kbucket implements a kademlia 'k-bucket' routing table.
github.com/libp2p/go-libp2p-loggables
Package loggables includes a bunch of transaltor functions for commonplace/stdlib objects.
Package loggables includes a bunch of transaltor functions for commonplace/stdlib objects.
github.com/libp2p/go-libp2p-peer
Package peer implements an object used to represent peers in the ipfs network.
Package peer implements an object used to represent peers in the ipfs network.
github.com/libp2p/go-libp2p-peerstore/addr
Package addr provides utility functions to handle peer addresses.
Package addr provides utility functions to handle peer addresses.
github.com/libp2p/go-libp2p-pubsub
The pubsub package provides facilities for the Publish/Subscribe pattern of message propagation, also known as overlay multicast.
The pubsub package provides facilities for the Publish/Subscribe pattern of message propagation, also known as overlay multicast.
github.com/libp2p/go-libp2p-routing
package routing defines the interface for a routing system used by ipfs.
package routing defines the interface for a routing system used by ipfs.
github.com/libp2p/go-libp2p-secio
Package secio is used to encrypt `go-libp2p-conn` connections.
Package secio is used to encrypt `go-libp2p-conn` connections.
github.com/libp2p/go-libp2p/p2p/host/relay
The relay package contains host implementations that automatically advertise relay addresses when the presence of NAT is detected.
The relay package contains host implementations that automatically advertise relay addresses when the presence of NAT is detected.
github.com/libp2p/go-libp2p/p2p/net/mock
Package mocknet provides a mock net.Network to test with.
Package mocknet provides a mock net.Network to test with.
github.com/libp2p/go-libp2p/p2p/test/reconnects
Package reconnect tests connect -> disconnect -> reconnect works
Package reconnect tests connect -> disconnect -> reconnect works
github.com/libp2p/go-reuseport
Package reuseport provides Listen and Dial functions that set socket options in order to be able to reuse ports.
Package reuseport provides Listen and Dial functions that set socket options in order to be able to reuse ports.
github.com/libp2p/go-testutil/ci
Package ci implements some helper functions to use during tests.
Package ci implements some helper functions to use during tests.
github.com/libp2p/go-testutil/ci/travis
Package travis implements some helper functions to use during tests.
Package travis implements some helper functions to use during tests.
github.com/libp2p/go-ws-transport
Package websocket implements a websocket based transport for go-libp2p.
Package websocket implements a websocket based transport for go-libp2p.
github.com/lucas-clemente/quic-go/internal/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
github.com/lucas-clemente/quic-go/internal/mocks/ackhandler
Package mockackhandler is a generated GoMock package.
Package mockackhandler is a generated GoMock package.
github.com/lucas-clemente/quic-go/internal/mocks/crypto
Package mockcrypto is a generated GoMock package.
Package mockcrypto is a generated GoMock package.
github.com/multiformats/go-multiaddr
Package multiaddr provides an implementation of the Multiaddr network address format.
Package multiaddr provides an implementation of the Multiaddr network address format.
github.com/multiformats/go-multiaddr-net
Package manet provides Multiaddr specific versions of common functions in stdlib's net package.
Package manet provides Multiaddr specific versions of common functions in stdlib's net package.
github.com/multiformats/go-multihash
Package multihash is the Go implementation of https://github.com/multiformats/multihash, or self-describing hashes.
Package multihash is the Go implementation of https://github.com/multiformats/multihash, or self-describing hashes.
github.com/multiformats/go-multihash/opts
Package opts helps to write commands which may take multihash options.
Package opts helps to write commands which may take multihash options.
github.com/multiformats/go-multistream
Package multistream implements a simple stream router for the multistream-select protocoli.
Package multistream implements a simple stream router for the multistream-select protocoli.
github.com/whyrusleeping/base32
Package base32 implements base32 encoding as specified by RFC 4648.
Package base32 implements base32 encoding as specified by RFC 4648.
github.com/whyrusleeping/cbor/go
CBOR is IETF RFC 7049, the "Concise Binary Object Representation" http://tools.ietf.org/html/rfc7049 In can be thought of as "binary JSON" but is a superset and somewhat richer representation than JSON.
CBOR is IETF RFC 7049, the "Concise Binary Object Representation" http://tools.ietf.org/html/rfc7049 In can be thought of as "binary JSON" but is a superset and somewhat richer representation than JSON.
github.com/whyrusleeping/chunker
Package chunker implements Content Defined Chunking (CDC) based on a rolling Rabin Checksum.
Package chunker implements Content Defined Chunking (CDC) based on a rolling Rabin Checksum.
github.com/whyrusleeping/go-notifier
Package notifier provides a simple notification dispatcher meant to be embedded in larger structres who wish to allow clients to sign up for event notifications.
Package notifier provides a simple notification dispatcher meant to be embedded in larger structres who wish to allow clients to sign up for event notifications.
github.com/whyrusleeping/go-notifier/Godeps/_workspace/src/github.com/jbenet/goprocess
Package goprocess introduces a Process abstraction that allows simple organization, and orchestration of work.
Package goprocess introduces a Process abstraction that allows simple organization, and orchestration of work.
Package periodic is part of github.com/jbenet/goprocess.
Package ratelimit is part of github.com/jbenet/goprocess.
github.com/whyrusleeping/go-smux-multistream
package multistream implements a peerstream transport using go-multistream to select the underlying stream muxer
package multistream implements a peerstream transport using go-multistream to select the underlying stream muxer
Package namesys implements resolvers and publishers for the IPFS naming system (IPNS).
Package namesys implements resolvers and publishers for the IPFS naming system (IPNS).
pin
Package pin implements structures and methods to keep track of which objects a user wants to keep stored locally.
Package pin implements structures and methods to keep track of which objects a user wants to keep stored locally.
gc
Package gc provides garbage collection for go-ipfs.
Package gc provides garbage collection for go-ipfs.
Package provider implements structures and methods to provide blocks, keep track of which blocks are provided, and to allow those blocks to be reprovided.
Package provider implements structures and methods to provide blocks, keep track of which blocks are provided, and to allow those blocks to be reprovided.
fsrepo
package fsrepo TODO explain the package roadmap...
package fsrepo TODO explain the package roadmap...
thirdparty
dir
notifier
Package notifier provides a simple notification dispatcher meant to be embedded in larger structres who wish to allow clients to sign up for event notifications.
Package notifier provides a simple notification dispatcher meant to be embedded in larger structres who wish to allow clients to sign up for event notifications.
pollEndpoint
pollEndpoint is a helper utility that waits for a http endpoint to be reachable and return with http.StatusOK
pollEndpoint is a helper utility that waits for a http endpoint to be reachable and return with http.StatusOK

Jump to

Keyboard shortcuts

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