Problem

There are decentralized oracle projects like ChainLink and such but these projects are generally too rigid: they usually need a semi-fixed API / URL that returns structured data. From there it’s pretty easy to verify or interact with that data in a dApp but, what about data that code can’t easily deal with? Specifically: open ended data that could come in different formats / mediums and may or may not be opinion rather than facts (i.e. data from humans.)

In order to truly build Web3 blockchains / dapps will need to be able to use loose data that comes from humans. It’s common for a dapp to perform some kind of action once a condition is true but, for some dapps / ideas, it’s not possible to prove a condition is true or even close enough.

As an example (this isn’t a real idea at all so don’t nitpick too much), let’s say you wanted to build a decentralized version of Yahoo Answer / Quora because you don’t think that knowledge or what people can learn should be controlled. Users submit questions / help posts while other users submit answers. In order to attract real, helpful answers from knowledgeable / industry experts the dapp should pay the user who submits the best / most helpful answer but, how do you define best in the dapps' code? You can’t, not practically; if it was just text and really basic Q&A maybe you could write an algorithm to define best but it’ll fall apart and become riddled with abuse once the answers can be open ended. This is especially true when you remember that sometimes the best way to help someone understand the problem is to use images or audio and video. Even if you built a state of the art AI better than anything that currently exist to analyze all that data, there’s no way a blockchain could run or train it. At the end of the day, you’d just be another centralized Q&A platform that’s way over engineered.

Solution

The obvious solution to this is voting: let human majority decide which piece of open ended data matches. In the above example, other knowledgeable humans would collectively agree on which is the most helpful. But there’s a problem, and it’s a big one: it only works at scale, when there’s a small number of possible voters it’s easier for them to cheat which means the verification can’t be trusted as much.

My thought to solve this problem would be to have dapp / dao which financially incentivizes people to vote on issues / data for other projects (dapps, DAOs, etc.). In other words, other dapps would want to use this dapp to verify data or some loose condition because leveraging a large active community would make their dapp more secure. While this dapp would create & sustain a large(r) active community by paying good voters for their participation; of course, we couldn’t just pay good voters there would have to be financial consequences for bad voters / actors who try to cheat. The dapp would be able to pay voters from fees collected from other projects & their issues (I’m not 100% sure on how the fees will work right now but there will be fees somewhere along the line.)

Essentially both sides are trying to leverage the economies of scale of the other side: the more projects integrated and the more a voter assist projects, the more money they make; the more voters participating, the more secure the dapps' data / verification is and the more projects integrated, the less each individual project has to pay to incentivize participation. Now this is obviously a “chicken and egg” problem but I think that could be overcame by launching the voting dapp and some other, bigger dapp which relies on the crowd to analyze data at the same time. The feature of the other bigger dapp would be the draw but users of that app would want to use the voting dapp too in order to improve the bigger dapp (and earn some money). Eventually, there would be another dapp that wants to leverage a crowd that could use the voting dapp to have more secure votes from the get go while providing existing voters new ways to earn more money and eventually more users for the voting dapp.