A fully decentralised, easy accessible app

3 minute read Modified:

Unstoppable Web 3.0 App with IPFS, OrbitDB and the tor-protocol in any browser.
Table of Contents

The vision

Imagine an application that could do it all… Something between reddit, instagram, telegram and eBay. Now imagine everyone on this platform can be anonymous - no IP log, no nothing. The application would not be served from a single server, instead it would be decentralised and accessible through a regular browser. This means, that anyone can participate and communicate / buy / sell anything they want. Because of its decentralised nature, the application could not be stopped or shut down by a government entities. That’s going to allow everyone on this planet to begin engaging directly with each other on the regular Internet and bypassing a lot of middle man that kept us away from each other for so long. We can have direct engagement now. This is the revolution! It evens the playing field…

The execution

Without questioning why you would build something like that, let’s talk about how you would build it.

Database

Of course you need a database for this app. But it can not be a traditional database hosted on a server. Instead it has to be a database hosted on multiple nodes and the participating clients. A decentralised database with conflict-free replicated data types, so that replicas can be updated independently and concurrently without coordination between the replicas. This specification narrows it down to two possible peer to peer databases: OrbitDB and GUN. The former uses IPFS and the latter uses WebSockets as a way to store the data. The problem with these two (in fact probably any p2p database) is, that they require in the case of IPFS a bootstrapping and GUN a signaling server. The IP addresses of these servers would be known publicly and can therefore be blocked by the authorities. But maybe we found a solution to this…

Removing the achilles heel

While digging through the code of IPFS I found this discussion about censorship resistance. One comment suggested a couple of methods for querying a list of available bootstrap nodes. This is a mediocre, not fail-proof solution. Aymeric Vitte finally jumps into the conversation and suggests implementing a project of his, node-Tor, to antonymies the IP addresses of the bootstrapping servers and peers. It is a javascript open source implementation of the Tor protocol on server side and inside browsers. It is not fully production ready but could be the answer to the final problem.

Decentralised Identity

Finally we need a way to authenticate the users. The W3C published a decentralised identity standard and iota picked it up and is working on making a SDK based on iota called identity.ts.

Verdict

Sooner or later our vision will come true. We are discussing and probably soon actually starting to build a completely decentralised, easy accessible web 3.0 application. If you want to be a part, please contact me.