Let us resume where we left off in Part 1 of this public debate between David Lancashire and Vitalik Buterin:
David: You are confused because you think public goods exist in the same form in every network simply because they exist in that form in Ethereum. This is not true: no-one considers staking a public good, but there are incentive mechanisms in which it could be.
Vitalik: Of course I consider staking a public good! It just happens to already be incentivized in-protocol because it is easy to measure.
David: This is wrong, Vitalik. The benefits of staking are excludable in networks that measure and pay for staking. They aren’t public goods in those networks by definition.
You don’t get to call something a “public good” because you think it has diffuse social benefits. Lots of things have diffuse social benefits. The term “public good” refers to a specific type of good with a defined set of properties which leads to market failure by making defection-from-provision the dominant strategy for profit-maximizing actors.
Staking can be a public good, but not if you are measuring it and paying for it. That introduces excludability as only the participant who has staked is eligible for the payment that is provided to induce staking. If you want to make staking a public good, you have to design a mechanism where you need it for security but either stop paying for it or distribute your fees to everyone equally regardless of whether or not they stake.
Vitalik: By this logic, is scientific research not a public good once the government starts paying people to do it?
The benefits of staking are not excludable: each staker’s staking helps secure all transactions on the network, and there isn’t a realistic way for different transactions to pay for different levels of security (people have tried to come up with designs that do it, it ends up being way overcomplicated and breaking composability and allowing profitable small-scale 51% attacks, and so is not a good idea). So each staker’s staking really is a public service that confers non-excludable benefits to all network participants. The protocol compensates for this service by issuing a reward for it, but the existence of that reward doesn’t make it not-a-public-good anymore, much like public goods elsewhere don’t stop being public goods just because a government or philanthropist pays for them, or someone happens to enjoy the warm moral fuzzies for building and releasing them for free.
David: People call government-provided services “public goods” because they’re lazily invoking the justification for government provision, not because government-provided services have the same characteristics as public goods. A government dictates who is obliged to provide and who is eligible to receive.
What determines whether something is a public good is basically whether there are benefits to provision that are exclusive to the provider (excludability) and whether others can avoid contributing if that is an option (openness). It’s the simultaneous existence of those two properties which creates the problem.
>The protocol compensates for [staking] by issuing a reward for it, but the existence of that reward doesn’t make it not-a-public-good anymore.
Yes, it does. You have a private payment for the service. The benefit you offer is excludable. You cannot call ETH staking a public good if the term “public good” means anything close to what it does in economics.
>There isn’t a realistic way for different transactions to pay for different levels of security (people have tried to come up with designs that do it, it ends up being way overcomplicated and breaking composability and allowing profitable small-scale 51% attacks.
You keep saying that things are impossible. They’re not. As above, you just don’t understand the problem space because you are conceptualizing this as a technical issue instead of an economic one.
You need to sacrifice either non-excludability or openness to fix this problem. Fixing non-excludability is only possible on the incentive layer where value measurement happens and is broken. This is why all of your upper-layer technical solutions only work if you add closure to the network.
Closure defeats the point of having an open blockchain and introduces economic attacks, which is why you are running in circles. The only solution that won’t drag you around this way is adjusting how you measure and pay for value. You’ve said this is impossible and I gave you an example up above. Pay for fee collection and your consensus mechanism will incentivize the private sector to do whatever it takes to maximize fee throughput. If documentation is needed, you’ll get it.
How do you implement it? Not easy. In practice you need a way to measure fee collection and payout that cannot be gamed by the block producer. And it also needs to simultaneously preserve the spam-resistant and cost-of-attack properties of PoW/PoS so that participants can’t just game it by driving money in circles.
Hard, but not impossible.
Ersikan: I don’t really understand your point. You say that, for example, Ethereum should first start to modify their consensus layer so that people are incentivized to do Y instead of X, but isn’t the consensus layer a government protocol to decide which changes to add to the ledger?
David: It is an incentive structure. Governance mechanisms require closure. Closure adds trusted-third parties. The entire point is not having those.
Ersikan: Why would governance mechanisms require closure? And what do you mean exactly by closure?
For example, in the coin voting governance system criticized in this article, if anyone can propose to make a change to a setting in the smart contract, and every token holder can vote according to what they own, there are no trusted third parties. The security of the vote is insured by the security of the underlying Ethereum blockchain. Where are the trusted third parties? At most, the nodes of the blockchain and the consensus layer are the trusted third party, but nothing in the governance protocol itself involves trusted third parties.
David: Governance mechanisms that solve collective action problems require closure. Vitalik is talking about a collective action problem concerning public goods provision.
The underlying reason is that with non-excludable (public) goods you cannot force those who consume them to pay for their provision so there is a natural tendency for people to overconsume and pass costs into the future (tragedy of the commons) or underprovide and pass costs to other participants in the present (free-riding). A lot of people (including Vitalik) mix these problems up and get confused because they imagine the problem is just a failure to pay, not the fact that closure is needed to induce provision.
Another example is quadratic voting. Using it to encourage users to subsidize public goods that provide diffuse benefits only works if participants cannot vote to pay themselves so the mechanism requires a closed slate with non-open gatekeeping and compulsory participation, because as soon as anyone can nominate themselves for payment, the Nash equilibrium shifts back to everyone voting to pay themselves with their own money, and public goods continuing to be underprovided.
Vitalik: This is actually not true; QV/QF works totally fine even if you allow voters to make and vote for proposals that say “voter X gets Y coins”. Only voter X would vote for the proposal, everyone else would vote slightly against.
David: Nope. Your Nash equilibrium is not everyone else playing nicely while X votes to pay themselves. Every letter of the alphabet has now introduced a proposal to pay themselves and is supporting it with all of their votes.
You have not found a solution to the tragedy of the commons. You have begrudgingly permitted one additional farmer to put one additional sheep on the pasture while denying that ability to every other participant in the system. Adding a trusted third party (you, the gatekeeper) is a known solution, but it isn’t an acceptable or open one.
thetagodfather: What innovations at the base layer would you add to help address the stated problem?
David: You have to eliminate the discrepancy between the value that participants can extract from the network, and the value that they contribute to the network. This is not possible if you have a fractured incentive structure.
The most important change at the base level is adding cryptographic signatures to the routing layer so that the network can measure who is doing the work of collecting transactions (fees) from users and routing them further into the network. That information on who is doing work and its objective value to the network is then available to consensus and you have a shot at solving the problem.
Routing subsidies can be hacked-on. The real challenge in solving the problem for good is turning this form of work into something that has the security properties of PoW and (to a lesser extent) PoS and can regulate block production. The only known solution intersects with POW and not PoS, so making modifications to Ethereum would require its own developers to understand the problem. The requirement to burn energy in the PoW version might be something that could be replaced by a form of token burning in a PoS mechanism.
For more updates, please do follow Saito’s official social media pages: