Source: Buterin website, Dec 2019
- Useful Proof of Work
making the proof of work function something which is simultaneously useful;
a common candidate is something like Folding@home, an existing program where users can download software onto their computers to simulate protein folding and provide researchers with a large supply of data to help them cure diseases.
Status: Probably not feasible, with one exception.
The challenge with useful proof of work is that a proof of work algorithm requires many properties:
- Hard to compute
- Easy to verify
- Does not depend on large amounts of external data
- Can be efficiently computed in small “bite-sized” chunks
Unfortunately, there are not many computations that are useful that preserve all of these properties, and most computations that do have all of those properties and are “useful” are only “useful” for far too short a time to build a cryptocurrency around them.
However, there is one possible exception: zero-knowledge-proof generation. Zero knowledge proofs of aspects of blockchain validity (eg. data availability roots for a simple example) are difficult to compute, and easy to verify.
Furthermore, they are durably difficult to compute; if proofs of “highly structured” computation become too easy, one can simply switch to verifying a blockchain’s entire state transition, which becomes extremely expensive due to the need to model the virtual machine and random memory accesses.
Zero-knowledge proofs of blockchain validity provide great value to users of the blockchain, as they can substitute the need to verify the chain directly; Coda is doing this already, albeit with a simplified blockchain design that is heavily optimized for provability. Such proofs can significantly assist in improving the blockchain’s safety and scalability.
That said, the total amount of computation that realistically needs to be done is still much less than the amount that’s currently done by proof of work miners, so this would at best be an add-on for proof of stake blockchains, not a full-on consensus algorithm.
Decentralized Public Goods Incentivization
One of the challenges in economic systems in general is the problem of “public goods”.
For example, suppose that there is a scientific research project which will cost $1 million to complete, and it is known that if it is completed the resulting research will save one million people $5 each. In total, the social benefit is clear … [but] from the point of view of each individual person contributing does not make sense …
So far, most problems to public goods have involved centralization Additional Assumptions And Requirements: A fully trustworthy oracle exists for determining whether or not a certain public good task has been completed (in reality this is false, but this is the domain of another problem)
Status: Some progress.
The problem of funding public goods is generally understood to be split into two problems: the funding problem (where to get funding for public goods from) and the preference aggregation problem (how to determine what is a genuine public good, rather than some single individual’s pet project, in the first place).
This problem focuses specifically on the former, assuming the latter is solved (see the “decentralized contribution metrics” section below for work on that problem).
In general, there haven’t been large new breakthroughs here. There’s two major categories of solutions. First, we can try to elicit individual contributions, giving people social rewards for doing so. My own proposal for charity through marginal price discrimination is one example of this; another is the anti-malaria donation badges on Peepeth.
Second, we can collect funds from applications that have network effects. Within blockchain land there are several options for doing this:
- Issuing coins
- Taking a portion of transaction fees at protocol level (eg. through EIP 1559)
- Taking a portion of transaction fees from some layer-2 application (eg. Uniswap, or some scaling solution, or even state rent in an execution environment in ethereum 2.0)
- Taking a portion of other kinds of fees (eg. ENS registration)
Outside of blockchain land, this is just the age-old question of how to collect taxes if you’re a government, and charge fees if you’re a business or other organization.
Proof of excellence
One interesting, and largely unexplored, solution to the problem of [token] distribution specifically (there are reasons why it cannot be so easily used for mining) is using tasks that are socially useful but require original human-driven creative effort and talent.
For example, one can come up with a “proof of proof” currency that rewards players for coming up with mathematical proofs of certain theorems
Status: No progress, problem is largely forgotten.
The main alternative approach to token distribution that has instead become popular is airdrops; typically, tokens are distributed at launch either proportionately to existing holdings of some other token, or based on some other metric (eg. as in the Handshake airdrop).
Verifying human creativity directly has not really been attempted, and with recent progress on AI the problem of creating a task that only humans can do but computers can verify may well be too difficult.
14 [sic]. Decentralized contribution metrics
Incentivizing the production of public goods is, unfortunately, not the only problem that centralization solves.
The other problem is determining, first, which public goods are worth producing in the first place and, second, determining to what extent a particular effort actually accomplished the production of the public good. This challenge deals with the latter issue.
Status: Some progress, some change in focus.
More recent work on determining value of public-good contributions does not try to separate determining tasks and determining quality of completion; the reason is that in practice the two are difficult to separate.
Work done by specific teams tends to be non-fungible and subjective enough that the most reasonable approach is to look at relevance of task and quality of performance as a single package, and use the same technique to evaluate both.
Fortunately, there has been great progress on this, particularly with the discovery of quadratic funding. Quadratic funding is a mechanism where individuals can make donations to projects, and then based on the number of people who donated and how much they donated, a formula is used to calculate how much they would have donated if they were perfectly coordinated with each other (ie. took each other’s interests into account and did not fall prey to the tragedy of the commons).
The difference between amount would-have-donated and amount actually donated for any given project is given to that project as a subsidy from some central pool (see #11 for where the central pool funding could come from). Note that this mechanism focuses on satisfying the values of some community, not on satisfying some given goal regardless of whether or not anyone cares about it. Because of the complexity of values problem, this approach is likely to be much more robust to unknown unknowns.
Quadratic funding has even been tried in real life with considerable success in the recent gitcoin quadratic funding round. There has also been some incremental progress on improving quadratic funding and similar mechanisms; particularly, pairwise-bounded quadratic funding to mitigate collusion. There has also been work on specification and implementation of bribe-resistant voting technology, preventing users from proving to third parties who they voted for; this prevents many kinds of collusion and bribe attacks.