Skip to content

docs: add exploration document#1

Merged
vasco-santos merged 1 commit intomainfrom
docs/add-exploration-document
May 22, 2025
Merged

docs: add exploration document#1
vasco-santos merged 1 commit intomainfrom
docs/add-exploration-document

Conversation

@vasco-santos
Copy link
Copy Markdown
Owner

No description provided.

@vasco-santos vasco-santos merged commit a4e911c into main May 22, 2025
@vasco-santos vasco-santos deleted the docs/add-exploration-document branch May 22, 2025 11:50
Comment thread EXPLORATION.md
Comment on lines +77 to +85
- The `multiaddr` MAY include application level private tuples to specify the retrieval protocols supported (e.g. `/ip4/.../p2p/qmfoo/retrieval/bitswap/retrieval/http`), in order to enable the client to avoid unecessary interactions with providers (e.g. no need for protocol probing or identification). Including it is encouraged for low-latency, non-interactive lookups.

### Retrieval Protocol Code Registry (Informative)

| Protocol Code | Description |
| ------------- | ------------------------- |
| http | Trustless IPFS Gateway v1 |
| bitswap | IPFS Bitswap protocol |
| graphsync | GraphSync protocol |
Copy link
Copy Markdown

@lidel lidel May 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unsure how realistic value added by /retrieval/ in multiaddr is – may be safer to decouple it from ?provider, which is less controversial.

I think /retrieval/ in multiaddr won't avoid extra probing / lookups, unless we are more strict about what http and bitswap mean:

  • With /retrieval/bitswap the client does not know which version of bitswap is supported by the other end. It has to do libp2p identify to learn that.
  • Not sure what /retrieval/http mean. What is Trustless IPFS Gateway v1? I assume you mean some subset of https://specs.ipfs.tech/http-gateways/trustless-gateway/ ? application/vnd.ipld.raw?
    • If you assume application/vnd.ipld.car, I am raising the same concern I had in Add a transport code to indicate content is provided via Trustless HTTP Gateway multiformats/multicodec#321 (comment)
      • a Block is the main primitive, not a CAR. CAR requires server to understand DAG traversal and codecs, usually requires server to understand UnixFS and other PL-specific data structures. Block does not, and is easier to implement in vendor-agnostic way, and support future data formats with it.
      • In the future we may see block-only gateways and split the trustless gateway spec into separate documents to make it clear.
    • In practice client will either do probing first, or send request with Accept blindly assuming the other end support application/vnd.ipld.raw, but had to write this here for posterity :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants