GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - grandinetech/grandine: High performance Ethereum consensus client

BranchesTags
Open more actions menu

Latest commit

 

History

1,140 Commits
1,140 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.github/workflows
.github/workflows
 
 
.revmux
.revmux
 
 
ad_hoc_bench
ad_hoc_bench
 
 
allocator
allocator
 
 
arithmetic
arithmetic
 
 
attestation_verifier
attestation_verifier
 
 
audit
audit
 
 
benches
benches
 
 
binary_utils
binary_utils
 
 
bindings
bindings
 
 
block_producer
block_producer
 
 
bls
bls
 
 
book
book
 
 
builder_api
builder_api
 
 
clock
clock
 
 
data_dumper
data_dumper
 
 
database
database
 
 
debug_info
debug_info
 
 
dedicated_executor @ 0d36fea
dedicated_executor @ 0d36fea
 
 
deposit_tree
deposit_tree
 
 
directories
directories
 
 
doppelganger_protection
doppelganger_protection
 
 
eip_2335
eip_2335
 
 
eip_7594
eip_7594
 
 
eth1
eth1
 
 
eth1_api
eth1_api
 
 
eth2_cache_utils
eth2_cache_utils
 
 
eth2_libp2p @ a564020
eth2_libp2p @ a564020
 
 
execution_engine
execution_engine
 
 
factory
factory
 
 
features
features
 
 
fork_choice_control
fork_choice_control
 
 
fork_choice_store
fork_choice_store
 
 
genesis
genesis
 
 
grandine-snapshot-tests @ 134fdb8
grandine-snapshot-tests @ 134fdb8
 
 
grandine
grandine
 
 
grandine_version
grandine_version
 
 
hashing
hashing
 
 
helper_functions
helper_functions
 
 
hive @ 79b2c38
hive @ 79b2c38
 
 
http_api
http_api
 
 
http_api_utils
http_api_utils
 
 
interop
interop
 
 
keymanager
keymanager
 
 
kzg_utils
kzg_utils
 
 
liveness_tracker
liveness_tracker
 
 
logging
logging
 
 
metrics
metrics
 
 
operation_pools
operation_pools
 
 
p2p
p2p
 
 
panics
panics
 
 
predefined_chains
predefined_chains
 
 
prometheus_metrics
prometheus_metrics
 
 
pubkey_cache
pubkey_cache
 
 
runtime
runtime
 
 
scripts
scripts
 
 
serde_utils
serde_utils
 
 
shuffling
shuffling
 
 
signer
signer
 
 
slasher
slasher
 
 
slashing-protection-interchange-tests @ bb79006
slashing-protection-interchange-tests @ bb79006
 
 
slashing_protection
slashing_protection
 
 
snapshot_test_utils
snapshot_test_utils
 
 
spec_test_utils
spec_test_utils
 
 
ssz
ssz
 
 
ssz_derive
ssz_derive
 
 
state_cache
state_cache
 
 
std_ext
std_ext
 
 
transition_functions
transition_functions
 
 
try_from_iterator
try_from_iterator
 
 
types
types
 
 
validator
validator
 
 
validator_key_cache
validator_key_cache
 
 
validator_statistics
validator_statistics
 
 
zkvm
zkvm
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
AGENTS.md
AGENTS.md
 
 
COPYRIGHT
COPYRIGHT
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
Cross.toml
Cross.toml
 
 
Dockerfile
Dockerfile
 
 
Dockerfile.cross
Dockerfile.cross
 
 
LICENSE.md
LICENSE.md
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
clippy.toml
clippy.toml
 
 
funding.json
funding.json
 
 
rust-toolchain.toml
rust-toolchain.toml
 
 
rustfmt.toml
rustfmt.toml
 
 

Repository files navigation

Grandine: A fast and lightweight Ethereum consensus client

Documentation

The documentation is available here. Feel free to reach us if you would like more details in some documentation chapters or have any questions.

Performance

Grandine is a optimised and parallelised client. There aren't many published performance comparisons, but a previous research by MigaLabs may give some insight. We run 50,000 Holesky validators on one of our developer's machine.

Memory Usage

Grandine is a lightweight client and needs only ~2.5GB of memory on the mainnet. In order to measure the amount of memory that Grandine actually needs one should stress the operating system to release the shared memory. stress-ng is an easy way to do it:

stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1

Build

Rust is needed in order to build Grandine. We recommend to use rustup.

Some system dependencies are needed, the command below should install it on Ubuntu:

apt-get install ca-certificates libssl-dev clang cmake unzip protobuf-compiler libprotobuf-dev libz-dev

Then the build may take a few minutes:

git clone https://github.com/grandinetech/grandine
cd grandine
git submodule update --init dedicated_executor eth2_libp2p
make release

The compiled binary is available at ./target/compact/grandine.

For faster building (larger binary size) use --release instead of --profile compact.

Docker builds

Docker image can build with a simple command:

docker build .

Cross-compilation

Cross can be used for Grandine cross-compilation.

Cross-compilation command for amd64 architecture:

make release TARGET=x86_64-unknown-linux-gnu

Cross-compilation command for arm64 architecture:

make release TARGET=aarch64-unknown-linux-gnu

Docker Cross builds

Cross-compiled binaries can be used for Docker images.

Docker build command for amd64 architecture:

docker buildx build \
    --file Dockerfile.cross \
    --platform linux/amd64 \
    target/x86_64-unknown-linux-gnu/compact/

Docker build command for arm64 architecture:

docker buildx build \
    --file Dockerfile.cross \
    --platform linux/arm64 \
    target/aarch64-unknown-linux-gnu/compact/

Team

Grandine is built by Grandine core team led by Saulius Grigaitis. We also involve academia in the early stages of new ideas, however, the optimized production code is delivered by the core team.

Audits

Grandine is used in production and the audits have been completed by Matter Labs and X41 D-Sec. The client was also tested by Antithesis team. No serious issues were found. However, always secure your keys with the approach you trust (Web3Signer, Vouch, etc.). Use it at your risk.

Contact

It's best to reach us via Grandine Discord or Grandine Telegram. Feel free to join!

Donate

Funding public goods is hard. We appreciate your donations via Ethereum address 0x93b10cc89A3D3b5bb6bBB04EfFe104873EF002A9.

Credits

Grandine focuses on original consensus core implementations, however it uses a lot of crates developed by the community. For example, Grandine uses rust-libp2p based networking libraries developed by the Lighthouse team since the beginning. Lighthouse's eth2_libp2p library was generic back then and we still use a fork of it now. We also used libmdbx-rs bindings library by Akula maintainer and now we use a fork of it maintained by Reth team. So we focus on the original consensus core because it's the unique value Grandine offers for the community, but we also love to use some great crates developed by other client teams and the community. Grandine would not be where it is now without the efforts of the other client teams and the community! Huge thanks to everyone!

About

High performance Ethereum consensus client

Resources

Readme
GPL-3.0 license
Activity
Custom properties

Stars

286 stars

Watchers

4 watching

Forks

102 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.