Update Merge testnet example to longterm networks (#1108)

* Update Merge testnet example to Sepolia

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

* Change from Sepolia to Goerli

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

* Markdown fix

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

* Include both testnets

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

* update launchpad

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

* Fix links

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>

Signed-off-by: Roland Tyler <roland.tyler@consensys.net>
pull/1156/head
rolandtyler 2 years ago committed by GitHub
parent a7c4bacf5d
commit 12884ad66e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 162
      docs/public-networks/tutorials/merge-testnet.md

@ -2,12 +2,18 @@
Description: How to run Besu and Teku on the Merge testnet Description: How to run Besu and Teku on the Merge testnet
--- ---
# Run Besu and Teku on the Merge testnet # Run Besu and Teku on a post-Merge testnet
You can test Besu as an [execution client](../concepts/the-merge.md#execution-clients) and You can test Besu as an [execution client](../concepts/the-merge.md#execution-clients) and
[Teku](https://docs.teku.consensys.net/en/stable/) [Teku](https://docs.teku.consensys.net/en/stable/)
as a [consensus client](../concepts/the-merge.md#consensus-clients) on the as a [consensus client](../concepts/the-merge.md#consensus-clients) on a post-Merge testnet.
[Kiln Merge testnet](https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/). This tutorial uses the [Goerli testnet](https://github.com/eth-clients/goerli) and
[Sepolia testnet](https://github.com/eth-clients/sepolia) as examples.
!!! note
Sepolia is a permissioned network and can't be run using a validator client without [requesting to become a validator first](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg).
You can connect your consensus client using the beacon node only, without any validator duties.
## 1. Install Besu and Teku ## 1. Install Besu and Teku
@ -31,12 +37,57 @@ You will specify `jwtsecret.hex` when starting both Besu and Teku.
This is a shared JWT secret the clients use to authenticate each other when using the This is a shared JWT secret the clients use to authenticate each other when using the
[Engine API](../how-to/use-engine-api.md). [Engine API](../how-to/use-engine-api.md).
## 3. Generate validator keys and stake ETH ## 3. Start Besu
Run the following command:
=== "Goerli"
```bash
besu \
--network=goerli \
--rpc-http-enabled=true \
--rpc-http-host="0.0.0.0" \
--rpc-http-cors-origins="*" \
--rpc-ws-enabled=true \
--rpc-ws-host="0.0.0.0" \
--host-allowlist="*" \
--engine-host-allowlist="*" \
--engine-rpc-port=8551 \
--Xmerge-support=true \
--engine-jwt-secret=<path to jwtsecret.hex>
```
=== "Sepolia"
```bash
besu \
--network=sepolia \
--rpc-http-enabled=true \
--rpc-http-host="0.0.0.0" \
--rpc-http-cors-origins="*" \
--rpc-ws-enabled=true \
--rpc-ws-host="0.0.0.0" \
--host-allowlist="*" \
--engine-host-allowlist="*" \
--engine-rpc-port=8551 \
--Xmerge-support=true \
--engine-jwt-secret=<path to jwtsecret.hex>
```
Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
[`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option.
See the [`--engine-*`](../reference/cli/options.md#engine-host-allowlist) options for more information on running
Besu as an execution client.
## 4. Generate validator keys and stake ETH
If you're running a [validator client](#beacon-node-and-validator-client), create a test Ethereum address (you can do If you're running a [validator client](#beacon-node-and-validator-client), create a test Ethereum address (you can do
this in this in
[MetaMask](https://metamask.zendesk.com/hc/en-us/articles/360015289452-How-to-create-an-additional-account-in-your-wallet)). [MetaMask](https://metamask.zendesk.com/hc/en-us/articles/360015289452-How-to-create-an-additional-account-in-your-wallet)).
Fund this address with testnet ETH using the [Kiln Faucet](https://faucet.kiln.themerge.dev/). Fund this address with testnet ETH using a faucet.
See the list of [Goerli faucets](https://github.com/eth-clients/goerli#meta-data-g%C3%B6rli) and [Sepolia faucets](https://github.com/eth-clients/sepolia#meta-data-sepolia).
!!! note !!! note
@ -44,37 +95,14 @@ Fund this address with testnet ETH using the [Kiln Faucet](https://faucet.kiln.t
[EthStaker Discord](https://discord.io/ethstaker). [EthStaker Discord](https://discord.io/ethstaker).
Generate validator keys and stake your testnet ETH for one or more validators using the Generate validator keys and stake your testnet ETH for one or more validators using the
[Kiln Staking Launchpad](https://kiln.launchpad.ethereum.org/en/). [Goerli Staking Launchpad](https://goerli.launchpad.ethereum.org/).
!!! important !!! important
Save the password you use to generate each key pair in a `.txt` file. Save the password you use to generate each key pair in a `.txt` file.
You should also have a `.json` file for each validator key pair. You should also have a `.json` file for each validator key pair.
## 4. Start Besu Ensure your Besu node is fully synced before submitting your staking deposit. This can take several days.
Run the following command:
```bash
besu \
--network=kiln \
--rpc-http-enabled=true \
--rpc-http-host="0.0.0.0" \
--rpc-http-cors-origins="*" \
--rpc-ws-enabled=true \
--rpc-ws-host="0.0.0.0" \
--host-allowlist="*" \
--engine-host-allowlist="*" \
--engine-rpc-port=8550 \
--Xmerge-support=true \
--engine-jwt-secret=<path to jwtsecret.hex>
```
Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
[`--engine-jwt-secret`](../reference/cli/options.md#engine-jwt-secret) option.
See the [`--engine-*`](../reference/cli/options.md#engine-host-allowlist) options for more information on running
Besu as an execution client.
## 5. Start Teku ## 5. Start Teku
@ -84,17 +112,31 @@ Open a new terminal window.
To run Teku as a beacon node (without validator duties), run the following command: To run Teku as a beacon node (without validator duties), run the following command:
```bash === "Goerli"
teku \
--data-path "datadir-teku" \ ```bash
--network kiln \ teku \
--ee-endpoint http://localhost:8550 \ --data-path "datadir-teku" \
--Xee-version kilnv2 \ --network goerli \
--ee-jwt-secret-file <path to jwtsecret.hex> \ --ee-endpoint http://localhost:8551 \
--log-destination console \ --ee-jwt-secret-file <path to jwtsecret.hex> \
--rest-api-enabled=true \ --log-destination console \
--p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk" --rest-api-enabled=true \
``` --p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk"
```
=== "Sepolia"
```bash
teku \
--data-path "datadir-teku" \
--network sepolia \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file <path to jwtsecret.hex> \
--log-destination console \
--rest-api-enabled=true \
--p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk"
```
Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using Specify the path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using
the [`--ee-jwt-secret-file`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) the [`--ee-jwt-secret-file`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file)
@ -104,30 +146,35 @@ option.
To run Teku as a beacon node and validator in a single process, run the following command: To run Teku as a beacon node and validator in a single process, run the following command:
```bash === "Goerli"
teku \
--data-path "datadir-teku" \ ```bash
--network kiln \ teku \
--ee-endpoint http://localhost:8550 \ --data-path "datadir-teku" \
--Xee-version kilnv2 \ --network goerli \
--ee-jwt-secret-file <path to jwtsecret.hex> \ --ee-endpoint http://localhost:8551 \
--log-destination console \ --ee-jwt-secret-file <path to jwtsecret.hex> \
--rest-api-enabled=true \ --log-destination console \
--validators-proposer-default-fee-recipient=<ETH address> \ --rest-api-enabled=true \
--validator-keys=<path to key file>:<path to mnemonic file>[,<path to key file>:<path to mnemonic file>,...] \ --validators-proposer-default-fee-recipient=<ETH address> \
--p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk" --validator-keys=<path to key file>:<path to mnemonic file>[,<path to key file>:<path to mnemonic file>,...] \
``` --p2p-discovery-bootnodes "enr:-Iq4QMCTfIMXnow27baRUb35Q8iiFHSIDBJh6hQM5Axohhf4b6Kr_cOCu0htQ5WvVqKvFgY28893DHAg8gnBAXsAVqmGAX53x8JggmlkgnY0gmlwhLKAlv6Jc2VjcDI1NmsxoQK6S-Cii_KmfFdUJL2TANL3ksaKUnNXvTCv1tLwXs0QgIN1ZHCCIyk"
```
=== "Sepolia"
Sepolia is a permissioned network and can't be run using a validator client without [requesting to become a validator first](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg).
Specify: Specify:
- The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the - The path to the `jwtsecret.hex` file generated in [step 2](#2-generate-the-shared-secret) using the
[`--ee-jwt-secret-file`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) option. [`--ee-jwt-secret-file`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#ee-jwt-secret-file) option.
- The test Ethereum address created in [step 3](#3-generate-validator-keys-and-stake-eth) as the default fee recipient - The test Ethereum address created in [step 4](#4-generate-validator-keys-and-stake-eth) as the default fee recipient
using the using the
[`--validators-proposer-default-fee-recipient`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#validators-proposer-default-fee-recipient) [`--validators-proposer-default-fee-recipient`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#validators-proposer-default-fee-recipient)
option. option.
- The paths to the keystore `.json` file and password `.txt` file created in - The paths to the keystore `.json` file and password `.txt` file created in
[step 3](#3-generate-validator-keys-and-stake-eth) for each validator using the [step 4](#4-generate-validator-keys-and-stake-eth) for each validator using the
[`--validator-keys`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#validator-keys) option. [`--validator-keys`](https://docs.teku.consensys.net/en/stable/Reference/CLI/CLI-Syntax/#validator-keys) option.
Separate the `.json` and `.txt` files with a colon, and separate entries for multiple validators with commas. Separate the `.json` and `.txt` files with a colon, and separate entries for multiple validators with commas.
@ -136,7 +183,7 @@ options for more information on running Teku as a validator.
## After starting Besu and Teku ## After starting Besu and Teku
After starting Besu and Teku, your node should start syncing and connecting to peers. After starting Besu and Teku, your node starts syncing and connecting to peers.
!!! example !!! example
@ -160,4 +207,5 @@ After starting Besu and Teku, your node should start syncing and connecting to p
2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9 2022-03-21 20:44:12.353 INFO - Syncing *** Target slot: 76096, Head slot: 3519, Remaining slots: 72577, Connected peers: 9
``` ```
You can check your validator status by searching your Ethereum address on the [Goerli Beacon Chain explorer](https://goerli.beaconcha.in/).
It may take up to multiple days for your validator to be activated and start proposing blocks. It may take up to multiple days for your validator to be activated and start proposing blocks.

Loading…
Cancel
Save