helia
helia copied to clipboard
[🏆 Golden path scenario] Browser-authored content retrievable through the ipfs.io gateway via a pinning service
Done Criteria
A user can author content in their browser via Helia and have it retrievable by another machine through the ipfs.io gateway by relying on pinning services (but not preload nodes).
Why Important
This is a common usecase that users hit. Failure here feeds the narrative that "IPFS doesn't just work".
Notes
- This feedback has come in multiple places (e.g., HackFS). A public collection point is https://discuss.ipfs.tech/t/how-to-retrieve-content-uploaded-via-helia-using-the-ipfs-gateway/16582?u=sgtpooki
- "retrievability from the ipfs.io gateway" is used as a popular "stand in" for other nodes on the network.
- Discoverability of the content created in the browser so that the ipfs.io gateway can discover it will happen with a pinning service. We’re not relying on other mechanisms like:
- Direct reliable libp2p publishing to the "IPFS public DHT" from the browser
- Direct HTTP writing to an IPNI like cid.contact (/ingest/announce)
- Delegated HTTP /routing/v1 PUT support and endpoints that can use like routing.delegate.ipfs.tbd, cid.contact, etc.
- To make this path solid, we will support both:
-
Pin.origins - The Helia node can send its relayed address in
origins
if:- DCUtR is supported in js-libp2p
- pinning service speaks
- the relay protocol
- DCUtR
- A libp2p transport supported from the browser like WebTransport, WebRTC, or WSS
- PinStatus.delegates - This assumes the pinning service returns multiaddrs that the browser can dial (WebTransport, WebRTC, or WSS)
-
Pin.origins - The Helia node can send its relayed address in
- Per https://ipfs-shipyard.github.io/pinning-service-compliance/, at least a couple of pinning services seem compliant to rely enough on this (web3.storage and 4everland).
- Per above, this isn't a pure Helia issue. Tracking the usecase needs to go somewhere though, so I'm putting it Helia for now so we can link against it.
### Tasks
- [x] Helia pinning service library: https://github.com/ipfs/helia-remote-pinning/issues/1
- [ ] Helia pinning service example: https://github.com/ipfs-examples/helia-examples/issues/86
- [ ] TESTING??? How do we make sure we don't regress here?