From 0528670b5e21c234b28b9da8f465d28f305c67e1 Mon Sep 17 00:00:00 2001 From: sugh01 Date: Tue, 30 Jul 2024 21:12:41 +0200 Subject: [PATCH 01/11] Document DV Setup Process with Sedge --- docs/docs/commands/generate.mdx | 1 + docs/docs/commands/importKey.mdx | 1 + docs/docs/quickstart/charon.mdx | 124 +++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 docs/docs/quickstart/charon.mdx diff --git a/docs/docs/commands/generate.mdx b/docs/docs/commands/generate.mdx index 7f07ec99..e319a1ad 100644 --- a/docs/docs/commands/generate.mdx +++ b/docs/docs/commands/generate.mdx @@ -86,6 +86,7 @@ Flags: -c, --consensus string Consensus engine client, e.g. teku, lodestar, prysm, lighthouse, Nimbus. Additionally, you can use this syntax ':' to override the docker image used for the client. If you want to use the default docker image, just use the client name -e, --execution string Execution engine client, e.g. geth, nethermind, besu, erigon. Additionally, you can use this syntax ':' to override the docker image used for the client. If you want to use the default docker image, just use the client name -v, --validator string Validator engine client, e.g. teku, lodestar, prysm, lighthouse, Nimbus. Additionally, you can use this syntax ':' to override the docker image used for the client. If you want to use the default docker image, just use the client name + --distributed boolean Deploy a node configured to run as part of a Distributed Validator Cluster. --latest Use the latest version of clients. This sets the "latest" tag on the client's docker images. Latest version might not work. --checkpoint-sync-url string Initial state endpoint (trusted synced consensus endpoint) for the consensus client to sync from a finalized checkpoint. Provide faster sync process for the consensus client and protect it from long-range attacks affored by Weak Subjetivity. Each network has a default checkpoint sync url. --fee-recipient string Suggested fee recipient. Is a 20-byte Ethereum address which the execution layer might choose to set as the coinbase and the recipient of other fees or rewards. There is no guarantee that an execution node will use the suggested fee recipient to collect fees, it may use any address it chooses. It is assumed that an honest execution node will use the suggested fee recipient, but users should note this trust assumption. diff --git a/docs/docs/commands/importKey.mdx b/docs/docs/commands/importKey.mdx index 90fa62f7..32938541 100644 --- a/docs/docs/commands/importKey.mdx +++ b/docs/docs/commands/importKey.mdx @@ -40,6 +40,7 @@ Flags: --custom-config string file path or url to use as custom network config. --custom-deploy-block string custom network deploy block. --custom-genesis string file path or url to use as custom network genesis. + --distributed boolean Import keys generated by Charon Distributed Key Generation (DKG) process --from string path to the validator keys, must follow the EIP-2335: BLS12-381 Keystore standard (default "[WORK_DIR]/sedge-data/keystore") -h, --help help for import-key -n, --network string network (default "mainnet") diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx new file mode 100644 index 00000000..f9601391 --- /dev/null +++ b/docs/docs/quickstart/charon.mdx @@ -0,0 +1,124 @@ +--- +sidebar_position: 10 +id: staking-with-obol-DV +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Set up Obol DV Node with Sedge + +## What is the Obol DVT in a Nutshell? + +**[Read more about Obol DVT here](https://dvt.obol.tech/)** + +Sedge supports DV Node setup, by allowing users to set up their full nodes with ease. This guide +will walk you through the process of setting up Obol DV node using Sedge. + +:::info + +Read more about how to generate **[Distributed Validator keys](https://docs.obol.org/docs/next/start/quickstart_group)**. + +::: + +## Workflow breakdown + +The Obol DV Setup process involves few steps: + +1. **Perform Obol DKG process**: Generate distributed node contents and validator keys compatible with Obol DVT using [DKG process](https://docs.obol.org/docs/next/start/quickstart_group). +2. **Set Up Your Full Node**: Set up your full node with **sedge generate** command. +3. **Import DKG Validator keys**: Import the keys generated in Step 1 using the **sedge import_key** command +4. **Run the cluster**: Run the cluster using **sedge run** command. + +Let's dive into each step in detail. + +## Using Sedge for setting up Obol DV node + +### Perform DKG and Generate DKG components + +To get started with Obol DVT using Sedge, you first need to generate your validator keys and deposit data and DV node components with [Obol DV Launchpad](https://holesky.launchpad.obol.org/). +You need to follow the steps listed below +1. [Step 1: Get your ENR](https://docs.obol.org/docs/next/start/quickstart_group#step-1-get-your-enr) +2. [Step 2: Create a cluster or accept an invitation to a cluster](https://docs.obol.org/docs/next/start/quickstart_group#step-2-create-a-cluster-or-accept-an-invitation-to-a-cluster) +3. [Step 3: Run the Distributed Key Generation (DKG) ceremony](https://docs.obol.org/docs/next/start/quickstart_group#step-3-run-the-distributed-key-generation-dkg-ceremony) + +At this stage, if DKG process is successful, a folder with name **.charon** will be created with the following structure for a cluster of 2 validators. + +```bash +$sedge % tree .charon +. +├── charon-enr-private-key +├── cluster-lock.json +├── deposit-data.json +└── validator_keys + ├── keystore-0.json + ├── keystore-0.txt + ├── keystore-1.json + ├── keystore-1.txt +``` + +### Setting up your full node + +Once the DKG process is complete and **.charon** folder and its contents are generated, you can set up your full node using **Sedge**: + +```bash +sedge generate full-node --validator=teku --consensus=prysm --execution=geth --network=holesky --distributed +``` + +:::note + +This command will generate a DV enabled cluster for the Holesky testnet. +If supported, you can set other networks by changing the `--network` flag. +If supported, you can set other execution, consensus and validator clients using the respective flags. +::: + +Once the Full node setup process is complete a folder with name **sedge-data** will be created. + +```bash +$sedge % tree sedge-data +tree sedge-data +sedge-data +├── docker-compose.yml +└── jwtsecret +``` +Run the import keys step + +```bash +sedge import-key --distributed --network holesky teku +``` + +:::note + +This command will import the keys inside **.charon** folder into the validator client. +If supported, you can set other networks by changing the `--network` flag. +The validator client should be identical to the client used in the full-node generate command +::: + +Once the Keys import process is complete **sedge-data** folder contents will be updated. + +```bash +sedge % tree sedge-data +sedge-data +├── docker-compose.yml +├── jwtsecret +├── keystore +│ ├── deposit-data.json +│ ├── keystore-0.txt +│ ├── keystore-1.txt +│ └── validator_keys +│ ├── keystore-0.json +│ ├── keystore-1.json +└── validator-data + ├── keys + │ ├── keystore-0.json + │ ├── keystore-1.json + └── passwords + ├── keystore-0.txt + ├── keystore-1.txt +``` + +Finally run the cluster. + +```bash +sedge run +``` \ No newline at end of file From b9aede754d31a6ddde09b6c8682029b89da38295 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:53:32 +0200 Subject: [PATCH 02/11] Update docs/docs/commands/importKey.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/commands/importKey.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/commands/importKey.mdx b/docs/docs/commands/importKey.mdx index 32938541..78ad95d8 100644 --- a/docs/docs/commands/importKey.mdx +++ b/docs/docs/commands/importKey.mdx @@ -40,7 +40,7 @@ Flags: --custom-config string file path or url to use as custom network config. --custom-deploy-block string custom network deploy block. --custom-genesis string file path or url to use as custom network genesis. - --distributed boolean Import keys generated by Charon Distributed Key Generation (DKG) process + --distributed boolean Import keys generated in a Distributed Key Generation (DKG) process --from string path to the validator keys, must follow the EIP-2335: BLS12-381 Keystore standard (default "[WORK_DIR]/sedge-data/keystore") -h, --help help for import-key -n, --network string network (default "mainnet") From 086f599493c88cd6e22b825e216b3dd7425c31d4 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:53:52 +0200 Subject: [PATCH 03/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index f9601391..a2e73d61 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -6,7 +6,7 @@ id: staking-with-obol-DV import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -# Set up Obol DV Node with Sedge +# Set up an Obol DV Node with Sedge ## What is the Obol DVT in a Nutshell? From 2e737847bb9fc77bfde8e6c7e404a58fc701de5f Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:54:14 +0200 Subject: [PATCH 04/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index a2e73d61..6c8a628b 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -8,9 +8,9 @@ import TabItem from '@theme/TabItem'; # Set up an Obol DV Node with Sedge -## What is the Obol DVT in a Nutshell? +## What are Distributed Validators? -**[Read more about Obol DVT here](https://dvt.obol.tech/)** +**[Read more about Obol DVs here](https://docs.obol.org/docs/int/key-concepts)** Sedge supports DV Node setup, by allowing users to set up their full nodes with ease. This guide will walk you through the process of setting up Obol DV node using Sedge. From 86311be09bc44d14e97eaad855bee466fb057fab Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:54:30 +0200 Subject: [PATCH 05/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index 6c8a628b..8cd8b835 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -12,12 +12,11 @@ import TabItem from '@theme/TabItem'; **[Read more about Obol DVs here](https://docs.obol.org/docs/int/key-concepts)** -Sedge supports DV Node setup, by allowing users to set up their full nodes with ease. This guide -will walk you through the process of setting up Obol DV node using Sedge. +Sedge supports setting up distributed validator nodes just like it supports setting up a traditional validator node. This guide will walk you through the process of setting up a DV node using Sedge. -:::info +:::tip -Read more about how to generate **[Distributed Validator keys](https://docs.obol.org/docs/next/start/quickstart_group)**. +Read more about how to generate **[Distributed Validator keys here](https://docs.obol.org/docs/next/start/quickstart_group)**. ::: From 3a24c5a627d4735d8a66f3e7e00575492aad2341 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:54:40 +0200 Subject: [PATCH 06/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index 8cd8b835..ac7a9b35 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -22,7 +22,7 @@ Read more about how to generate **[Distributed Validator keys here](https://docs ## Workflow breakdown -The Obol DV Setup process involves few steps: +The Obol DV Setup process involves a few steps: 1. **Perform Obol DKG process**: Generate distributed node contents and validator keys compatible with Obol DVT using [DKG process](https://docs.obol.org/docs/next/start/quickstart_group). 2. **Set Up Your Full Node**: Set up your full node with **sedge generate** command. From a7f0affa2b4cfa514d9b999419718e0088645fc2 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:54:52 +0200 Subject: [PATCH 07/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index ac7a9b35..50347cad 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -58,7 +58,7 @@ $sedge % tree .charon ### Setting up your full node -Once the DKG process is complete and **.charon** folder and its contents are generated, you can set up your full node using **Sedge**: +Once the DKG process is complete and `.charon` folder and its contents are generated, you can set up your full node using **Sedge**: ```bash sedge generate full-node --validator=teku --consensus=prysm --execution=geth --network=holesky --distributed From 071f50e27912f9c8b5c3fccaba9ab8f221dcb4a0 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:55:03 +0200 Subject: [PATCH 08/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index 50347cad..da4979e0 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -71,7 +71,7 @@ If supported, you can set other networks by changing the `--network` flag. If supported, you can set other execution, consensus and validator clients using the respective flags. ::: -Once the Full node setup process is complete a folder with name **sedge-data** will be created. +Once the full node setup process is complete a folder with name `sedge-data` will be created. ```bash $sedge % tree sedge-data From cc6537a81338244bbcbbf06b324848804ca22a65 Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:55:15 +0200 Subject: [PATCH 09/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index da4979e0..04b0acf3 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -80,7 +80,7 @@ sedge-data ├── docker-compose.yml └── jwtsecret ``` -Run the import keys step +Next, run the import keys step: ```bash sedge import-key --distributed --network holesky teku From af334816ce7ee700051b2c54c45644952a10c98d Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:55:23 +0200 Subject: [PATCH 10/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index 04b0acf3..a125dfdb 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -88,7 +88,7 @@ sedge import-key --distributed --network holesky teku :::note -This command will import the keys inside **.charon** folder into the validator client. +This command will import the keys inside `.charon` folder into the validator client. If supported, you can set other networks by changing the `--network` flag. The validator client should be identical to the client used in the full-node generate command ::: From 11c67bf2acc1a38f0f34929f5065aa1c6f5bebfe Mon Sep 17 00:00:00 2001 From: Sukhendu <19183308+sugh01@users.noreply.github.com> Date: Wed, 31 Jul 2024 12:55:35 +0200 Subject: [PATCH 11/11] Update docs/docs/quickstart/charon.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Oisín Kyne <4981644+OisinKyne@users.noreply.github.com> --- docs/docs/quickstart/charon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/quickstart/charon.mdx b/docs/docs/quickstart/charon.mdx index a125dfdb..5607e28e 100644 --- a/docs/docs/quickstart/charon.mdx +++ b/docs/docs/quickstart/charon.mdx @@ -93,7 +93,7 @@ If supported, you can set other networks by changing the `--network` flag. The validator client should be identical to the client used in the full-node generate command ::: -Once the Keys import process is complete **sedge-data** folder contents will be updated. +Once the private keys import process is complete, the `sedge-data` folder contents will be updated. ```bash sedge % tree sedge-data