Skip to content

Instantly share code, notes, and snippets.

@lidel
Last active January 31, 2020 23:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lidel/ceef96f60f30308e3c07be95182c4c88 to your computer and use it in GitHub Desktop.
Save lidel/ceef96f60f30308e3c07be95182c4c88 to your computer and use it in GitHub Desktop.
Bird's-eye view of work related to IPFS moving to CIDv1 (https://github.com/ipfs/ipfs/issues/337)

base32

Migration to CIDv1: Bird's-eye view 🐦

Upstream issue: https://github.com/ipfs/ipfs/issues/337

Below table is tracking work related to move to CIDv1.

  • 🍎 = Not started
  • 🍊 = In progress
  • 🍏 = Complete
Scope PR/Issue Status Owner P
RFC
Handling of Alternative Multibases ipfs/kubo#5349 🍏 @kevina
How to handle CIDv0 as we migrate to CIDV1 ipfs/kubo#5291 🍎 ?
Do not return string CIDs from core ipfs-inactive/interface-js-ipfs-core#394 🍎 @alanshaw
Handling of CidV1/V0 at the bitswap level ipfs/kubo#5378 🍎 ?
Updates to the blockstore interface https://github.com/ipfs/go-ipfs-blockstore/issues/8 🍎 ?
Config option for specifying full default cidv1 parameters (AKA Reproducible CIDs) ipfs/kubo#5230 🍎 ?
RFC 0001: Text Peer Ids as CIDs libp2p/specs#209 🍏 @lidel
Tracking issue for peer IDs as cidv1b32 in libp2p libp2p/specs#216 🍊 ?
GO
META for go-ipfs ipfs/kubo#5358 🍊 ?
Allow add to IPFS and get base32 CIDv1 back via an option to specify base encoding (defaults do not change)
Provide new "cid" sub-command ipfs/kubo#5385 🍏 @kevina P0
Add global option to specify the multibase encoding (server side) ipfs/kubo#5789 🍏 @kevina P0
Retrieve blocks even if given using a different CID version (compatibility)
Add ability to retrieve blocks even if given using a different CID version ipfs/kubo#5285 🍏 @kevina P0
Switch CIDv1 to Base32
Switch CIDv1 from Base58 to Base32 (go-ipfs) ipfs/kubo#6220 🍊 @Stebalien P0
default cidv1 to base32 ipfs/go-cid#85 🍊 @Stebalien P1
Origin isolation for HTTP websites
Act as HTTP PROXY for http://<cidv1b32>.ipfs.localhost ipfs/kubo#5982 🍎 ? P1
Subdomain Gateway ipfs/kubo#6498 🍊 @Stebalien
Feat/gateway subdomains ipfs/kubo#6096 🍊 @Stebalien
IPNS/PeerID
IPNS: should work with case-insensitive identifiers (Base32) ipfs/kubo#5287 🍊 @lidel P0
multicodec: add IPLD codec for libp2p public keys multiformats/multicodec#131 🍏 @Stebalien
Add support for libp2p-key multicodec to go-cid ipfs/go-cid#86 🍏 @lidel
feat: support encoding/decoding peer IDs as CIDs in text libp2p/go-libp2p-core#41 🍊 @Stebalien
Refactor blockstore + DHT to work with bare multihashes instead of CIDs
META
Refactor blockstore to work with bare multihashes instead of CIDs ipfs/kubo#5231 🍎 ?
RFC: Handling of CidV1/V0 at the bitswap level ipfs/kubo#5378 🍎 ?
RFC: Handling of CidV1/V0 at the bitswap level ipfs/kubo#5378 🍎 ?
WIP: Use new blockstore that stores Multihashes and not CIDs ipfs/kubo#5510 🍊 ?
RFC: Change Blockstore to work with Multihashes instead of CIDs. ipfs/go-ipfs-blockstore#13 🍊 ?
WIP: Modify blockservice to work with Multihashes instead of CIDs. ipfs/go-blockservice#8 🍊 ?
WIP: Modify dag service to work with new multihash based blockservice. ipfs/go-merkledag#17 🍊 ?
WIP: Datastore keys are now based on Multihash not Cid. ipfs/go-ipfs-ds-help#4 🍊 ?
WIP: Change ContentRouting interface to work with Multihash's not CIDs. libp2p/go-libp2p-routing#33 🍊 ?
WIP: Changes to reflect the fact that Provide/FindProviders use multihashes libp2p/go-libp2p-kad-dht#203 🍊 ?
WIP: Changes to reflect the fact that Provide/FindProviders use multihashes libp2p/go-libp2p-pubsub-router#14 🍊 ?
WIP: Changes to reflect the fact that Provide/FindProviders now use multhases. libp2p/go-libp2p-routing-helpers#13 🍊 ?
WIP: Changes to reflect the fact that Provide/FindProviders use multhases. ipfs/go-bitswap#18 🍊 ?
WIP: Changes to reflect the fact that Provide/FindProviders use multihashes. ipfs/go-ipfs-routing#15 🍊 ?
Make CIDv1 the default
JS
META for js-ipfs: Make js-ipfs capable of working with cidv1b32 ipfs/js-ipfs#1440 🍊 @alanshaw P0
Allow add to IPFS and get base32 CIDv1 back via an option to specify base encoding (defaults do not change)
feat: adds --cid-base argument to stringify cids in different bases ipfs-inactive/js-ipfs-mfs#4 🍏 @achingbrain P0
feat: add cid command ipfs/js-ipfs#1560 🍏 @alanshaw P0
feat: cid base option ipfs/js-ipfs#1552 🍏 @alanshaw P0
Retrieve blocks even if given using a different CID version (compatibility)
feat: cid agnostic blockstore .get and .has ipfs/js-ipfs-repo#184 🍏 @alanshaw P0
Switch to using multihashes for DHT queries libp2p/js-libp2p-kad-dht#163 🍊 @achingbrain P2
Switch CIDv1 to Base32
Switch CIDv1 from Base58 to Base32 (js-ipfs) ipfs/js-ipfs#1995 🍊 @alanshaw P0
chore: update cids and ipld ipfs/js-ipfs#2050 🍊 @alanshaw P0
refactor: default to base32 encoding for v1 CIDs multiformats/js-cid#89 🍏 @alanshaw P0
Origin isolation for HTTP websites
Subdomain Gateway: support Host header ipfs/js-ipfs#2248 🍎 ? P0
Act as HTTP PROXY for http://<cidv1b32>.ipfs.localhost ipfs/js-ipfs#1877 🍎 ? P2
feat: act as HTTP PROXY ipfs/js-ipfs#2246 🍊 @alanshaw
IPNS/PeerID
feat: add libp2p-key and garlic32 to js-multicodec multiformats/js-multicodec#45 🍏 @lidel P0
Make CIDv1 the default
multiformats/js-cid#73 🍊 @alanshaw
ipld/js-ipld#193 🍊 @alanshaw
ipld/js-ipld-bitcoin#43 🍊 @alanshaw
ipld/js-ipld-dag-pb#115 🍊 @alanshaw
ipld/js-ipld-dag-cbor#96 🍊 @alanshaw
ipld/js-ipld-ethereum#47 🍊 @alanshaw
ipld/js-ipld-git#42 🍊 @alanshaw
ipld/js-ipld-raw#28 🍊 @alanshaw
ipld/js-ipld-zcash#35 🍊 @alanshaw
ipfs-inactive/js-ipfs-unixfs-importer#21 🍊 @alanshaw
ipfs-inactive/js-ipfs-unixfs-engine#235 🍊 @alanshaw
ipfs-inactive/js-ipfs-mfs#38 🍊 @alanshaw
ipfs/js-ipfs#1868 🍊 @alanshaw
multiformats/js-cid-tool#7 🍊 @alanshaw
ipfs/js-ipfs-bitswap#188 🍊 @alanshaw
ipfs/js-ipfs-bitswap#188 🍊 @alanshaw
ipld/js-ipld-block#44 🍊 @alanshaw
ipfs/js-ipfs-http-response#17 🍊 @alanshaw
ipfs/js-ipfs-repo#192 🍊 @alanshaw
ipfs-inactive/js-ipfs-http-client#949 🍊 @alanshaw
ipfs-shipyard/is-ipfs#29 🍊 @alanshaw
libp2p/js-libp2p-kad-dht#84 🍊 @alanshaw
INTEROP
Multicodec for libp2p keys multiformats/multicodec#130 🍏 @lidel
CIDv1 Base32 Interop Tests ipfs/interop#58 🍎 @lidel
META
docs: add cid-base and missing ls options for mfs operations ipfs-inactive/interface-js-ipfs-core#334 🍏 @achingbrain
test: cidBase option in resolve ipfs-inactive/interface-js-ipfs-core#396 🍏 @alanshaw
test: add CID version agnostic tests ipfs-inactive/interface-js-ipfs-core#413 🍏 @alanshaw
refactor: tests for CIDv1 base32 ipfs-inactive/interface-js-ipfs-core#444 🍊 @alanshaw
Tests specific to special handling on go-ipfs side / datastore/dht 🍎 ?
ipfs-companion
META ipfs/ipfs-companion#527 🍊 @lidel
Detect CID in subdomains ipfs/ipfs-companion#537 🍏 @lidel
ipfs-cluster
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment