mirror of https://github.com/ethereum/go-ethereum
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
5.1 KiB
76 lines
5.1 KiB
---
|
|
title: The Merge
|
|
sort_key: A2
|
|
---
|
|
|
|
The Merge was probably the most significant upgrade to Ethereum since Homestead. This page explains what The Merge was
|
|
and how it affected Geth users.
|
|
|
|
## What was The Merge
|
|
|
|
[The Merge](https://ethereum.org/en/upgrades/merge/) was an upgrade to Ethereum that swapped out its original
|
|
proof-of-work (PoW) based consensus mechanism for a proof-of-stake based (PoS) mechanism. The term "Merge" refers
|
|
to the fact that the initial phase of the transition involved launching a PoS chain in parallel with the
|
|
PoW Ethereum Mainnet. That PoS chain, known as the Beacon Chain, was been executing the PoS consensus logic but
|
|
without including any real Ethereum transaction data. The Merge was the moment when Ethereum's blockchain
|
|
and the Beacon Chain joined together to form one unified chain. At the moment of The Merge, execution clients
|
|
switched off their proof-of-work and block gossiping functions and handed responsibility for all consensus and
|
|
fork choice logic over to consensus clients. This was a profound change to how Ethereum operates. Now that The Merge
|
|
is done, node operators are required to run a consensus client in addition to an execution client such as Geth.
|
|
|
|
## How did Geth change?
|
|
|
|
Geth is an execution client. Historically, running an execution client alone was enough to turn a computer
|
|
into a full Ethereum node. However, since The Merge, Geth has not been able to track the Ethereum chain on
|
|
its own. Instead, it needs to be coupled to another piece of software called a ["consensus client"][con-client-link].
|
|
The execution client is responsible for transaction handling, transaction gossip, state management and
|
|
the Ethereum Virtual Machine (EVM). However, Geth is no longer responsible for block proposals or
|
|
handling consensus logic. These are in the remit of the consensus client.
|
|
|
|
There are five consensus clients available, all of which connect to Geth in the same way.
|
|
Instructions for this are available on the [Consensus Clients page](/docs/interface/consensus-clients).
|
|
|
|
|
|
## Client architecture
|
|
|
|
The relationship between the two Ethereum clients is shown in the schematic below. The two clients each connect
|
|
to their own respective peer-to-peer (P2P) networks. This is because the execution clients gossip transactions over
|
|
their P2P network enabling them to manage their local mempool. The consensus clients gossip blocks over their P2P
|
|
network, enabling consensus and chain growth.
|
|
|
|

|
|
|
|
For this two-client structure to work, consensus clients must be able to pass bundles of transactions to Geth
|
|
to be executed. Executing the transactions locally is how the client validates that the transactions do not
|
|
violate any Ethereum rules and that the proposed update to Ethereum's state is correct. Likewise, when the node
|
|
is selected to be a block producer the consensus client must be able to request executable data from Geth including bundles of transactions and metadata to
|
|
include in the new block and a resulting state change. This inter-client communication is handled by a local RPC
|
|
connection using the [`engine` API][engine-api-link] which is part of the JSON-RPC API exposed by Geth.
|
|
|
|
## Using Geth since The Merge
|
|
|
|
Although The Merge was a profound change to Ethereum's underlying achitecture, there were minimal changes to how Geth
|
|
users interact with Ethereum. At The Merge responsibility for consensus logic and block propagation were handed over to
|
|
the consensus layer, but all of Geth’s other functionality remains intact. This means transactions, contract deployments
|
|
and data queries can still be handled by Geth using the same methods as before. This includes interacting with Geth using
|
|
the JSON_RPC_API directly using tools such as [curl](https//curl.se), third party libraries such as
|
|
[Web3.js][web3js-link] or [Web3.py][web3py-link] in development frameworks, e.g. [Truffle][truffle-link], [Hardhat][hardhat-link],
|
|
[Brownie][brownie-link], [Foundry][foundry-link] or using Web3.js in Geth's built-in Javascript console.
|
|
Much more information about the Javascript console is available on the [Javascript Console page](/docs/interface/javascript-console).
|
|
|
|
## Summary
|
|
|
|
The Merge was an upgrade to Ethereum that swapped the original PoW based consensus mechanism for a PoS based consensus
|
|
mechanism. This changed the client software organization for Ethereum nodes. Since The Merge, both execution and consensus
|
|
clients are required. Each client has responsibility for specific parts of the Ethereum protocol and communicate with each
|
|
other over a local RPC connection.
|
|
|
|
[engine-api-link]: https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md
|
|
[cl-list]: https://ethereum.org/en/developers/docs/nodes-and-clients/#consensus-clients
|
|
[web3py-link]: https://web3py.readthedocs.io/en/stable/web3.main.html
|
|
[web3js-link]: https://web3js.readthedocs.io/en/v1.2.9/
|
|
[brownie-link]: https://eth-brownie.readthedocs.io/en/stable/
|
|
[truffle-link]: https://trufflesuite.com/
|
|
[hardhat-link]: https://hardhat.org/
|
|
[foundry-link]: https://github.com/foundry-rs/foundry)
|
|
[con-client-link]:https://ethereum.org/en/glossary/#consensus-client
|
|
|