An open API service indexing awesome lists of open source software.

https://github.com/obolnetwork/charon

Charon (pronounced 'kharon') is a Proof of Stake Ethereum Distributed Validator Middleware Client
https://github.com/obolnetwork/charon

blockchain consensus-layer distributed-systems distributed-validator ethereum go golang proof-of-stake

Last synced: 2 months ago
JSON representation

Charon (pronounced 'kharon') is a Proof of Stake Ethereum Distributed Validator Middleware Client

Awesome Lists containing this project

README

          


Charon
The Distributed Validator middleware client





This repo contains the source code for the distributed validator client _Charon_ (pronounced 'kharon'); a HTTP middleware client for Ethereum Staking that enables you to safely run a single validator across a group of independent nodes.

Charon is accompanied by a webapp called the [Distributed Validator Launchpad](https://holesky.launchpad.obol.tech/) for distributed validator key creation.

Charon is used by stakers to distribute the responsibility of running Ethereum Validators across a number of different instances and client implementations.

![Example Obol Cluster](./docs/images/DVCluster.png)

###### A Distributed Validator Cluster that uses the Charon client to hedge client and hardware failure risks

## Quickstart

The easiest way to test out charon is with the [charon-distributed-validator-cluster](https://github.com/ObolNetwork/charon-distributed-validator-cluster) repo
which contains a docker compose setup for running a full charon cluster on your local machine.

## Documentation

The [Obol Docs](https://docs.obol.tech/) website is the best place to get started.
The important sections are [intro](https://docs.obol.org/learn/charon),
[key concepts](https://docs.obol.tech/docs/int/key-concepts) and [charon](https://docs.obol.tech/docs/charon/intro).

For detailed documentation on this repo, see the [docs](docs) folder:

- [Configuration](docs/configuration.md): Configuring a charon node
- [Architecture](docs/architecture.md): Overview of charon cluster and node architecture
- [Project Structure](docs/structure.md): Project folder structure
- [Branching and Release Model](docs/branching.md): Git branching and release model
- [Go Guidelines](docs/goguidelines.md): Guidelines and principals relating to go development
- [Contributing](docs/contributing.md): How to contribute to charon; githooks, PR templates, etc.

There is always the [charon godocs](https://pkg.go.dev/github.com/obolnetwork/charon) for the source code documentation.

## Project Status

A table detailing Charon compatibility with upstream consensus clients and downstream validators can be found [in the changelog](https://github.com/ObolNetwork/charon/releases) of each release, in the **Compatibility Matrix** section.

## Version compatibility

Considering [semver](https://semver.org) as the project's versioning scheme, two given versions of Charon are:
- **compatible** if their `MAJOR` number is the same, `MINOR` and `PATCH` numbers differ
- **incompatible** if their `MAJOR` number differs

There are several reasons to justify a new `MAJOR` release, for example:
- a new Ethereum hardfork
- an old Ethereum hardfork is removed due to network inactivity
- modifications to the internal P2P network or consensus mechanism requiring deep changes to the codebase

The `charon dkg` subcommand **is more restrictive** than this general compatibility promise; all peers should use matching`MAJOR` and`MINOR` versions of Charon for the DKG process, patch versions may differ though it is recommended to use the latest patch of any version.