Multiaddr Format Change: /ipfs -> /p2p

Libp2p is replacing all multiaddrs of the form /ipfs/QmFoo (old-style) with /p2p/QmFoo (new-style). The /ipfs prefix his an historical artifact from the days before libp2p was split out of IPFS.

All libp2p implementations have supported parsing new-style multiaddrs for at least 5 months (see the timeline). We are now entering the second phase of this transition and will:

  1. Deprecate the old-style (without removing support).
  2. Start formatting addresses using the new-style by default.

Impact

  • This change does not affect the network or binary representation of multiaddrs, just the textual representation.
  • This change will not affect network interoperability.
  • Old nodes (see below) will not be able to parse textual new-style multiaddrs. Specifically, ipfs swarm connect /p2p/QmFoobar will not work on go-ipfs releases before 0.4.16 or js-ipfs releases before 0.34.

Timeline

Phase 1: Parsing Support

  • :white_check_mark: go-libp2p - June 26, 2018 (tag gx/v6.0.5)
  • :white_check_mark: go-ipfs - July 13, 2018 (0.4.16)
  • :white_check_mark: rust-libp2p - Since the beginning.
  • :white_check_mark: js-libp2p - April 12, 2019 (0.25.0)
  • :white_check_mark: js-ipfs - May 22, 2019 (0.36.0)

Phase 2: Default

  • :white_check_mark: go-libp2p
  • :x: go-ipfs (landing in 0.5.0)
  • :white_check_mark: rust-libp2p - always
  • :white_check_mark: js-libp2p
  • :white_check_mark: js-ipfs
2 Likes