Problems of Decentralised Applications

And how we are solving them.

Radicle Society
6 min readJul 2, 2019

This a review of some the problems we have encountered so far in building dbid.io — a peer to peer marketplace and auction site.

Banner for dBid

Problem 1: Choose the Right Framework

Genuinely decentralised apps require foundations that provide two core features;

  • Self owned identity
  • Decentralised user data

These are difficult problems and its unrealistic for every project to solve these problems independently. After taking a close look at how projects in the Ethereum eco-system are working we realised smart contracts don’t provide the answers to these questions. User data is far too massive to be stored on chain. While smart contracts are a valuable tool in the d-kit they don’t touch the sides of self owned identity and user storage.

The Blockstack project by contrast lays down the conditions needed to solve both of these key issues — self owned identities are human readable strings timestamped on the bitcoin blockchain. User data is decentralised by combining existing data storage infrastructure; dropbox, s3, azure, disk etc with cryptography to create abundant self owned secure user storage — a solution known as Gaia storage. The two together form a layer two blockchain solution known as the atlas network which provides incorruptible pointers to user data on an app specific basis.

So Blockstack is the starting point for our story and allows us to develop with the grain of a growing community of developers and enthusiasts. This isn’t to say the job is done. A lot of work is needed to build this out and many obstacles lie on the path to the decentralised internet of the future. What follows are some of those we are traversing at dbid.

Problem 2: Search and Discoverability

One thing we take for granted, coming to this brave new world from the conventional internet, is search. Performant, sortable, filtered search results are one one of the big cogs in the heart of the machine. But how do you order, sort and filter user data when when you don’t have everything stored in a nice big fat centralised database that, like a genie in a bottle, obeys your every whim?

Before answering this we need to tackle a related issue..

Encrypted vs Unencrypted User Data

The first thing to bear in mind is that Blockstacks Gaia system is flexible enough to allow an app to store data in user storage either encrypted or unencrypted. This means as d-app builders we can discern between data that is clearly meant to be shared and data that should be encrypted (with the users public key). Obviously if you want to sell your keyboard you need potential buyers to be able to find it.

In this scenario dbid.io stores the meta data and photos you upload unencrypted. Your shipping address by contrast only needs to be shown to a buyer once they have paid — so it will be stored in your storage encrypted with your public key meaning no-one, (including the app developers) can see it. But how then does the buyer see it? Well when the buyer has paid they re-encrypt their shipping details with the sellers public key (meaning the seller alone can decrypt it).

Gaia makes all this possible with simple api calls to the blockstack browser thats running on your machine — so nothing is transmitted across the internet and all encryption/decryption happens at source.

You were saying about Search?

This brings us back to building a search engine over decentralised data. This works by indexing the public meta-data in a stateless centralised search index. There are many out of the box tools for building search indexes such as lucene and elasticsearch which our project and others such as Radiks are taking advantage of. The beauty of building on blockstack is that it provides a synthesis of the best technologies of the old world together with the security and transparency of the new.

Problem 3: Notifications and Collaboration

The conventional internet knows who we are. Our email addresses, phone numbers and so on are replicated across thousands of centrally controlled databases. So for an application such as airbnb to contact us it simply looks us up. This is of course very convenient but has a huge down side. Vulnerabilities are exploited daily by hackers turning the conventional internet into a game of Russian roulette. We can do better!

At dBid sensitive user data like emails and phone numbers is stored encrypted in user storage. So how do we at the same time enable users to contact each other — say in the course of a sale or to book an appointment etc?

One answer already exists as a tool in the current net and works when all parties are on line at the same time. WebRtc is a peer to peer protocol release as part of the W3C html5 initiative. WebRtc allows connections to be made across the internet directly from one computer to another to transmit data, voice and video. If you’ve used video conference at a site like appear.in you’ll have already used WebRtc.

Offline notifications, however, can’t be ignored as they form the backstay of many key internet services. One common scenario is a buyer needs to let the seller know they have bought something so the seller can ship it. The solution here is to give the seller the choice. They can either log in to dBid regularly to check for sales or they can give us the ability to read their contact data from their storage. We still don’t store the data on any centralised database but instead create an encrypted version of the data in their storage that only we can decrypt when we need to contact them.

Problem 4: Rhizomes and Decentralised Bidding

With thanks to Zahrin Lukman on unspalsh

The bidding engine we are building at dBid takes full advantage of WebRtc technology. In our previous incarnation, building auction software, we used it to broadcast live auction events so online bidders can experience the auction taking place as though they were there in the auction room.

Building on this experience we are able to create a live bidding environment peer to peer — without the need for a centralised database.

Problem 5: Data Integrity and Transparency

One of our key goals is to build a bidding engine resistant to the illicit practices of the conventional internet. Shill bidding, back office bidding etc are too common and too little is being done to prevent them. Cryptography and blockchain technology however provide new tools for doing things more transparently.

There is no one size fits all solution to these problems so dBid is being built with a range of options in mind. One draws from the field of cryptography where cryptographic data structures such as Merkle trees provide tools for verifying the integrity of data e.g. by storing the Merkle root inside a blockchain transaction. Another strain is reputation. Because of the way the Blockstack works we foresee reputation emerging as an eco-system wide property backed by Blockstack native tokens “Stacks”. This means that buyers and sellers on dBid will be able to quickly earn the trust of the community. Stacks will likely emerge as the karma of Reddit but in a way that applies across and shared between all the decentralised versions of Twitter and Facebook, Airbnb and Uber that are currently being built.

Problem 6: Reconciliation and Shipping

When trading used goods there is currently little protection for either buyers or sellers for problems such as failure to deliver goods after payment. Blockchain technology again changes the rules here. On dBid we hold payments in an escrow wallet until the shipping process has completed. This means we can make refunds and payments automatic and direct.

We are also offering payments over Lightning to reduce transaction fee costs for end users.

Problem 7: How to Establish Ownership of Items

Closely related to the above goal of reducing fraudulent practises dBid also tackles problems of ownership. We are providing tools whereby users can establish ownership — by providing provenance records e.g. bills of sale, condition report, photographic / video evidence of ownership. The seller can then chose to register a cryptographic hash of this data on the blockchain which together with the fact that the source of this data is stored encrypted in their own storage provides very strong evidence of ownership.

This applies equally to physical and digital assets and dBid combines this with generation of certificates of authenticity.

Summary

The decentralised internet isn’t just a concept — its a coming.

Thanks for reading…

While your here… we are a group individuals working working our socks off on this project.

Follow us / get involved on Twitter

Check out the project on Product Hunt

--

--

Radicle Society

Radicle is a toolkit of decentralised technologies for building peer to peer marketplaces.