JavaScript Implementation of Block and BlockService
Clone or download

IPFS Block Service

standard-readme compliant Circle CI Coverage Status Dependency Status js-standard-style

IPFS implementation of the BlockService and Block data structure in JavaScript.

BlockService - A BlockService is a content-addressable store for blocks, providing an API for adding, deleting, and retrieving blocks. A BlockService is backed by an IPFS Repo as its datastore for blocks, and uses Bitswap to fetch blocks from the network.

│    BlockService   │
     ▼           ▼
┌─────────┐ ┌───────┐
│IPFS Repo│ |Bitswap│
└─────────┘ └───────┘

Lead Maintainer

Volker Mische

Table of Contents



> npm install ipfs-block-service



const BlockService = require('ipfs-block-service')


const BlockService = require('ipfs-block-service')
const Block = require('ipfs-block')
const multihashing = require('multihashing-async')
const IPFSRepo = require('ipfs-repo')  // storage repo

// setup a repo
const repo = new IPFSRepo('example')

// create a block
const data = new Buffer('hello world')
multihashing(data, 'sha2-256', (err, multihash) => {
  if (err) {
    throw err

  const cid = new CID(multihash)
  const block = new Block(data, cid)

  // create a service
  const bs = new BlockService(repo)

  // add the block, then retrieve it
  bs.put(block, (err) => {
    if (err) {
      throw err
    bs.get(cid, (err, b) => {
      if (err) {
        throw err
      console.log( ===
      // => true

Browser: Browserify, Webpack, other bundlers

var BlockService = require('ipfs-block-service')

Browser: <script> Tag

Loading this module through a script tag will make the IpfsBlockService obj available in the global namespace.

<script src=""></script>
<!-- OR -->
<script src=""></script>




Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.