https://github.com/berachain/beacon-kit
A modular framework for building EVM consensus clients ⛵️✨
https://github.com/berachain/beacon-kit
besu bet cometbft cosmos erigon ethereum ethereumjs evm foundry geth golang l1 l2 nethermind reth rust solidity tendermint
Last synced: 5 months ago
JSON representation
A modular framework for building EVM consensus clients ⛵️✨
- Host: GitHub
- URL: https://github.com/berachain/beacon-kit
- Owner: berachain
- License: other
- Created: 2024-02-02T19:52:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-13T13:40:02.000Z (about 1 year ago)
- Last Synced: 2025-05-13T13:42:28.059Z (about 1 year ago)
- Topics: besu, bet, cometbft, cosmos, erigon, ethereum, ethereumjs, evm, foundry, geth, golang, l1, l2, nethermind, reth, rust, solidity, tendermint
- Language: Go
- Homepage: https://berachain.com
- Size: 129 MB
- Stars: 293
- Watchers: 32
- Forks: 225
- Open Issues: 139
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
A modular framework for building EVM consensus clients ⛵️✨
[](https://github.com/berachain/beacon-kit/actions/workflows/pipeline.yml)
[](https://codecov.io/gh/berachain/beacon-kit)
[](https://t.me/beacon_kit)
[](https://x.com/berachain)
[](https://discord.gg/berachain)
## What is BeaconKit?
[BeaconKit](https://docs.berachain.com/learn/what-is-beaconkit) is a modular framework for building EVM based consensus clients.
The framework offers the most user-friendly way to build and operate an EVM blockchain, while ensuring a functionally identical execution environment to that of the Ethereum Mainnet.
## Supported Execution Clients
Through utilizing the [Ethereum Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine)
BeaconKit supports the following execution clients:
- [**Bera-Geth**](https://github.com/berachain/bera-geth): Official Go implementation of the Berachain protocol.
- [**Bera-Reth**](https://github.com/berachain/bera-reth): Rust-based client focusing on performance and reliability.
## Running a Local Development Network
**Prerequisites:**
- [Docker](https://docs.docker.com/engine/install/)
- [Golang 1.25.5+](https://go.dev/doc/install)
- [Foundry](https://book.getfoundry.sh/)
Start by opening two terminals side-by-side:
**Terminal 1:**
```bash
# Start the sample BeaconKit Consensus Client:
make start
```
**Terminal 2:**
**Note:** This must be run *after* the `beacond` node is started since `make start` will populate the
eth-genesis file used by the Execution Client.
```bash
# Start an Ethereum Execution Client:
make start-reth # or start-geth
```
The account with
`private-key=0xfffdbb37105441e14b0ee6330d855d8504ff39e705c3afa8f859ac9865f99306`
corresponding with `address=0x20f33ce90a13a4b5e7697e3544c3083b8f8a51d4` is
preloaded with the native EVM token.
## Multinode Local Devnet
Please refer to the [Kurtosis README](https://github.com/berachain/beacon-kit/blob/main/kurtosis/README.md) for more information on how to run a multinode local devnet.
## Important Commands and Options
`beacond help` lists available commands. Some commands have sub-commands.
`beacond init` creates a folder structure for beacond to operate in, along with initial configuration files, the important ones being `app.toml` and `config.toml`.
`beacond start` starts the chain client and begins the syncing process.
The key configuration value is the Beacon chain specification ("chainspec") - analogous to an Eth genesis - is held in a spec.toml file. There are three well-known chainspecs (`mainnet|testnet|devnet`). Or, a custom file can be provided to provide your own scenario's settings - see this [example using Docker](https://docs.berachain.com/nodes/guides/docker-devnet).
The chainspec is set with the `--beacon-kit.chain-spec` command line option, and if necessary for a custom chainspec, use `--beacon-kit.chain-spec-file`. If used during `beacond init`, this value is written into app.toml and does not need to be specified anymore.
You can override the default operating directories for beacond with the `--home ` option.
The [Berachain Node Quickstart](https://docs.berachain.com/nodes/quickstart) provides a quick deployment of mainnet or testnet on your desk.
For developing with beacon-kit, you have options:
1. see the Makefile for targets to start stand-alone processes
2. see [an example deploying a team with Docker on a custom chainspec](https://docs.berachain.com/nodes/guides/docker-devnet)
3. see [a deployment with Kurtosis](https://docs.berachain.com/nodes/guides/kurtosis)
4. see [an expect script that does a complete cycle of deposits, withdrawal, eviction, voluntary exit](https://github.com/berachain/guides/blob/main/apps/local-docker-devnet/devnet-automation.exp)