Skip to content

Commit

Permalink
Release v1.1.2 (#443)
Browse files Browse the repository at this point in the history
* Touch ups before version

* Cut v1.1.2
  • Loading branch information
OisinKyne authored Oct 29, 2024
1 parent 415c784 commit b463caa
Show file tree
Hide file tree
Showing 91 changed files with 7,759 additions and 26 deletions.
2 changes: 1 addition & 1 deletion docs/advanced/deployment-best-practices.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Each node in the cluster should have its own independent beacon node (EL+CL) and

## Placement of Charon clients

If you wish to divide a Distributed Validator node across multiple physical or virtual machines; locaate the Charon client on the EL/CL machine instead of the VC machine. This setup reduces latency from Charon to the consensus layer, as well as keeping the public-internet connected clients separate from the clients that hold the validator private keys. Be sure to use encrypted communication between your VC and the Charon client, potentially through a cloud-provided network, a self-managed network tunnel, a VPN, a Kubernetes [CNI](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/), or other manner.
If you wish to divide a Distributed Validator node across multiple physical or virtual machines; locate the Charon client on the EL/CL machine instead of the VC machine. This setup reduces latency from Charon to the consensus layer, as well as keeping the public-internet connected clients separate from the clients that hold the validator private keys. Be sure to use encrypted communication between your VC and the Charon client, potentially through a cloud-provided network, a self-managed network tunnel, a VPN, a Kubernetes [CNI](https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/), or other manner.

## Node Configuration

Expand Down
4 changes: 2 additions & 2 deletions docs/advanced/lido_csm.md → docs/advanced/lido-csm.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ cd charon-distributed-validator-node
Use docker to create an ENR

```sh
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.1 create enr
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.2 create enr
```

### Back up the private key located in `.charon/charon-enr-private-key`
Expand Down Expand Up @@ -228,5 +228,5 @@ The EA member clicks on the **Create Node Operator** button.
Sign the transaction. The cluster is ready for deposit from Lido CSM. At this point, your job is finished.

:::warning
When claiming your cluster's rewards, be sure to claim in either native ETH or wstETH. Rebasing tokens like stETH may not receive the incremental yield you’re expecting. More information can be found in the [splits.org documentation](https://docs.splits.org/core/split#how-it-works).
When claiming your cluster's rewards, **be sure to claim in wstETH only** (Wrapped Staked Ether). Ether withdrawal gives you an NFT that is not compatible with a splitter, while a rebasing token like stETH may not receive the incremental yield you’re expecting. More information can be found in the [splits.org documentation](https://docs.splits.org/core/split#how-it-works).
:::
4 changes: 2 additions & 2 deletions docs/advanced/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The local Grafana server will have a few pre-built dashboards:

1. Charon Overview

This is the main dashboard that provides all the relavant details about the Charon node, for example - peer connectivity, duty completion, health of beacon node and downstream validator, etc. To open, navigate to `charon-distributed-validator-node` directory and open the following `uri` in the browser `http://localhost:3000/d/d6qujIJVk/`.
This is the main dashboard that provides all the relevant details about the Charon node, for example - peer connectivity, duty completion, health of beacon node and downstream validator, etc. To open, navigate to `charon-distributed-validator-node` directory and open the following `uri` in the browser `http://localhost:3000/d/d6qujIJVk/`.

2. Single Charon Node Dashboard (deprecated)

Expand All @@ -25,7 +25,7 @@ The local Grafana server will have a few pre-built dashboards:
| Alert Name | Description | Troubleshoot |
| --- | --- | --- |
| ClusterBeaconNodeDown | This alert is activated when the beacon node in a the cluster is offline. The beacon node is crucial for validating transactions and producing new blocks. Its unavailability could disrupt the overall functionality of the cluster. | Most likely data is corrupted. Wipe data from the point you know data was corrupted and restart beacon node so it can be synced again. |
| ClusterMissedAttestations | This alert indicates that there have been missed attestations in the cluster. Missed attestations may suggest that validators are not operating correctly, compromising the security and efficiency of the cluster. | This alert is triggered when 3 attestation are missed in 2 minutes. Check if the minimum threshold of peers are online. If correct, check for beacon node API errors and downstream validator errors using Loki. Lastly, debug from Docker using `docker compose debug`. |
| ClusterMissedAttestations | This alert indicates that there have been missed attestations in the cluster. Missed attestations may suggest that validators are not operating correctly, compromising the security and efficiency of the cluster. | This alert is triggered when 3 attestations are missed in 2 minutes. Check if the minimum threshold of peers are online. If correct, check for beacon node API errors and downstream validator errors using Loki. Lastly, debug from Docker using `docker compose debug`. |
| ClusterInUnknownStatus | This alert is designed to activate when a node within the cluster is detected to be in an unknown state. The condition is evaluated by checking whether the maximum of the `app_monitoring_readyz` metric is 0. | This is most likely a bug in Charon. Report to us via [Discord](https://discord.com/channels/849256203614945310/970759460693901362). |
| ClusterInsufficientPeers | This alert is set to activate when the number of peers for a node in the cluster is insufficient. The condition is evaluated by checking whether the maximum of the `app_monitoring_readyz` equals 4. | If you are running group cluster, check with other peers to troubleshoot the issue. If you are running solo cluster, look into other machines running the DVs to find the problem. |
| ClusterFailureRate | This alert is activated when the failure rate of the cluster exceeds a certain threshold, more specifically - more than 5% failures in duties in the last 6 hours. | Check the upstream and downstream dependencies, latency and hardware issues. |
Expand Down
2 changes: 1 addition & 1 deletion docs/advanced/quickstart-builder-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,6 @@ This indicates that your Charon node is successfully registering with the relay

If you are using the [ultrasound relay](https://relay.ultrasound.money), you can enter your cluster's distributed validator public key(s) into their website, to confirm they also see the validator as correctly registered.

You should check that your validator client's logs look healthy, and ensure that you haven't added a `fee-recipient` address that conflicts with what has been selected by your cluster in your cluster-lock file, as that may prevent your validator from producing a signature for the block when the opportunity arises. You should also confirm the same for all of the other peers in your cluster.
You should check that your validator client's logs look healthy, and ensure that you haven't added a `fee-recipient` address that conflicts with what has been selected by your cluster in your `cluster-lock.json` file, as that may prevent your validator from producing a signature for the block when the opportunity arises. You should also confirm the same for all of the other peers in your cluster.

Once a proposal has been made, you should look at the `Block Extra Data` field under `Execution Payload` for the block on [Beaconcha.in](https://beaconcha.in/block/18450364), and confirm there is text present, this generally suggests the block came from a builder, and was not a locally constructed block.
2 changes: 1 addition & 1 deletion docs/advanced/quickstart-combine.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ Run the following command:

```shell
# Combine a clusters private keys
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.1 combine --cluster-dir /opt/charon/cluster --output-dir /opt/charon/combined
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.2 combine --cluster-dir /opt/charon/cluster --output-dir /opt/charon/combined
```

This command will store the combined keys in the `output-dir`, in this case a folder named `combined`.
Expand Down
2 changes: 1 addition & 1 deletion docs/advanced/quickstart-split.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ At the end of this process, you should have a tree like this:
Run the following docker command to split the keys (for mainnet):

```shell
CHARON_VERSION= # E.g. v1.1.1
CHARON_VERSION= # E.g. v1.1.2
CLUSTER_NAME= # The name of the cluster you want to create.
WITHDRAWAL_ADDRESS= # The address you want to use for withdrawals (this is just for accuracy in your lock file, you can't change a withdrawal address for a validator that has already been deposited)
FEE_RECIPIENT_ADDRESS= # The address you want to use for block reward and MEV payments.
Expand Down
22 changes: 11 additions & 11 deletions docs/advanced/test-command.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import TabItem from '@theme/TabItem';
The `charon alpha test` command is in an alpha state and is subject to change until it is made available as `charon test` in a future version.
:::

Charon test commands are designed to help you evaluate the performance and readiness of your candidate cluster. It allows you to test your connection to other Charon peers, the performance of your beacon node(s), and the readiness of your validator client. It prints a performance report to the standard output (which can be omitted by with the `--quiet` flag) and a machine-readable TOML format of the report if the `--output-toml` flag is set.
Charon test commands are designed to help you evaluate the performance and readiness of your candidate cluster. It allows you to test your connection to other Charon peers, the performance of your beacon node(s), and the readiness of your validator client. It prints a performance report to the standard output (which can be omitted with the `--quiet` flag) and a machine-readable TOML format of the report if the `--output-toml` flag is set.

## Test your connection to peers

Expand All @@ -22,11 +22,11 @@ To be able to establish direct connection, you have to ensure:

- Your machine is publicly accessible on the internet or at least a specific port is.
- You add flag `p2p-tcp-address` (i.e.: `127.0.0.1:9001`) flag and the port specified in it is free and publicly accessible.
- You add the flag `p2p-external-ip` (i.e.: `8.8.8.8`) and specify your public ip.
- You add the flag `p2p-external-ip` (i.e.: `8.8.8.8`) and specify your public IP.

If all points are satisfied by you and the other peers, you should be able to establish a direct TCP connection between each other. Note that a relay is still required, as it is used for peer discovery.

At least 1 enr is required to be supplied to the `--enrs` flag.
At least 1 ENR is required to be supplied to the `--enrs` flag.

### Pre-requisites

Expand All @@ -44,7 +44,7 @@ charon alpha test peers \
### Run with Docker

```shell
docker run -v /Users/obol/charon/.charon:/opt/charon/.charon obolnetwork/charon:v1.1.1 alpha test peers \
docker run -v /Users/obol/charon/.charon:/opt/charon/.charon obolnetwork/charon:v1.1.2 alpha test peers \
--enrs="enr:-HW4QNDXi9MzdH9Af65g20jDfelAJ0kJhclitkYYgFziYHXhRFF6JyB_CnVnimB7VxKBGBSkHbmy-Tu8BJq8JQkfptiAgmlkgnY0iXNlY3AyNTZrMaEDBVt5pk6x0A2fjth25pjLOEE9DpqCG-BCYyvutY04TZs,enr:-HW4QO2vefLueTBEUGly5hkcpL7NWdMKWx7Nuy9f7z6XZInCbFAc0IZj6bsnmj-Wi4ElS6jNa0Mge5Rkc2WGTVemas2AgmlkgnY0iXNlY3AyNTZrMaECR9SmYQ_1HRgJmNxvh_ER2Sxx78HgKKgKaOkCROYwaDY"
```

Expand All @@ -68,7 +68,7 @@ charon alpha test beacon \
### Run with Docker

```shell
docker run obolnetwork/charon:v1.1.1 alpha test beacon \
docker run obolnetwork/charon:v1.1.2 alpha test beacon \
--endpoints="https://ethereum-holesky-beacon-api.publicnode.com,https://ethereum-sepolia-beacon-api.publicnode.com"
```

Expand All @@ -91,12 +91,12 @@ charon alpha test validator
### Run with Docker

```shell
docker run obolnetwork/charon:v1.1.1 alpha test validator
docker run obolnetwork/charon:v1.1.2 alpha test validator
```

## Test MEV relay

Run tests towards MEV relay(s), to evaluate its effectiveness for a Distributed Validator cluster. If a MEV boost instance is configured for the validator node, it is of utmost importance that the connection to it is fast. If not, the chance of missing a block proposal raises significantly, because of a slow building of the block from the MEV.
Run tests towards MEV relay(s), to evaluate its effectiveness for a Distributed Validator cluster. If a MEV-Boost instance is configured for the validator node, it is of utmost importance that the connection to it is fast. If not, the chance of missing a block proposal increases significantly, because of a slow building of the block from the MEV.

At least 1 endpoint is required to be supplied to the `--endpoints` flag.

Expand All @@ -114,12 +114,12 @@ charon alpha test mev \
### Run with Docker

```shell
docker run -it obolnetwork/charon:v1.1.1 alpha test mev --endpoints="https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@titanrelay.xyz"
docker run -it obolnetwork/charon:v1.1.2 alpha test mev --endpoints="https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@titanrelay.xyz"
```

## Test your machine and network performance

Run tests towards your machine and network, to evaluate its effectiveness for a Distributed Validator cluster. While Charon does not require highly performant hardware, the network connectivity of the machine it is running on should be good. In comparison, the beacon node requires not only good connectivity, but also performant storage with high input-output operations per second, enough memory and also good network connectivity. This test aims to address all those requirements and give a good overview of the system.
Run tests towards your machine and network, to evaluate their effectiveness for a Distributed Validator cluster. While Charon does not require highly performant hardware, the network connectivity of the machine it is running on should be good. In comparison, the beacon node requires not only good connectivity, but also performant storage with high input-output operations per second, enough memory and also good network connectivity. This test aims to address all those requirements and give a good overview of the system.

### Pre-requisites

Expand All @@ -134,12 +134,12 @@ charon alpha test performance
### Run with Docker

```shell
docker run obolnetwork/charon:v1.1.1 alpha test performance
docker run obolnetwork/charon:v1.1.2 alpha test performance
```

For proper examination of the disk performance, it is advised to run the tests in a Docker volume.

```shell
docker run -v ${HOME}/charon/test:/opt/charon/test obolnetwork/charon:v1.1.1 alpha test performance \
docker run -v ${HOME}/charon/test:/opt/charon/test obolnetwork/charon:v1.1.2 alpha test performance \
--disk-io-test-file-dir=/opt/charon/test
```
2 changes: 1 addition & 1 deletion docs/charon/charon-cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ sidebar_position: 5

# CLI reference

The following is a reference for Charon version [`v1.1.1`](https://github.com/ObolNetwork/charon/releases/tag/v1.1.1). Find the latest release on [our Github](https://github.com/ObolNetwork/charon/releases).
The following is a reference for Charon version [`v1.1.2`](https://github.com/ObolNetwork/charon/releases/tag/v1.1.2). Find the latest release on [our Github](https://github.com/ObolNetwork/charon/releases).

The following are the top-level commands available to use.

Expand Down
2 changes: 1 addition & 1 deletion docs/faq/errors.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ docker compose logs
<li>
Run{" "}
<code>
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.1 enr
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.2 enr
</code>
. This prints the ENR on your screen.{" "}
</li>
Expand Down
4 changes: 2 additions & 2 deletions docs/start/quickstart_alone.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The private key shares can be created centrally and distributed securely to each
cd charon-distributed-validator-cluster/

# Run the command provided in the DV Launchpad "Create a cluster alone" flow
docker run -u $(id -u):$(id -g) --rm -v "$(pwd)/:/opt/charon" obolnetwork/charon:v1.1.1 create cluster --definition-file=...
docker run -u $(id -u):$(id -g) --rm -v "$(pwd)/:/opt/charon" obolnetwork/charon:v1.1.2 create cluster --definition-file=...
```

</TabItem>
Expand All @@ -58,7 +58,7 @@ The private key shares can be created centrally and distributed securely to each
Check the [Charon CLI reference](../charon/charon-cli-reference.md#create-a-full-cluster-locally) for additional, optional flags to set.

```shell
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.1 create cluster \
docker run --rm -v "$(pwd):/opt/charon" obolnetwork/charon:v1.1.2 create cluster \
--nodes=4 \
--network=holesky \
--num-validators=1 \
Expand Down
Loading

0 comments on commit b463caa

Please sign in to comment.