URL safe CIDs, refs commands, DOM File support and more!
A wild and excitable JS #IPFS 0.36 just darted across the street and into the npm module store ππ¨. It's got 𧬠Base32 encoded v1 CIDs, π refs and refs local commands, π support for adding DOM File objects and loads more! https://t.co/zIFEfQX325
β Alan Shaw (@_alanshaw) May 22, 2019
# π¦ Highlights
# 𧬠Base32 encoding for v1 CIDs
As a stepping stone towards switching to CIDv1 by default for all CIDs, we're shipping a small change to v1 CIDs that means their string form is base32
encoded instead of base58btc
. So, instead of:
$ jsipfs add --cid-version 1 guardian.jpg
added zb2rhk6GMPQF3hfzwXTaNYFLKomMeC6UXdUt6jZKPpeVirLtV guardian.jpg
You'll now get back a base32
encoded CID:
$ jsipfs add --cid-version 1 guardian.jpg
added bafkreibu6pkzh33dfwfa3bg3twih7uiohu6d6cr34txljekdn3cvwoujiu guardian.jpg
You can read more about this change here (opens new window).
PR: https://github.com/ipfs/js-ipfs/pull/2050
# π Added refs and refs local commands
We've added the refs
and refs local
commands to the core, CLI and HTTP API. These commands allow you to list out all the CIDs referenced by a given DAG node or all the CIDs in your local repo. You can even choose the display format.
PR: https://github.com/ipfs/js-ipfs/pull/2004
# π Support for adding DOM File objects
Finally! You can just add a File
(opens new window) to IPFS without having to jump through hoops converting it to a Buffer
first. Sensational!
A File
, by the way, is what you'll get back from a <input type="file">
or the drag and drop API, so being able to easily take that file and add it to IPFS makes onboarding new frontend devs way easier (as well as way more convenient for all you old frontend devs π).
PR: https://github.com/ipfs/js-ipfs/pull/2013
# π¬ MDNS discovery compatibility
The libp2p discovery module for finding IPFS nodes over MDNS has been updated so that your JS IPFS node is now able to find Go IPFS nodes on the local network too. It's a backwards compatible change so older nodes will still be able to find your node and you'll still be able to find them.
PR: https://github.com/libp2p/js-libp2p-mdns/pull/80
# π€ 28% faster stream multiplexing
We switched the multiplexing implementation to one that's simpler, smaller and faster. We're estimating it to be around 28% faster than the old implementation (opens new window).
PR: https://github.com/ipfs/js-ipfs/pull/1884
# β© Gateway improvements
The IPFS HTTP gateway that JS IPFS exposes when run as a daemon in Node.js has been upgraded to support a number of HTTP features like conditional requests, byte range requests as well as getting some bug fixes, mini features and other improvements. There's too much to list here but check out the PR for and in depth description of what's changed.
PR: https://github.com/ipfs/js-ipfs/pull/1989
# π Pubsub message signing
Messages sent over Pubsub will now be automatically signed by the initial publisher, and included as a signature property on each Pubsub message. IPFS and Libp2p will be verifying the signatures of Pubsub messages by default in future releases, which will enable us to verify the authenticity of all messages sent over the network before they are processed. Verification is not yet required by default, but it will be in future releases, and all unsigned messages will not be processed or forwarded.
PR: https://github.com/libp2p/js-libp2p/pull/362
# π API Changes
- BREAKING: The default string encoding for version 1 CIDs has changed to
base32
- BREAKING: IPLD formats have been updated to the latest versions. IPLD nodes returned by
ipfs.dag
andipfs.object
commands have significant breaking changes. If you are using these commands in your application you are likely to encounter the following changes todag-pb
nodes (the default node type that IPFS creates):DAGNode
properties have been renamed as follows:data
=>Data
links
=>Links
size
=>size
(Note: no change)
- Additionally, the
Links
property of aDAGNode
now returns plain JS objects withHash
,Name
andTsize
properties, NOTDAGLink
instances DAGLink
properties have been renamed as follows:cid
=>Hash
name
=>Name
size
=>Tsize
- See CHANGELOGs for each IPLD format for it's respective changes, you can read more about the
dag-pb
changes in the CHANGELOG (opens new window)
- Commands
refs
andrefs local
have been added to core, the CLI and the HTTP API - Support for DOM File (opens new window) objects has been added to
ipfs.add
(opens new window)
# β€οΈ Huge thank you to everyone that made this release possible
In alphabetical order, here are all the humans that contributed to the release:
- Adam UhlΓΕ (opens new window) (1 PR, 3 issues, 1 review, 1 comment)
- Agent of User (opens new window) (5 comments)
- Alan Shaw (opens new window) (21 PRs, 5 issues, 59 reviews, 126 comments)
- Alex Potsides (opens new window) (16 PRs, 7 issues, 14 reviews, 14 comments)
- AndrΓ© Cruz (opens new window) (1 comment)
- AndrΓ© Medeiros (opens new window) (1 comment)
- Arie Trouw (opens new window) (1 issue)
- Beeno Tung (opens new window) (2 comments)
- bleonard252 (opens new window) (1 comment)
- bruinxs (opens new window) (1 issue, 1 comment)
- David Dias (opens new window) (5 comments)
- Davit Barbakadze (opens new window) (5 comments)
- Despoinis (opens new window) (2 issues, 3 comments)
- Dietrich Ayala (opens new window) (1 PR, 2 issues, 2 comments)
- Diogo Silva (opens new window) (1 PR)
- dirkmc (opens new window) (5 PRs, 3 issues, 46 reviews, 60 comments)
- edoo (opens new window) (1 comment)
- Francis Gulotta (opens new window) (1 comment)
- Friedel Ziegelmayer (opens new window) (1 review)
- Gopalakrishna Palem (opens new window) (3 PRs, 1 issue, 3 reviews, 5 comments)
- Guilherme Gervasio (opens new window) (1 comment)
- Guo Liu (opens new window) (1 issue, 1 comment)
- Guy Sviry (opens new window) (2 PRs, 2 issues, 15 comments)
- Henrique Dias (opens new window) (1 PR)
- Hugo Dias (opens new window) (5 PRs, 4 issues, 6 reviews, 17 comments)
- Irakli Gozalishvili (opens new window) (1 PR, 3 reviews, 3 comments)
- Ishan Joshi (opens new window) (1 issue)
- Jacob Heun (opens new window) (12 PRs, 3 issues, 55 reviews, 66 comments)
- Jake Hemmerle (opens new window) (3 comments)
- Jared Wright (opens new window) (1 issue)
- Jonybang (opens new window) (1 PR, 3 issues, 8 comments)
- jzstern (opens new window) (1 comment)
- Kavanaugh Latiolais (opens new window) (3 comments)
- Keith Smith (opens new window) (2 issues)
- kumavis (opens new window) (9 PRs, 16 issues, 8 reviews, 53 comments)
- Lorenzo Setale (opens new window) (2 comments)
- Εukasz Magiera (opens new window) (1 review, 1 comment)
- Maciej KrΓΌger (opens new window) (1 review, 11 comments)
- Marcin Rataj (opens new window) (2 PRs, 4 issues, 11 reviews, 13 comments)
- Mark Robert Henderson (opens new window) (2 issues)
- Mars Robertson (opens new window) (1 issue)
- Matt Ober (opens new window) (1 issue, 2 comments)
- Michael Bradley (opens new window) (1 PR, 1 issue, 5 comments)
- Michael MurΓ© (opens new window) (2 comments)
- Mikeal Rogers (opens new window) (1 issue, 8 reviews, 1 comment)
- Mikerah (opens new window) (1 comment)
- Mitra Ardron (opens new window) (2 issues, 2 comments)
- MonarthS (opens new window) (1 issue)
- Nate Foss (opens new window) (1 issue, 1 comment)
- nijynot (opens new window) (1 PR)
- Nikhil-Bathula (opens new window) (1 issue, 3 comments)
- Oli Evans (opens new window) (1 review, 15 comments)
- Pedro Teixeira (opens new window) (2 reviews)
- pinanklakhani (opens new window) (1 issue)
- pldespaigne (opens new window) (1 issue, 1 comment)
- Portia Burton (opens new window) (1 review)
- pruflyos (opens new window) (1 issue)
- reasv (opens new window) (2 issues, 2 comments)
- Rod Vagg (opens new window) (76 reviews, 8 comments)
- sachaaaaa (opens new window) (1 PR)
- ShareTheWorld (opens new window) (1 issue, 2 comments)
- Shivam Rawat (opens new window) (1 PR)
- Steven Allen (opens new window) (1 PR, 1 review, 4 comments)
- Vasco Santos (opens new window) (16 PRs, 5 issues, 24 reviews, 26 comments)
- Volker Mische (opens new window) (17 PRs, 3 issues, 23 reviews, 49 comments)
- William LeGate (opens new window) (3 comments)
- X5 Engine (opens new window) (2 comments)
- ζε°ζ (opens new window) (1 issue, 4 comments)
# ππ½ Want to contribute?
Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started:
- Check the issues with the
help wanted
label in the js-ipfs repo (opens new window) - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands
- Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built
- Join the discussion at http://discuss.ipfs.tech/ and help users finding their answers.
- Join the β‘οΈβΏβ Core Dev Team Weekly Sync ππ½ (opens new window) and be part of the Sprint action!
# βοΈ Do you have questions?
The best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.tech (opens new window). We are also available at the #ipfs
channel on Freenode.