Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add information on the features supported by the public IPFS gateways #1877

Merged
merged 5 commits into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/styles/pln-ignore.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ data
data's
Datastore
datastore
dialback
dClimate
deduplicate
Denylist
Expand Down Expand Up @@ -283,3 +284,4 @@ WiFi
WS
WSS
YouTube
Yamux
23 changes: 23 additions & 0 deletions docs/concepts/public-utilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,29 @@ From there, an internal system extracts the relevant information from the reques

Your browser may have a local cache of the content in question and might not reflect that something has been blocked on the gateways. To avoid browser caching, attempt to view the content using your browser's incognito or private mode. You can also prevent caching issues by using a command-line tool such as Curl or Wget.

### Supported Features

The above public gateways support the following:

- `ipfs.io` and `dweb.link` support the [full set of IPFS Gateway specifications](https://specs.ipfs.tech/http-gateways/).
- `trustless-gateway.link` supports only the [Trustless Gateway subset of the specification](https://specs.ipfs.tech/http-gateways/trustless-gateway/).

They support HTTP clients reaching them over both ipv4 and ipv6 addresses

The underlying IPFS nodes backing the gateways support the following mutable identifiers under the `/ipns` namespace:
- IPNS Public Keys, e.g. `ipfs.io/ipns/k51q....`
- DNSLink for all IANA registered domains as well as `.crypto` and `.eth`, e.g. `vitalik-eth.ipns.dweb.link`
lidel marked this conversation as resolved.
Show resolved Hide resolved

The underlying IPFS nodes backing the gateways support retrieving data from peers that:
- Have either ipv4 or ipv6 addresses
- Are either reachable over the public internet or are accessible via libp2p's relay-v2 protocol and reach out to the gateway nodes via dialback
- Support one of the following libp2p transport configurations:
- QUIC-v1
- TCP or WS or WSS, Yamux, TLS or Noise
2color marked this conversation as resolved.
Show resolved Hide resolved
- WebTransport
Copy link
Member

Choose a reason for hiding this comment

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

WebTransport is only for browsers as far as I'm aware.

Suggested change
- WebTransport

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Copy link
Member

Choose a reason for hiding this comment

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

Pretty cool, but would be misleading. As far as I'm aware there's no reason a go peer would use WebTransport over QUIC. It would be misleading as it might wrongly suggest that browsers with WebTransport can be dialled over WebTransport.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

As far as I'm aware there's no reason a go peer would use WebTransport over QUIC

IIRC WebTransport would better help you hide you were using libp2p since it just looks like a regular HTTP/3 connection. However, independent of that some environments other than browsers might make WebTransport available before QUIC due to needing lower level access to QUIC (as opposed to WebTransport which for libp2p's case runs a Noise handshake on top to establish which PeerID is associated with the connection).

- Support the Bitswap protocol (any versions 1 through 1.2)
lidel marked this conversation as resolved.
Show resolved Hide resolved
- Have either advertised their data to the Amino DHT, or have advertised to IPNI such that their data has been indexed by [cid.contact](https://cid.contact)

## Other Public Gateways

Additionally, there's a community-maintained [tool for finding and testing public gateways](https://ipfs.github.io/public-gateway-checker/).
Expand Down