js-ipfs 0.23.0 released

by David Dias & Victor Bjelkholm on 2017-03-24

Today we’re happy to announce that we have released js-ipfs version 0.23.0.

Highlights

Installation

npm install --save ipfs@0.23.0

Full Details

✨ A new way API is born, welcome to .dag

The new DAG API (available through ipfs.dag) offers a new way to create and operate over any MerkleGraph, today it has support for the IPFS MerkleDAG (referenced as dag-cbor), the new dag-cbor (which lets you drop json into IPFS seamlessly) and a preview of Ethereum.

You can learn how to use it through: - docs - examples - video running through the demos

If you are new to the Merkle Forest, make sure to watch @jbenet’s talk “Enter the Merkle Forest”

πŸ™ŒπŸ½ Interoperability with go-ipfs is here!

This took us more time than what we had initially expected, however, now it is a thing of the past, you can dial to a go-ipfs node and exchange files without going through complicated set ups, it just worksβ„’

If you would like to know more about the issue we faced, you can find more info here: “Stream Muxing issues between go-ipfs and js-ipfs are a thing of the past”

Note: Interop is only fully available with go-ipfs 0.4.7 and onwards, if you haven’t updated yet, please do so by visiting http://dist.ipfs.io/.

🌍 js-ipfs will now also bootstrap with bootstrap nodes as well

Same way that go-ipfs does, now your jsipfs daemon will bootstrap itself with the bootstraper nodes. This was easy once we had the Stream Muxing figured out.

> jsipfs swarm peers
/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ
/ip4/104.236.176.52/tcp/4001/ipfs/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z
/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM
/ip4/162.243.248.213/tcp/4001/ipfs/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm
/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu
/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64
/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd
/ip4/178.62.61.185/tcp/4001/ipfs/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3
/ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx

⚑️ Starting an IPFS instance is easier than ever

We’ve heard you, starting an ipfs instance was cumbersome 3 step process, but not anymore!

Now, all you need to do to start an instance is:

const IPFS = require('ipfs')
const node = new IPFS()

node.on('start', () => {
  // Your node is now ready to use \o/
})

That’s it! See more Usage examples in the README

πŸ’Ύ Datastore is here!

We’ve migrated away from pull-blob-store/blob-store to datastore, the storage interface that is used in go-ipfs. This was a requirement towards implementing the DHT on js-ipfs.

πŸ‘©πŸ½β€πŸ« New tutorial! Transfer files between browser and desktop nodes

We’ve build a new Tutorial in how to use js-ipfs that explain how to interact with other nodes, from connecting, discovering and exchanging files. The tutorial is the most bare bones possible (i.e no frameworks) so that it focus on IPFS.

Find this tutorial at our examples folder

πŸ‘πŸ½ jsipfs add –wrap-with-directory is now a feature!

Thanks to @harshjv, now you can add files wrapped in a directory just like go-ipfs. Example:

> jsipfs add <filename> --wrap-with-directory
> jsipfs add <filename -w # alias

Exciting future (soonβ„’)

Here is a quick list of things that we will be heads down after this release