IPFS Block Service JavaScript Implementation
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][repo] as its datastore for blocks, and uses Bitswap to fetch blocks from the network.
┌────────────────────┐
│ BlockService │
└────────────────────┘
│
┌─────┴─────┐
▼ ▼
┌─────────┐ ┌───────┐
│IPFS Repo│ |Bitswap│
└─────────┘ └───────┘
Table of Contents
Install
npm
> npm i ipfs-block-service
Usage
Node.js
const BlockService = require('ipfs-block-service')
Example
const BlockService = require('ipfs-block-service')
const Block = require('ipfs-block')
const IPFSRepo = require('ipfs-repo')
const Store = require(interface-pull-blob-store') // in-memory store
// setup a repo
var repo = new IPFSRepo('example', { stores: Store })
// create a block
const block = new Block('hello world)
console.log(block.data)
console.log(block.key)
const bs = new BlockService(repo)
bs.addBlock(block, function (err) {
bs.getBlock(block.key, function (err, b) {
console.log(block.data.toString() === b.data.toString())
})
})
outputs
<Buffer 68 65 6c 6c 6f 20 77 61 72 6c 64>
<Buffer 12 20 db 3c 15 23 3f f3 84 8f 42 fe 3b 74 78 90 90 5a 80 7e a6 ef 2b 6d 2f 3c 8b 2c b7 ae be 86 3c 4d>
true
Browser: Browserify, Webpack, other bundlers
The code published to npm that gets loaded on require is in fact a ES5
transpiled version with the right shims added. This means that you can require
it and use with your favourite bundler without having to adjust asset management
process.
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="https://npmcdn.com/ipfs-block-service/dist/index.min.js"></script>
<script src="https://npmcdn.com/ipfs-block-service/dist/index.js"></script>
You can find the API documentation here
Contribute
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.
License
MIT