
Subscribe to detoo

Subscribe to detoo
Share Dialog
Share Dialog

Merge™ is coming. Most of us have probably already heard of the renaming and the introduction of Execution Client (ex. Geth) and the Consensus Client (ex. Lighthouse Beacon Node). It also introduced a new interface called Engine API. As a pre-merge validator, what exactly has changed? How do I upgrade it and verify if it is ready for merge?
Below assumes we have existing (pre-merge) nodes running and will focus only on the changes.
There are multiple options for running an Execution Client. I’ll focus on geth here.
The current merge-ready geth version is v1.10.23 as of writing. Upgrading from a pre-merge geth version you need to add the following arguments:
--authrpc.addr=localhost
--authrpc.port=8551
Note if you are running Beacon nodes or Validator nodes in a container, you might want to add the extra arguments so that incoming requests from virtual hosts are accepted:
--authrpc.vhosts="*"
Restart geth, if everything runs properly you will see:
WARN Chain pre-merge, sync via PoW (ensure beacon client is ready)
...
WARN Engine API enabled protocol=eth
WARN Engine API started but chain not configured for merge yet
...
INFO Generated JWT secret path=/home/you/.ethereum/geth/jwtsecret
...
INFO WebSocket enabled url=ws://127.0.0.1:8551
INFO HTTP server started endpoint=127.0.0.1:8551 auth=true prefix= cors=localhost vhosts=*
Note the pre-merge status and the generated JWT secret location in the logs.
Again there are multiple options for running a Beacon Node, here I will use Lighthouse.
As of writing, the current merge-ready Lighthouse version is v3.1.0.
Add the following merge-related arguments:
--execution-endpoints http://localhost:8551
--execution-jwt="/home/you/.ethereum/geth/jwtsecret"
Note the port 8551 is different from the legacy RPC port (8545) because it is an exclusive interface for the Beacon Node only. Also note the --execution-jwt location should match the location shown in geth logs above.
Restart the Beacon Node. It will take a few minutes to migrate the database from the previous version. Once it is connected and synced with the Execution Client we’ll see:
INFO Ready for the merge current_difficulty: 57833190587477479896205, terminal_total_difficulty: 58750000000000000000000, service: slot_notifier
That means both clients are ready! The Engine API has started, the TTD (Terminal Total Difficulty) is nominal, we are ready for Merge™
Go to bordel.wtf and check out the estimated Merge time if you want to see it happen live!

Merge™ is coming. Most of us have probably already heard of the renaming and the introduction of Execution Client (ex. Geth) and the Consensus Client (ex. Lighthouse Beacon Node). It also introduced a new interface called Engine API. As a pre-merge validator, what exactly has changed? How do I upgrade it and verify if it is ready for merge?
Below assumes we have existing (pre-merge) nodes running and will focus only on the changes.
There are multiple options for running an Execution Client. I’ll focus on geth here.
The current merge-ready geth version is v1.10.23 as of writing. Upgrading from a pre-merge geth version you need to add the following arguments:
--authrpc.addr=localhost
--authrpc.port=8551
Note if you are running Beacon nodes or Validator nodes in a container, you might want to add the extra arguments so that incoming requests from virtual hosts are accepted:
--authrpc.vhosts="*"
Restart geth, if everything runs properly you will see:
WARN Chain pre-merge, sync via PoW (ensure beacon client is ready)
...
WARN Engine API enabled protocol=eth
WARN Engine API started but chain not configured for merge yet
...
INFO Generated JWT secret path=/home/you/.ethereum/geth/jwtsecret
...
INFO WebSocket enabled url=ws://127.0.0.1:8551
INFO HTTP server started endpoint=127.0.0.1:8551 auth=true prefix= cors=localhost vhosts=*
Note the pre-merge status and the generated JWT secret location in the logs.
Again there are multiple options for running a Beacon Node, here I will use Lighthouse.
As of writing, the current merge-ready Lighthouse version is v3.1.0.
Add the following merge-related arguments:
--execution-endpoints http://localhost:8551
--execution-jwt="/home/you/.ethereum/geth/jwtsecret"
Note the port 8551 is different from the legacy RPC port (8545) because it is an exclusive interface for the Beacon Node only. Also note the --execution-jwt location should match the location shown in geth logs above.
Restart the Beacon Node. It will take a few minutes to migrate the database from the previous version. Once it is connected and synced with the Execution Client we’ll see:
INFO Ready for the merge current_difficulty: 57833190587477479896205, terminal_total_difficulty: 58750000000000000000000, service: slot_notifier
That means both clients are ready! The Engine API has started, the TTD (Terminal Total Difficulty) is nominal, we are ready for Merge™
Go to bordel.wtf and check out the estimated Merge time if you want to see it happen live!
<100 subscribers
<100 subscribers
No activity yet