I know the dweb will mainly use Ethereum and IPFS, but what if a different protocol works better for a given use case? Maybe for a certain app it would be better to use DAT, GUN Database, RChain, EOS, or Holochain. Will any dweb compatible app need to only use Ethereum and IPFS or something built on top of them? Or can an app use Holochain and still be accessible from a dweb browser?
I bring this up because I feel that for the Dweb to become the new norm, it’s necessary to allow Dapp developers to choose whichever data storage and delivery protocols best fit their use cases. Forcing them to only use Ethereum+IPFS or whatever could be built on top of them would limit the types of apps that could run in a Dweb browser.
IPFS is a building block in an ecosystem. There is no lock-in no neither Ethereum or IPFS itself. Ideally, there will be interoperability, at least we make a strong effort:
- IPFS uses libp2p and libp2p can be used for any peer-2-peer protocol so other custom apps can be built on top.
- IPFS uses IPLD for the data layer. IPLD knows how to understand arbitrary data like ethereum or bitcoin blocks. It can well learn to undestand anything Merkle-DAG-based…
- Multiformats defines common future-proof encoding for things like addresses or Content Identifiers, independently from the above/
Things like Ethereum domains (ENS) should be able to provide resolution not into into ipfs addresses, but anything dweb://. Other chains, don’t have a more disadvantaged position when interacting with IPFS than Ethereum itself. tl;dr: just a building block. Which blocks you put in your building is up to the dApp developer.
Thanks for the info. However this leads to another question: How will future dweb browsers support all of the different blockchains and p2p protocols? It doesn’t seem realistic for browser developers to hardcode every new protocol into the browser. And while plugins may have been acceptable in the days of Flash Player and Java Applets, they will just confuse and frustrate users today. Is there some other more seamless method I’m unaware of?