Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Get ENR" dappnode tab #363

Merged
merged 2 commits into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 86 additions & 11 deletions docs/start/quickstart_group.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,16 @@ This quickstart guide will walk you through creating a Distributed Validator Clu
Make sure <code>docker</code> is running before executing the commands
below.
</li>
<li>
(If you are taking part using a DappNode) A computer with an up to date version of <a href="https://docs.dappnode.io/docs/user/install/overview/" target="_blank"> DappNode</a>'s software and an internet connection.
</li>
</ul>

<br />

## Step 1: Generate an ENR
## Step 1: Get your ENR

<Tabs groupId="Get-ENR">
<TabItem value="CLI" label="CLI">

In order to prepare for a distributed key generation ceremony, you need to create an ENR for your charon client. This ENR is a public/private key pair that allows the other charon clients in the DKG to identify and connect to your node. If you are creating a cluster but not taking part as a node operator in it, you can skip this step.

```bash
Expand All @@ -76,8 +80,83 @@ Please make sure to create a backup of the private key at `.charon/charon-enr-pr
:::tip
If instead of being shown your `enr` you see an error saying `permission denied` then you may need to [update your docker permissions](../faq/errors.mdx#docker-permission-denied-error) to allow the command to run successfully.
:::
</TabItem>
<TabItem value="Dappnode" label="Dappnode">

For the next step, select the _Creator_ tab if you are coordinating the creation of the cluster. (This role holds no position of privilege in the cluster, it only sets the initial terms of the cluster that the other operators agree to.) Select the _Operator_ tab if you are accepting an invitation to operate a node in a cluster proposed by the cluster creator.
#### Prepare an Execution and Consensus client

Before preparing the DappNode to take part in a Distributed Validator Cluster, you must ensure you have selected an execution client & consensus client on your DappNode under the 'Stakers' tab for the network you intend to validate.

<p>
<ol>
<li>
Login to the DappNode Interface:{" "}
<a href="http://my.dappnode/dashboard" target="_blank">
Dappnode Login
</a>
<img src="/img/dappnodeLogin.png" alt="Dappnode Login" />
</li>
<li>
Click on the 'Stakers' tab on the left side, select an execution client (e.g. Geth) & consensus client (e.g. Lodestar) & click 'Apply changes'. This will start the syncing process which can take a number of hours.
<img src="/img/SelectClients.png" alt="Select Clients" />
</li>
<li>
Once the clients are finished syncing, it should reflect on your 'Dashboard' as shown below.
<img src="/img/Dashboard.png" alt="Dashboard showing chains are synced and their status are healthy" />
</li>
</ol>
</p>

#### Install the Obol DappNode package

With a fully synced Ethereum node now running on the DappNode, the below steps will walk through installing the Obol Holesky package via an IPFS hash and preparing for a Distributed Key Generation ceremony. Future versions of this guide will download the package from the official DappNode DappStore once a stable 1.0 release is made.

<p>
<ol>
<li>
Before installing the package, go to the Obol DappNode Repo in order to get the latest IPFS hash.
<ul>
<li><a href="https://github.com/dappnode/DAppNodePackage-holesky-obol/releases" target="_blank">Holesky Repo</a></li>
<li><a href="https://github.com/dappnode/DAppNodePackage-obol/releases" target="_blank">Mainnet Repo</a></li>
</ul>
</li>
<li>
Copy the latest IPFS hash from the release details dropdown.
<img src="/img/DappnodeRepo.png" alt="Retrieve IPFS Hash" />
</li>
<li>
Go back to DappNode Dashboard > Dappstore, select the 'Public' tab, and accept the terms & conditions before proceeding.
<img src="/img/PublicTab.png" alt="Select Public Tab" />
</li>
<li>
Paste the IPFS hash you copied from Github and click 'Search' (It may take a minute for the package to be found.) You will then be presented with the package installation page. Under the blue 'Install' button, click on 'Advanced Options' & toggle the button to 'Bypass only signed safe restriction'.
<img src="/img/BypassButton.png" alt="bypass only signed safe restriction" />
</li>
<li>
Click 'Install' & in the config mode page > select new cluster & submit. (if you already have the config URL, you can select URL option.)
<img src="/img/InstallPAckage.png" alt="Install Package" />
</li>
<li>
Accept the terms & conditions and the install process will begin.
<img src="/img/TermsAndConditions.png" alt="Accept terms and conditions" />
<img src="/img/PackageInstalling.png" alt="Package Installing" />
</li>
<li>
You should now be able to see the Holesky Obol package under the 'Packages' tab. Click on the package to see important details.
<img src="/img/PackagesTab.png" alt="Go to packages tab" />
</li>
<li>
Under the 'Info' tab, you will be see pre-generated ENRs, along with information such as the status of all five distributed validator clusters, their docker volumes & other menu options.
<img src="/img/GetENR.png" alt="Get your ENR" />
</li>
<li>
Select any of the ENRs listed that are not already in use. This ENR will be used in the next step.
</li>
</ol>
</p>
</TabItem>
</Tabs>
For Step 2, select the "Creator" tab if you are coordinating the creation of the cluster (This role holds no position of privilege in the cluster, it only sets the initial terms of the cluster that the other operators agree to). Select the "Operator" tab if you are accepting an invitation to operate a node in a cluster, proposed by the cluster creator.

## Step 2: Create a cluster or accept an invitation to a cluster

Expand Down Expand Up @@ -359,7 +438,6 @@ Please make sure to create a backup of your `.charon/` folder. **If you lose you
The `cluster-lock` and `deposit-data` files are identical for each operator, if lost, they can be copied from one operator to another.
:::


Now that the DKG has been completed, all operators can start their nodes.

## Step 4: Start your Distributed Validator Node
Expand All @@ -368,13 +446,11 @@ With the DKG ceremony over, the last phase before activation is to prepare your

<Tabs groupId="Full-Pre-Existing">
<TabItem value="Full Node" label="Full Node" default>
The quickstart <a href="https://github.com/ObolNetwork/charon-distributed-validator-node" target="_blank">repository</a> is configured to sync an execution layer client (<code>Nethermind</code>) and a consensus layer client (<code>Lighthouse</code>). You can also leverage alternative ways to run a node such as Ansible, Helm, or Kubernetes manifests.

The quickstart <a href="https://github.com/ObolNetwork/charon-distributed-validator-node" target="_blank">repository</a> is configured to sync an execution layer client (<code>Nethermind</code>) and a consensus layer client (<code>Lighthouse</code>). You can also leverage alternative ways to run a node such as Ansible, Helm, or Kubernetes manifests.

<Tabs groupId="Docker-Helm">

<TabItem value="Docker" label="Docker" default>


:::info
Currently, the quickstart [repo](https://github.com/ObolNetwork/charon-distributed-validator-node) configures a node for the Holesky testnet. It is possible to choose a different network (another testnet, or mainnet) by overriding the `.env` file.
Expand All @@ -388,6 +464,7 @@ Setup the desired inputs for the DV, including the network you wish to operate o
# Copy ".env.sample", renaming it ".env"
cp .env.sample .env
```

:::

:::caution
Expand Down Expand Up @@ -446,7 +523,6 @@ You might notice that there are logs indicating that a validator cannot be found

<TabItem value="Existing Beacon Node" label="Existing Beacon Node">


#### Using a pre-existing beacon node

:::caution
Expand Down Expand Up @@ -503,9 +579,8 @@ docker compose up -d
</TabItem>
</Tabs>


:::tip
In a Distributed Validator Cluster, it is important to have a low latency connection to your peers. Charon clients will use the NAT protocol to attempt to establish a direct connection to one another automatically. If this doesn't happen, you should port forward charon's p2p port to the public internet to facilitate direct connections. (The default port to expose is `:3610`). Read more about charon's networking [here](../charon/networking.md).
:::

If you have gotten to this stage, every node is up, synced and connected, congratulations. You can now move forward to activating your validator to begin staking.
If you have gotten to this stage, every node is up, synced and connected, congratulations. You can now move forward to activating your validator to begin staking.
Binary file added static/img/BypassButton.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/DappnodeRepo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/Dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/GetENR.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/InstallPackage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/PackageInstalling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/PackagesTab.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/PublicTab.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/SelectClients.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/TermsAndConditions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/dappnodeLogin.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading