Skip to content

IPNS with multiple resolvers #198

@aschmahmann

Description

@aschmahmann

Context

As noted in the IPNS spec there are currently two components of IPNS:

  • The IPNS record spec (related to the similarly proposed IPRS spec)
  • The IPNS protocol

The spec currently does not specify the routing system by which a user that wishes to publish or resolve an IPNS record may do so, instead it says:

a peer can use whatever routing system it supports to make the record accessible to the remaining peers of the network

However, in actual IPNS implementations (e.g. in go-ipfs and js-ipfs) there is an implicit assumption that addresses such as /ipns/$key or dweb:/ipns/$key will resolve in some standardized way. There's a dive into the world of dweb addressing by @lgierth and @lidel here.

Thus far we've run into minimal problems here despite having both DHT and PubSub based resolution systems. This is because the PubSub system relies on the DHT for initial content resolution (i.e. only using PubSub for publishing/retrieving updates that occur while the daemon is running) and we always publish updates to both the DHT and PubSub. This effectively makes the DHT the authoritative store of IPNS information, with PubSub just being used for faster propagation.

Upcoming Issues

Some of the current endeavors to increase IPNS performance will involve creating record delivery mechanisms that are not reliant on using the DHT to propagate the IPNS records (e.g. a persistent PubSub channel, or IPNS over DNS). As a result, it's time for us to put together a proposal that adds some clarity to issues including:

  • What is the protocol used when users lookup /ipns/$key?
  • If that routing mechanism isn't going to be declared in the spec will we have a specified way to declare which routing mechanism we're using? (e.g. /ipns/pubsub-backed-by-dht/$key or /ipns/$key-with-routing-info)
  • If not should we explicitly call out that /ipns like /ipld refers to content and pathing, but not to record retrieval or propagation?

Many of these issues were surfaced in a meeting on ongoing IPNS endeavors with notes at: ipfs/team-mgmt#948.

Thanks for your help and looking forward to hearing your thoughts: @Stebalien @pgte @satazor @vasco-santos @hugomrdias @jimpick @lidel @momack2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions