Whenever we talk about consensus, we usually think of PoW, PoS or DPoS etc which are basically network level consensus that comes with blockchain platforms. Like for example, Ethereum ships with PoW, EOS ships with DPoS, so on and so forth. For developing Dapps, usually, we do not need to change/tweak this consensus since we are okay with it as we decide the blockchain platform we are going to use.

The image is taken from google


But there can/may be another consensus that we can think of, DApp consensus, that we can implement for one or many modules in our Dapp. DApp consensus can be fully customized consensus developed at application level depending upon the use case.

For example imagine a content distribution platform (since we have been doing research on this domain quite a while), where a user will upload a content and get some (very minimal) reward for it. Now to implement such module, one of the major challenge is, how to ensure that user should not flood the application with bad content in order to get incentive only. To solve this problem we can implement a feature such that each uploaded content will go for validation by moderators before reflecting in the Dapp. But then, the concept of validation arises questions like, who will be these moderators? For example, in a decentralized app, one entity should not take the decision, right? the decision has to be taken by a set of people. On what criteria this validation will be done? Etc.

We can think of something called, ‘Consensus-based validation’. Consensus-based validation can be fully customized consensus at the application level. To accomplish this we can introduce the concept of moderators. Moderators are special users who will validate the new content and will earn rewards for doing this activity. Now let us try to understand how this consensus may work.

There will repeatedly elections for moderators at some interval for example 2 months. So every 2 months, out of total potential moderators (those who have opted for moderators), randomly 20 moderators will be chosen. These 20 moderators will operate for 2 months after this interval new election will happen and a new set of 20 moderators will be chosen randomly.

How do moderators work in such system?

  • Any user can become a moderator. He has to opt for this option.
  • To become a moderator there may be certain criteria :
    • The user should have earned a certain amount of Ether (say for ex. 100eth) at least. This will ensure that user has spent a considerable amount of time in the network.
    • Out of total earned Ether, the user has to put some Ether as stake (for ex 50eth) in the network. This will ensure that moderator will not validate improper contents as there will always a risk of losing his stake.
  • Once a user is eligible to become a moderator he can participate into moderator election.
  • Once the election is finished and 20 moderators are chosen randomly, those who lost the elections will get their stake back. These 20 moderators will validate the new contents.
  • Validation of new content will also be based on voting.
  • At least 51% vote is required to final confirmation of a content in DApp.
  • If 51% is not reached then the content will reside in the application as unverified state and can or maybe get verified in next election process.
  • On proper verification of each content, the moderator will get rewards.

With this model, everybody will have an equal probability of becoming a moderator. No single moderator can influence/support any content creator as they are randomly chosen.

This can be just one way thinking about ‘DApp consensus’, there can be multiple other ways of doing that based on the use case.

I want to end the discussion by putting some questions in the front of you.

  • What is your opinion on this front?
  • Do you think such kind on consensus can be implemented and if it is, then will it be worth enough to spend resources for this module as it looks like it is going to be very complex?
  • How do we decide those exact figures like 2 months of the interval, 51% of votes, 50 eth for stake etc? It seems that it needs some kind of simulation to come up with these figures, what do you think?

Happy learning!