MCPcopy Index your code
hub / github.com/ObolNetwork/charon

github.com/ObolNetwork/charon @v1.10.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.10.3 ↗ · + Follow
5,453 symbols 27,545 edges 512 files 2,627 documented · 48%
What it actually does AI analysis from the code graph — generated when you open this
loading…
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 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

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 repo which contains a docker compose setup for running a full charon cluster on your local machine.

Documentation

The Obol Docs website is the best place to get started. The important sections are intro, key concepts and charon.

For detailed documentation on this repo, see the docs folder:

There is always the charon godocs 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 of each release, in the Compatibility Matrix section.

Version compatibility

Considering semver 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 matchingMAJOR andMINOR versions of Charon for the DKG process, patch versions may differ though it is recommended to use the latest patch of any version.

Extension points exported contracts — how you extend this code

ProtocolStep (Interface)
ProtocolStep is a single step in a DKG protocol. [24 implementers]
dkg/protocol.go
DutyDefinition (Interface)
DutyDefinition defines the duty including parameters required to fetch the duty data, it is the result of resolving duti [22 …
core/types.go
Broadcaster (Interface)
Broadcaster broadcasts aggregated signed duty data set to the beacon node. [8 implementers]
core/interfaces.go
Deadliner (Interface)
Deadliner provides duty Deadline functionality. The C method isn’t thread safe and may only be used by a single goroutin [10 …
core/deadline.go
Handler (Interface)
Handler defines the request handler providing the business logic for the validator API router. [7 implementers]
core/validatorapi/router.go
CachedDutiesProvider (Interface)
CachedDutiesProvider is the interface for providing current epoch's duties. [6 implementers]
app/eth2wrap/cache.go
RoundTimer (Interface)
RoundTimer provides the duration for each consensus round. [5 implementers]
core/consensus/timer/roundtimer.go
Erc1271 (Interface)
Erc1271 is an interface for ERC-1271 smart contracts. [4 implementers]
app/eth1wrap/interface.go

Core symbols most depended-on inside this repo

Wrap
called by 1212
app/errors/errors.go
New
called by 1053
app/errors/errors.go
Equal
called by 1036
core/infosync/infosync.go
Str
called by 638
app/z/zapfield.go
Run
called by 537
core/interfaces.go
Error
called by 337
app/log/config.go
Any
called by 266
app/z/zapfield.go
Int
called by 259
app/z/zapfield.go

Shape

Function 2,742
Method 1,954
Struct 584
TypeAlias 63
FuncType 61
Interface 49

Languages

Go99%
Python1%

Modules by API surface

core/signeddata.go175 symbols
testutil/random.go159 symbols
app/eth2wrap/eth2wrap_gen.go84 symbols
dkg/dkgpb/v1/pedersen.pb.go83 symbols
cmd/testbeacon.go82 symbols
core/interfaces.go72 symbols
dkg/dkgpb/v1/frost.pb.go62 symbols
core/consensus/qbft/strategysim_internal_test.go56 symbols
app/protonil/testdata/v1/test.pb.go56 symbols
testutil/beaconmock/beaconmock.go55 symbols
core/validatorapi/router.go55 symbols
app/eth2wrap/mocks/client.go55 symbols

For agents

$ claude mcp add charon \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact