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 | ||||
