(1/23) @ethereum Upgrades: EIP-7685
Ethereum is made up of two layers: execution and consensus. Today, communication from the execution to consensus layer is indirect, limiting functionality and making updates inefficient.
EIP-7685 fixes this, and paves the way for quick and easy upgrades.
(2/23) @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/23) 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/23) This transition is called The Merge because it combined two separate chains: the original Ethereum blockchain and the new Beacon Chain (launched in 2020).
Post-Merge, the original Ethereum mainnet became the execution layer and the Beacon Chain became the consensus layer.
(5/23) Today, there is only one Ethereum blockchain, but the legacy of merging two chains is still with us today.
For example, to run an Ethereum node you need to run two pieces of software: a consensus client and an execution client.
One chain, two layers.
(6/23) All things that have to do with Proof of Stake/consensus (ensuring network consensus, managing validators, voting, finality, etc) happen at the consensus layer, within the consensus client.
Deep dive available here.
x.com/LogarithmicRex/status/1579594609855934465
(7/23) All things that happen within the EVM, Ethereum's computational platform (handling transactions, maintaining the current blockchain state, ensuring correct execution of code, etc) happen at the execution layer, within the execution client.
Deep dive available here.
x.com/LogarithmicRex/status/1574618174879735808
(8/23) Let me first say that there is already a fair amount of communication between the execution and consensus layers, particularly in regards to ensuring the validity of txns/blocks.
But the communication that exists today is indirect and inefficient.
(9/23) To illustrate, let's quickly walk through the process of creating a new PoS validator.
As a reminder, as things stand today, each validator requires a deposit of 32 $ETH. $ETH exists within the EVM (execution layer), while PoS happens in the consensus layer.
(10/23) At a high level, here's how the process works:
To create a new Ethereum validator, deposit 32 ETH in the staking contract. The Consensus Layer registers this, activates the validator, and assigns it duties. The Execution Layer updates balances and processes rewards.
(11/23) Although it may not be obvious from this high level description, there is very little direct communication in this process.
It hinges on the the deposit contract (in the execution layer) generating a log that is constantly monitored by the consensus layer.
(12/23) This process works (and works very well), but that is because it was designed in parallel with building the Beacon Chain, and is (essentially) hard-wired into Ethereum's operations.
But its years after the design of the Beacon Chain, what if we want new functionality?
(13/23) To give you a sense of the functionality we are talking about, we need to dive a little deeper on the mechanics of validators.
What's important to know is that when you create a validator you provide two addresses: an active key and a withdrawal credential.
(14/23) 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).
(15/23) 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.
(16/23) But let's say the owner of the active key is different than the owner of the withdrawal credential (common situation for decentralized LSD protocols like @Rocket_Pool).
And let's say the owner of the withdrawal credential wants to exit (maybe to redeem LSD for $ETH).
(17/23) Today, in these situations the owner of the withdrawal credential is at the mercy of the owner of the active key - they cannot trigger a withdrawal.
Ethereum doesn't have a channel for the withdrawal credential (execution layer) to signal an exit to the consensus layer.
(18/23) Which brings us to EIP-7685, which defines a general purpose framework for communicating contract-triggered requests from the execution to consensus layer.
EIP-7685 will be the communications channel needed to do things like trigger withdrawals from the execution layer.
(19/23) EIP-7685 creates a standard format for these requests, creates a mechanism for the execution layer to gather requests and expose them to the consensus layer, and then instructions the consensus layer to process them one-by-one.
eips.ethereum.org/EIPS/eip-7685
(20/23) Importantly, EIP-7685 is not a new programming surface for Ethereum developers to build on. Any processes that leverage this new channel will be formally incorporated into Ethereum via EIPs.
EIP-7685 just makes all future communications between layers much easier.
(21/23) If you want to dig deeper on EIP-7685 and the types of functionality that will be built on top of it, I highly encourage researching EIP-6110, EIP-7002 and EIP-7251.
EIP-7685 and the three listed above are expected to ship in the next Ethereum hard fork (Pectra).
(22/23) 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 @lightclients (the EIP author) have an in-depth discussion about EIP-7685!
youtube.com/watch?v=3g71BGZFASE
(23/23) In summary: Ethereum is made up of two layers, the execution and consensus layers.
EIP-7685 creates a general purpose communications channel from the execution layer to the consensus layer, allowing us to easily upgrade Ethereum with cross-layer functionality.