Skip to content

Commit

Permalink
Add ephemery command to documentation (#621)
Browse files Browse the repository at this point in the history
* Add ephemery command to testnet.md and admin.md files

Signed-off-by: gconnect <[email protected]>

* Add Ephemery command to other files

Signed-off-by: gconnect <[email protected]>

* Add Ephemery command to docs/reference/cli/index.md

Signed-off-by: gconnect <[email protected]>

* remove ephemery tab from the validator section

Signed-off-by: gconnect <[email protected]>

* edits

---------

Signed-off-by: gconnect <[email protected]>
Co-authored-by: Alexandra Tran <[email protected]>
  • Loading branch information
gconnect and alexandratran authored Nov 4, 2024
1 parent 04b5a55 commit 9509395
Show file tree
Hide file tree
Showing 9 changed files with 235 additions and 116 deletions.
119 changes: 81 additions & 38 deletions docs/get-started/connect/testnet.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,19 @@ import TabItem from '@theme/TabItem';

# Connect to a testnet

Run Teku as a consensus client with any execution client on a testnet (for example [Holesky](https://github.com/eth-clients/holesky) or
[Sepolia](https://github.com/eth-clients/sepolia)).
Run Teku as a consensus client with any execution client on a testnet (for example [Holesky](https://github.com/eth-clients/holesky),
[Ephemery](https://ephemery.dev/), or [Sepolia](https://github.com/eth-clients/sepolia)).

If you're using [Besu](https://besu.hyperledger.org/en/stable/) as an execution client, you can follow the
[Besu and Teku testnet tutorial](https://besu.hyperledger.org/en/latest/public-networks/tutorials/besu-teku-testnet/).

:::note
:::note Notes

Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first.
- Ephemery is a single network that rolls back to the genesis after a set period of time.
Ephemery is focused on short-term and heavy testing use cases.
It avoids problems like insufficient testnet funds, inactive validators, state bloat, and similar
issues faced by long-running testnets.
- Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first.
You can connect your consensus client using the beacon node only, without any validator duties.

:::
Expand All @@ -44,16 +48,16 @@ If you're running a beacon node only, skip to the [next step](#3-start-the-execu
If you're also running a validator client, create a test Ethereum address
(you can do this in [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 (32 ETH and gas fees for each validator) using a faucet.
See the list of [Holesky faucets](https://github.com/eth-clients/holesky#metadata) or
[Sepolia faucets](https://github.com/eth-clients/sepolia#meta-data-sepolia).
See the list of [Holesky faucets](https://github.com/eth-clients/holesky#metadata), [Sepolia faucets](https://github.com/eth-clients/sepolia#meta-data-sepolia),
or [Ephemery faucets](https://ephemery-faucet.pk910.de/).

:::note

If you're unable to get ETH using the faucet, you can ask for help on the [EthStaker Discord](https://discord.gg/ethstaker).

:::

Generate validator keys for one or more validators using the [Holesky Staking Launchpad](https://holesky.launchpad.ethereum.org/).
Generate validator keys for one or more validators using the [Holesky Staking Launchpad](https://holesky.launchpad.ethereum.org/) or [Ephemery Staking Launchpad](https://launchpad.ephemery.dev/).

Remember the passwords that you use to create the validator keys, because you
need them to [create the validator password files](#create-a-password-file-for-each-validator-key).
Expand All @@ -69,7 +73,6 @@ If specifying directories, password files must have the same name as the keys, b

- If the Launchpad creates a key named `keystore-m_12381_3600_0_0_0-1596485378.json`,
then the password file must be named `keystore-m_12381_3600_0_0_0-1596485378.txt`.

- The password file format follows
[`EIP-2335`](https://eips.ethereum.org/EIPS/eip-2335#password-requirements)
requirements (UTF-8 encoded file, unicode normalization, and control code removal).
Expand All @@ -91,34 +94,48 @@ Open a new terminal window.
To run Teku as a beacon node only (without validator duties), run the following command or [specify the options in a configuration file](../../how-to/configure/use-config-file.md):

<Tabs>
<TabItem value="Holesky" label="Holesky" default>
<TabItem value="Holesky" label="Holesky" default>

```bash
teku \
--network=holesky \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL>
```

</TabItem>
<TabItem value="Ephemery" label="Ephemery">

```bash
teku \
--network=holesky \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL>
--network=ephemery \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL optional>
```

</TabItem>
<TabItem value="Sepolia" label="Sepolia" >
</TabItem>
<TabItem value="Sepolia" label="Sepolia">

```bash
teku \
--network=sepolia \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL>
--network=sepolia \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL>
```

</TabItem>
</TabItem>
</Tabs>


Specify:

- The path to the `jwtsecret.hex` file generated in [step 1] using the
Expand All @@ -132,7 +149,7 @@ You can modify the option values and add other [command line options](../../refe

You can run the Teku beacon node and validator client as a [single process](#single-process) or as [separate processes](#separate-processes).

You can check your validator status by searching your Ethereum address on the [Holesky Beacon Chain explorer](https://holesky.beaconcha.in/).
You can check your validator status by searching your Ethereum address on the [Holesky Beacon Chain explorer](https://holesky.beaconcha.in/) or [Ephemery Beacon Chain Explorer](https://beaconchain.ephemery.dev).
Your validator might take multiple days to activate and start proposing blocks.

You can also use [Prometheus and Grafana](../../how-to/monitor/use-metrics.md) to monitor your nodes.
Expand All @@ -143,7 +160,7 @@ To run the Teku beacon node and validator client in a single process, run the fo
[specify the options in the configuration file](../../how-to/configure/use-config-file.md):

<Tabs>
<TabItem value="Holesky" label="Holesky" default>
<TabItem value="Holesky" label="Holesky" default>

```bash
teku \
Expand All @@ -157,12 +174,29 @@ teku \
--validator-keys=<path to key file>:<path to password file>[,<path to key file>:<path to password file>,...]
```

</TabItem>
<TabItem value="Sepolia" label="Sepolia" >
</TabItem>
<TabItem value="Ephemery" label="Ephemery">

```bash
teku \
--network=ephemery \
--ee-endpoint=http://localhost:8551 \
--ee-jwt-secret-file=<path to jwtsecret.hex> \
--metrics-enabled=true \
--rest-api-enabled=true \
--checkpoint-sync-url=<checkpoint sync URL optional> \
--validators-proposer-default-fee-recipient=<ETH address> \
--validator-keys=<path to key file>:<path to password file>[,<path to key file>:<path to password file>,...]
```

</TabItem>
<TabItem value="Sepolia" label="Sepolia" >

:::note
Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first.
:::

</TabItem>
</TabItem>
</Tabs>

Specify:
Expand All @@ -184,21 +218,30 @@ To run the Teku beacon node and validator client as separate processes, first [s
On a separate machine, run Teku using the [`validator-client`](../../reference/cli/subcommands/validator-client.md) subcommand:

<Tabs>
<TabItem value="Holesky" label="Holesky" default>
<TabItem value="Holesky" label="Holesky" default>

```bash
teku validator-client \
--network=holesky \
--beacon-node-api-endpoint=<endpoint> \
--validator-keys=<path to key file>:<path to password file>[,<path to key file>:<path to password file>,...]
--network=holesky \
--beacon-node-api-endpoint=<endpoint> \
--validator-keys=<path to key file>:<path to password file>[,<path to key file>:<path to password file>,...]
```

</TabItem>
<TabItem value="Sepolia" label="Sepolia" >
</TabItem>
<TabItem value="Ephemery">

:::note Coming soon
Support for starting Teku as a separate validator client on the Ephemery testnet is coming soon.
:::

</TabItem>
<TabItem value="Sepolia" label="Sepolia">

:::note
Sepolia is a permissioned network and you can't run a validator client on it without [requesting to become a validator](https://notes.ethereum.org/zvkfSmYnT0-uxwwEegbCqg) first.
:::

</TabItem>
</TabItem>
</Tabs>

Specify:
Expand All @@ -221,10 +264,10 @@ Syncing the execution client can take several days.
## 6. Stake ETH

Stake your testnet ETH for one or more validators using the
[Holesky Staking Launchpad](https://holesky.launchpad.ethereum.org/).
[Holesky Staking Launchpad](https://holesky.launchpad.ethereum.org/) or [Ephemery Staking Launchpad](https://launchpad.ephemery.dev).

You can check your validator status by searching your Ethereum address on the
[Holesky Beacon Chain explorer](https://holesky.beaconcha.in/).
[Holesky Beacon Chain explorer](https://holesky.beaconcha.in/) or [Ephemery Beacon Chain explorer](https://beaconchain.ephemery.dev).
It may take up to multiple days for your validator to be activated and start
proposing blocks.

Expand Down
60 changes: 60 additions & 0 deletions docs/get-started/install/run-docker-image.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,66 @@ services:
```
</TabItem>
<TabItem value="Ephemery" label="Ephemery" default>
```yaml
---
version: "3.4"
services:
besu_node:
image: hyperledger/besu:latest
command:
[
"--network=ephemery",
"--data-path=/var/lib/besu/data",
"--host-allowlist=*",
"--sync-mode=FAST",
"--rpc-http-enabled",
"--rpc-http-cors-origins=*",
"--rpc-http-api=ETH,NET,CLIQUE,DEBUG,MINER,NET,PERM,ADMIN,EEA,TXPOOL,PRIV,WEB3",
"--engine-jwt-secret=/var/lib/besu/data/token.txt",
"--engine-host-allowlist=*",
"--engine-rpc-enabled=true",
]
volumes:
- ./besu:/var/lib/besu/data
ports:
# Map the p2p port(30303), RPC HTTP port(8545), and engine port (8551)
- "8545:8545"
- "8551:8551"
- "30303:30303/tcp"
- "30303:30303/udp"

teku_node:
environment:
- "JAVA_OPTS=-Xmx4g"
image: consensys/teku:latest
command:
[
"--network=ephemery",
"--data-base-path=/var/lib/teku/data",
"--validators-proposer-default-fee-recipient=YOUR_WALLET",
"--ee-endpoint=http://besu_node:8551",
"--ee-jwt-secret-file=/var/lib/teku/data/token.txt",
"--validator-keys=/var/lib/teku/data/validator/keys:/var/lib/teku/data/validator/passwords",
"--p2p-port=9000",
"--rest-api-enabled=true",
"--rest-api-docs-enabled=true",
]
depends_on:
- besu_node
volumes:
- ./teku:/var/lib/teku/data
ports:
# Map the p2p port(9000) and REST API port(5051)
- "9000:9000/tcp"
- "9000:9000/udp"
- "5051:5051"
```
</TabItem>
<TabItem value="Mainnet" label="Mainnet" >
```yaml
Expand Down
34 changes: 19 additions & 15 deletions docs/how-to/configure/tls.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,12 @@ The [Teku and Web3Signer TLS configuration tutorial] provides instructions to cr
Start Web3Signer with the TLS configuration options and specify the keystore and known clients file.

```bash
web3signer --key-store-path=/Users/me/keyFiles/ \
--tls-keystore-file=/Users/me/certs/web3signer_keystore.p12 \
--tls-keystore-password-file=/Users/me/certs/web3signer_keystore_password.txt \
--tls-known-clients-file=/Users/me/certs/knownClients.txt \
eth2
web3signer \
--key-store-path=/Users/me/keyFiles/ \
--tls-keystore-file=/Users/me/certs/web3signer_keystore.p12 \
--tls-keystore-password-file=/Users/me/certs/web3signer_keystore_password.txt \
--tls-known-clients-file=/Users/me/certs/knownClients.txt \
eth2
```

:::note
Expand All @@ -47,22 +48,25 @@ eth2

## Start Teku

Start Teku with the external signer, keystore, and truststore details:
Start Teku with the external signer, keystore, and truststore details.
For example:

```bash
teku --network=holesky \
--eth1-endpoint=http://localhost:8545 \
--validators-external-signer-public-keys=0xa99a...e44c,0xb89b...4a0b \
--validators-external-signer-url=https://localhost:9000 \
--validators-external-signer-truststore=/Users/me/certs/web3signer_truststore.p12 \
--validators-external-signer-truststore-password-file=/Users/me/certs/truststore_pass.txt \
--validators-external-signer-keystore=/Users/me/certs/teku_client_keystore.p12 \
--validators-external-signer-keystore-password-file=/Users/me/certs/teku_keystore_password.txt
teku \
--network=holesky \
--eth1-endpoint=http://localhost:8545 \
--validators-external-signer-public-keys=0xa99a...e44c,0xb89b...4a0b \
--validators-external-signer-url=https://localhost:9000 \
--validators-external-signer-truststore=/Users/me/certs/web3signer_truststore.p12 \
--validators-external-signer-truststore-password-file=/Users/me/certs/truststore_pass.txt \
--validators-external-signer-keystore=/Users/me/certs/teku_client_keystore.p12 \
--validators-external-signer-keystore-password-file=/Users/me/certs/teku_keystore_password.txt
```

In the command:

- Specify the JSON-RPC URL of the ETH1 node using [`--eth1-endpoint`](../../reference/cli/index.md#eth1-endpoint-eth1-endpoints).
- Specify the network using [`--network`](../../reference/cli/index.md#network).
- Specify the JSON-RPC URL of the execution layer client using [`--eth1-endpoint`](../../reference/cli/index.md#eth1-endpoint-eth1-endpoints).
- Specify the validator's public keys using [`--validators-external-signer-public-keys`](../../reference/cli/index.md#validators-external-signer-public-keys).
- Specify the URL of the running external signer using [`--validators-external-signer-url`](../../reference/cli/index.md#validators-external-signer-url).
- Specify the truststore and password file using [`validators-external-signer-truststore`](../../reference/cli/index.md#validators-external-signer-truststore) and [`validators-external-signer-truststore-password-file`](../../reference/cli/index.md#validators-external-signer-truststore-password-file).
Expand Down
15 changes: 10 additions & 5 deletions docs/how-to/use-external-signer/use-web3signer.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,22 @@ Teku supports the [Web3Signer] external signing client.
## Start Teku

Start Teku and specify the external signer options.
For example:

```bash
teku --network=holesky \
--eth1-endpoint=http://localhost:8545 \
--validators-external-signer-public-keys=0xa99a...e44c,0xb89b...4a0b \
--validators-external-signer-url=http://localhost:9000
teku \
--network=holesky \
--eth1-endpoint=http://localhost:8545 \
--validators-external-signer-public-keys=0xa99a...e44c,0xb89b...4a0b \
--validators-external-signer-url=http://localhost:9000
```

The command line specifies the following:

- The validator public keys for which Web3Signer signs attestations and blocks using [`--validators-external-signer-public-keys`](../../reference/cli/index.md#validators-external-signer-public-keys).
- The network using [`--network`](../../reference/cli/index.md#network).
- The JSON-RPC URL of the execution layer client using [`--eth1-endpoint`](../../reference/cli/index.md#eth1-endpoint-eth1-endpoints).
- The validator public keys for which Web3Signer signs attestations and blocks using
[`--validators-external-signer-public-keys`](../../reference/cli/index.md#validators-external-signer-public-keys).
- The URL of the Web3Signer client using [`--validators-external-signer-url`](../../reference/cli/index.md#validators-external-signer-url).

:::note
Expand Down
19 changes: 10 additions & 9 deletions docs/reference/cli/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -1737,15 +1737,16 @@ The default is `mainnet`.

Possible values are:

| Network | Chain | Type | Description |
|:----------|:----------------|:-----------|:------------------------------------------------------------------------|
| `mainnet` | Consensus layer | Production | Main network |
| `minimal` | Consensus layer | Test | Used for local testing and development networks |
| `gnosis` | Consensus layer | Production | Network for the [Gnosis chain](https://www.gnosis.io/) |
| `holesky` | Consensus layer | Test | Multi-client testnet |
| `sepolia` | Consensus layer | Test | Multi-client testnet |
| `chiado` | Consensus layer | Test | Gnosis [testnet](https://docs.gnosischain.com/concepts/networks/chiado) |
| `lukso` | Consensus layer | Production | Network for the [Lukso chain](https://lukso.network/) |
| Network | Chain | Type | Description |
|:-----------|:----------------|:-----------|:------------------------------------------------------------------------|
| `mainnet` | Consensus layer | Production | Main network |
| `holesky` | Consensus layer | Test | Multi-client testnet |
| `ephemery` | Consensus layer | Test | Multi-client testnet |
| `sepolia` | Consensus layer | Test | Multi-client testnet |
| `minimal` | Consensus layer | Test | Used for local testing and development networks |
| `gnosis` | Consensus layer | Production | Network for the [Gnosis chain](https://www.gnosis.io/) |
| `chiado` | Consensus layer | Test | Gnosis [testnet](https://docs.gnosischain.com/concepts/networks/chiado) |
| `lukso` | Consensus layer | Production | Network for the [Lukso chain](https://lukso.network/) |

Predefined networks can provide defaults such as the initial state of the network, bootnodes, and
the address of the deposit contract.
Expand Down
Loading

0 comments on commit 9509395

Please sign in to comment.