48 lines
1.8 KiB
Markdown
48 lines
1.8 KiB
Markdown
|
Nimbus passes phase 0, Altair, and Merge consensus spec tests in minimal and mainnet presets.
|
||
|
|
||
|
# How to run Geth
|
||
|
|
||
|
- Clone Geth: `git clone --branch merge-interop-spec https://github.com/MariusVanDerWijden/go-ethereum.git ~/execution-clients/go-ethereum`
|
||
|
- Build Geth and Geth with `make geth`
|
||
|
- Run `scripts/run-catalyst.sh` to run Geth. It listens on HTTP port 8545 and websockets port 8546.
|
||
|
- At the Geth console, run the `miner.start()` command.
|
||
|
|
||
|
# Verify that Nimbus runs through the merge vectors
|
||
|
|
||
|
- Wait for Geth to mine through to the total transition difficulty
|
||
|
- Run `./env.sh nim c -r tests/test_merge_vectors.nim`. It should show output akin to:
|
||
|
|
||
|
```
|
||
|
[Suite] Merge test vectors
|
||
|
[OK] preparePayload, getPayload, executePayload, consensusValidated, and forkchoiceUpdated
|
||
|
{"code":5,"message":"unknown payload"}
|
||
|
[OK] getPayload unknown payload
|
||
|
```
|
||
|
|
||
|
# How to run Nimbus local testnet with Geth
|
||
|
|
||
|
- Check out branch `amphora-merge-interop`
|
||
|
- Run (and keep running) `./scripts/run-catalyst.sh`.
|
||
|
|
||
|
- Run `./scripts/launch_local_testnet.sh --preset minimal --nodes 4 --disable-htop --stop-at-epoch 7 -- --verify-finalization --discv5:no`
|
||
|
|
||
|
This creates a 4 node local testnet with 128 validators.
|
||
|
|
||
|
The Nimbus console output will be similar to
|
||
|
```
|
||
|
Wrote local_testnet_data/genesis.ssz
|
||
|
Wrote local_testnet_data/bootstrap_nodes.txt
|
||
|
Wrote local_testnet_data/config.yaml:
|
||
|
PRESET_BASE: minimal
|
||
|
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 128
|
||
|
MIN_GENESIS_TIME: 0
|
||
|
GENESIS_DELAY: 10
|
||
|
DEPOSIT_CONTRACT_ADDRESS: 0x0000000000000000000000000000000000000000
|
||
|
ETH1_FOLLOW_DISTANCE: 1
|
||
|
ALTAIR_FORK_EPOCH: 1
|
||
|
MERGE_FORK_EPOCH: 2
|
||
|
```
|
||
|
|
||
|
Meanwhile, Nimbus is interacting with Geth in preparing, getting, executing, and marking as valid execution payloads:
|
||
|
![./interop_merge_m3_geth_logs.png](./interop_merge_m3_geth_logs.png)
|