docs: add basic info about the merge (#24948)
* merge: add basic info * second pass * merge guide updates Co-authored-by: Felix Lange <fjl@twurst.com>
This commit is contained in:
parent
91ddb9e03e
commit
545feda51a
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
title: The Merge
|
||||||
|
sort_key: A2
|
||||||
|
---
|
||||||
|
|
||||||
|
As an Execution-Layer (EL) client, Geth supports the transition of Ethereum from PoW to
|
||||||
|
PoS, a.k.a. [The Merge](https://ethereum.org/en/upgrades/merge/). As this milestone
|
||||||
|
approaches for the Ropsten testnet, users running a Geth node will need to keep a few
|
||||||
|
things in mind to ensure a smooth transition.
|
||||||
|
|
||||||
|
### Transition
|
||||||
|
|
||||||
|
The transition will happen when a pre-announced total difficulty is reached by the chain.
|
||||||
|
This is unlike usual forks which occur at a certain scheduled block number.
|
||||||
|
|
||||||
|
The total difficulty threshold that triggers the Merge is also known as the *Terminal
|
||||||
|
Total Difficulty* (TTD).
|
||||||
|
|
||||||
|
{% include note.html content="In case of an emergency delay, the TTD can be overriden using `--override.totalterminaldifficulty`." %}
|
||||||
|
|
||||||
|
### Consensus client
|
||||||
|
|
||||||
|
After the Merge, Ethereum's Proof-Of-Stake consensus logic is handled by a separate piece
|
||||||
|
of software called a Consensus-Layer (CL) client.
|
||||||
|
|
||||||
|
This means running Geth alone will not suffice to be able to follow the chain. You must
|
||||||
|
set up a consensus client and configure it so it can talk to Geth. This has to be done
|
||||||
|
before the Merge event happens.
|
||||||
|
|
||||||
|
The two clients will coordinate the transition together.
|
||||||
|
|
||||||
|
You can choose one of several [Consensus Client implementations][cl-list].
|
||||||
|
|
||||||
|
Note that CL clients are equipped with two modes. One for following the beacon chain
|
||||||
|
(beacon node), and another mode used for validators. **It is NOT required to run a
|
||||||
|
validator or stake 32 ETH in order to follow the chain!**
|
||||||
|
|
||||||
|
### EL - CL communication
|
||||||
|
|
||||||
|
ELs and CLs communicate using a [JSON-RPC API][engineapi] under the namespace `engine`
|
||||||
|
which is exposed by Geth.
|
||||||
|
|
||||||
|
The `engine` API is authenticated via [JWT](https://jwt.io). If a TTD is set for the given
|
||||||
|
network, as is the case for Ropsten, Geth will:
|
||||||
|
|
||||||
|
- Generate a JWT secret under the path `<datadir>/geth/jwtsecret`. This secret is needed
|
||||||
|
both by Geth and the CL client.
|
||||||
|
|
||||||
|
- Open HTTP and WS endpoints on the authenticated port 8551.
|
||||||
|
|
||||||
|
This is what it looks like by default:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
geth --ropsten --datadir ~/.ropsten
|
||||||
|
```
|
||||||
|
|
||||||
|
```terminal
|
||||||
|
INFO [05-25|11:04:41.179] Starting Geth on Ropsten testnet...
|
||||||
|
...
|
||||||
|
WARN [05-25|11:04:41.520] Catalyst mode enabled protocol=eth
|
||||||
|
INFO [05-25|11:04:41.627] Generated JWT secret path=/home/user/.ropsten/geth/jwtsecret
|
||||||
|
INFO [05-25|11:04:41.628] WebSocket enabled url=ws://127.0.0.1:8551
|
||||||
|
INFO [05-25|11:04:41.628] HTTP server started endpoint=127.0.0.1:8551 auth=true prefix= cors=localhost vhosts=localhost
|
||||||
|
```
|
||||||
|
|
||||||
|
### Engine API Authentication
|
||||||
|
|
||||||
|
The listening address of the engine API is configurable. It is also possible to
|
||||||
|
self-generate the JWT secret and feed the resulting file to Geth. To generate the secret,
|
||||||
|
run:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
openssl rand -hex 32 | tr -d "\n" > "/tmp/jwtsecret"
|
||||||
|
```
|
||||||
|
|
||||||
|
Now configure authentication using Geth flags:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
geth --ropsten --datadir ~/.ropsten --authrpc.addr localhost --authrpc.port 8551 --authrpc.vhosts localhost --authrpc.jwtsecret /tmp/jwtsecret
|
||||||
|
```
|
||||||
|
|
||||||
|
[engineapi]: 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
|
Loading…
Reference in New Issue