(1/22) @ethereum Upgrades: EIP-7002
The rise of centralized LSDs has made it painfully obvious: Ethereum must improve the experience for decentralized staking networks. EIP-7002 is a small tweak with profound implications in the march towards an even more decentralized Ethereum.
(2/22) @ethereum is the World Computer, a single, globally shared computing platform that exists in the space between a network of 1,000s of computers (nodes).
These nodes are real computers in the real world, communicating directly from peer to peer.
x.com/LogarithmicRex/status/1592309373732151296
(3/22) At genesis, Ethereum was secured by Proof of Work (PoW)... but even before mainnet launched, @VitalikButerin (and early core devs) planned for a transition to Proof of Stake (PoS).
Eventually, in Sept 2022, this transition was achieved in an event called The Merge.
x.com/LogarithmicRex/status/1861070198918545700
(4/22) The Merge brought together two blockchains. As a result, Ethereum is made up of two layers, each representing the functionality of each of the pre-Merge chains.
The consensus layer is responsible for PoS, the execution layer is responsible for the EVM.
(5/22) Under the original design of the post-Merge Ethereum, there was no way for the execution layer to directly send messages to the consensus layer. As a result, we cannot implement a lot of powerful functionality.
Fortunately, we are fixing this with EIP-7685!
x.com/LogarithmicRex/status/1863613708855107654
(6/22) EIP-7685 just provides the general purpose communications channel, it doesn't create any new functionality.
However, when EIP-7685 ships in Pectra (next Ethereum upgrade/hard fork), it will be joined with other EIPs which do add functionality... like EIP-7002!
(7/22) But before we get into the nitty-gritty of EIP-7002, let's set up the problem we need to solve.
But first, a flash lesson in how validators are created and ended. We won't look into what a validator does, but if you want a better understanding, read this thread on PoS.
x.com/LogarithmicRex/status/1579594609855934465
(8/22) To create a validator, a user sends 32 $ETH to the deposit smart contract, which exists in the execution layer. This will trigger the consensus layer to instantiate a new validator.
During creation, the depositor provides an active key and a withdrawal credential.
(9/22) The active key is what the validator uses to participate in PoS (signing blocks, making attestations, etc).
The withdrawal credential is the address where the deposit contract will send any staking rewards (and, when exiting, your original 32 $ETH deposit.
(10/22) In order to exit a validator, the owner must send a message to the consensus layer, signed with the active key. The consensus layer then communicates this to the execution layer, which releases the 32 $ETH deposit to the withdrawal credential.
(11/22) At this point its worth thinking about the implications of having the active key and withdrawal credential (instead of 1 key/address).
The good news: its much more secure. If an active key (a hot wallet by necessity) is compromised, they cannot steal the staked $ETH.
(12/22) What's interesting is what happens if the owner of the active key is different than the owner of the withdrawal credential.
The owner of the withdrawal address is at the mercy of the owner of the active key - they cannot trigger a withdrawal themselves.
(13/22) This paradigm is particularly relevant for decentralized LSD protocols. Take, for example, @Rocket_Pool.
(Rocket Pool allows node operators to launch a validator with as little as 8 $ETH, sourcing the rest from holders of $rETH)
(14/22) To launch a minipool, I provide 8 $ETH. Rocket Pool will then add 24 $ETH - enough to launch a validator.
When I launch the validator, I provide the active key, but the minipool is the withdrawal credential. When you exit, the smart contract refunds me 8 $ETH.
(15/22) I hope this makes sense immediately, but just in case:
If the withdrawal credential was controlled by the node operator, they would receive 32 $ETH when the validator exits, even though the only provided 8. Rocket Pool would then just have to hope they get the rest back.
(16/22) Now imagine a node operator launches a minipool and then immediately forgets. 2 days later his building has a power surge and his node shuts off.
Rocket Pool has provided 24 $ETH that is not only unproductive, it is slowly being eaten away by attestation penalties.
(17/22) Today, Rocket Pool has no recourse. Though the platform provided the vast majority of the staked $ETH, it only controls the withdrawal credentials.
By the very nature of staking, the active key must belong to the node operator. And so, Rocket Pool cannot trigger an exit.
(18/22) The authors of EIP-7002 summarize it best:
This means that in any non-standard custody relationships (active key is separate entity from withdrawal credentials), that the ultimate owner of the funds – the possessor of the withdrawal credentials – cannot choose to exit.
(19/22) Which brings us to EIP-7002: Execution Layer Triggerable Withdrawals.
Shipping alongside EIP-7685 in the Pectra hard fork, EIP-7002 will be among the first EIPs to leverage the communication channel created by EIP-7685.
eips.ethereum.org/EIPS/eip-7002
(20/22) Keep an eye out for threads on all of these EIPs... but if you can't wait and want to keep learning, check out this episode of PEEPanEIP, where @poojaranjan19 and @dannyryan have an in-depth discussion about EIP-7002!
youtube.com/watch?v=MxvX1gNh-_4
(21/22) EIP-7002 is just one of many upgrades to better support distributed staking. The end goal is to better support small scale and solo stakers, decentralizing LSDs and, by consequence, maintain credibly neutrality.
And remember, credible neutrality is the whole point!
x.com/LogarithmicRex/status/1559920665477595137
(22/22) In summary, EIP-7002 modifies who can exit a validator. Currently, only the active key can initiate an exit, but this EIP always the withdrawal credential to also initiate an exit.
This is an important upgrade for decentralizing the staked $ETH underpinning LSDs.