IPFS Merkle DAG JavaScript Implementation
JavaScript Protocol Buffer
Clone or download
Pull request Compare This branch is 27 commits behind ipfs:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
graphs
src
test
.gitignore
.npmignore
.travis.yml
LICENSE.md
README.md
package.json

README.md

IPFS Merkle DAG JavaScript Implementation

Dependency Status js-standard-style

JavaScript Implementation of the DAGService and DAGNode data structure

Architecture

┌────────────────────┐
│   DAGService       │
└────────────────────┘
           │
           ▼
┌────────────────────┐
│   BlockService     │
└────────────────────┘

DAGService - The DAGService offers an interface to interact directly with a MerkleDAG object (composed by one or more DAGNodes that are linked), using the BlockService to store and fetch the DAGNodes as it needs them

BlockService - The BlockService uses IPFS Repo as the local datastore for blocks and an IPFS Exchange compliant implementation to fetch blocks from the network.

A DAGNode and DAGLink are data structures made available on this module.

Usage

$ npm i ipfs-merkle-dag
const ipfsMDAG = require('ipfs-merkle-dag')

// then, to access each of the components
ipfsMDAG.DAGService
ipfsMDAG.DAGNode
ipfsMDAG.DAGLink

DAGNode

Create a new DAGLink

var link = new ipfsMDAG.DAGLink(<name>, <size>, <hash>)

Create a new DAGNode

var node = new ipfsMDAG.DAGNode([<data>, <[links]>])
addNodeLink

creates a link on node A to node B by using node B to get its multihash

addRawLink

creates a link on node A to node B by using directly node B multihash

updateNodeLink

updates a link on the node. caution this method returns a copy of the MerkleDAG node

removeNodeLink

removes a link from the node by name

removeNodeLinkByHash

removes a link from the node by the hash of the linked node

copy

creates a copy of the MerkleDAG Node

size

(property) size of the node, in bytes

links

(property) an array of DAGLinks belonging to the node

multihash

returns the multihash (default: sha2-256)

marshal

returns a protobuf serialized version, compatible with go-ipfs MerkleDAG

unMarshal

deserializes a node encoded using protobuf

(used internally) getPBNode

used internally

(used internally) makeLink

used internally

DAGService

add

stores the node

get

fetches a node by its multihash

getRecursive

fetches a node and all of its links (if possible)

remove

deletes a node

License

LICENSE