Sunday, September 26, 2021

goldcake's on-protocol client diversity plan

The issue right now is game theory encourages client homogeneity. This is because the more people that are also using your client, the more people will be advocating for a hard fork to fix any consensus penalties. Unfortunately, this is a tragedy of the commons as client diversity is positive to the security of ETH2.

I believe correcting this must be done on the protocol level -- the reality is there is no popular blockchain in the world that has client diversity. ETH1 is geth, bitcoin is bitcoin-core, etc. Whilst the correlated penalty nature of ETH2 seems designed to counter this on paper, in practice the expectation of a hard fork negates any increased penalties (because c'mon, if 5 million ETH is slashed then there will be a hard fork, don't delude yourself).

Here is my proposal that would lead to a continuous rewards penalty on using over-represented clients, while being robust enough so it's never in anyone's interests to lie about it (e.g. recompile code, change byte):

  1. Each proposal adds another byte: self-reported client.

  2. Proposal rewards will start decaying if a proposal comes from a significantly over-represented client. For example, the penalties could begin at nil for 33%, and ramp up to half rewards at >60%. (This is only proposal rewards, so the actual impact on rewards will be far less -- e.g. -12.5% of total rewards if a client is at >60%).

  3. In the event of a consensus failure caused by an over-represented client implementation: clients that see correlated failures, but self-report a different client to the over-represented client, would be subject to a "Lying Penalty" of 16 ETH.

The practicalities about whether we fork away consensus failure penalties can be left out-of-band (as a decentralised community can never make future behavioral promises anyway), but the important part is:

  • If you are running an over-represented client, you WILL earn less every block proposal.

  • If you choose to recompile the code and lie about your client, and keep running an over-represented client, you WILL lose at least half your staked ETH if there is a consensus failure. Even if the community bails out the over-represented client, because you lied about it, you'll still lose the "Lying Penalty" independent to what a hard fork resolves.

  • Thus, game theory encourages everyone running over-represented clients, to switch to alternate clients (it's a strictly better option than either of the previous two options).

  • Because the penalties are a gradient, it is OK if you are a novice and not experienced with switching clients -- the penalties will keep on increasing until enough people switch to reduce it, and eventually the market will find the right "cost" of running an over-represented client.

Thoughts on this proposal? I believe it is an actually workable way of encouraging client diversity on the protocol.


No comments:

Post a Comment