-
Notifications
You must be signed in to change notification settings - Fork 16
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
Add support for additional retrieval protocols (HTTP) #73
Comments
IMO it's both unhelpful and not responsible to allow configurability without documentation to support it. For example, allowing someone to add http-trustless-gateway is not responsible without explaining that:
This ^ is related to building the start of caniuse.com equivalent for IPFS tooling, just to help people understand what interoperability means.... but it can quickly turn into a bigger ordeal than I think we have time for right now. IMO it's also fine for us to limit what the tool (or at least the deployment on check.ipfs.network) does to support what people think of when they think of IPFS (i.e. "mainnet") to reduce confusion. In practice my recommendation for http trustless gateway is to do one of:
My inclination is towards 1, but if people think 2 would be helpful that's fine by me. |
Related research/experiment started in ipfs/boxo#747 |
transport-ipfs-gateway-http
I think we could start implementing HTTP probing based on work from ipfs/boxo#747. Some loose implementation notes about important parts:
|
Background
Currently ipfs-check is limited to supporting Bitswap checks. It would be useful to add support for other transfer protocols that are already prolific, e.g.
transport-ipfs-gateway-http
, for which there are many providers in the IPNI.Part of this should include allowing users in the UI to choose which protocols to test as part of the check.
Checking HTTP providers
As discussed in #70,
Challenges
existing interfaces
We currently rely on the
FindProvidersAsync(context.Context, cid.Cid, int) <-chan peer.AddrInfo
method to handle getting providers from both the IPNI and the DHT concurrently. The challenge is that we don't have protocol information in that channel. We will likely need a helper method to convert the iterator from the Routing V1 client into a channel that returns results (rather thanpeer.AddrInfo
) so that we can rely on the same concurrency primitives while having the protocol information.Problems with
transport-ipfs-gateway-http
providersLet's take the example you gave of the CID:
bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi
.It has two providers with the
"transport-ipfs-gateway-http"
protocol:A couple of problems with this one specifically:
A deeper investigation revealed that this is a Boost server, which uses frisbii as its gateway server which doesn't support HEAD
only-if-cached
requests. I have opened an issue for that.The text was updated successfully, but these errors were encountered: