MCPcopy Index your code
hub / github.com/besu-eth/besu

github.com/besu-eth/besu @26.6.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 26.6.1 ↗ · + Follow
37,467 symbols 231,976 edges 4,226 files 8,149 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Besu Ethereum Client

CircleCI CodeQL CII Best Practices License Discord Twitter Follow

Download

Besu is an Apache 2.0 licensed, MainNet compatible, Ethereum client written in Java.

Useful Links

Issues

Besu issues are tracked in the github issues tab. See our guidelines for more details on searching and creating issues.

If you have any questions, queries or comments, Besu channel on Discord is the place to find us.

Besu Users

To install the Besu binary, follow these instructions.

Besu Developers

Development

Instructions for how to get started with developing on the Besu codebase. Please also read the wiki for more details on how to submit a pull request (PR).

Dependency Verification

This project uses Gradle dependency verification. When adding or updating dependencies, regenerate gradle/verification-metadata.xml with:

./gradlew --write-verification-metadata sha256 resolveSourceArtifacts

The resolveSourceArtifacts task ensures source JARs are included in the metadata, which is required for IDE sync (e.g. IntelliJ automatically downloads sources).

Profiling Besu

Besu supports performance profiling using Async Profiler, a low-overhead sampling profiler.
You can find setup and usage instructions in the Profiling Guide.

Profiling can help identify performance bottlenecks in block processing, transaction validation, and EVM execution.
Please ensure the profiler is run as the same user that started the Besu process.

Release Notes

Release Notes

Reference Tests and JSON Tracing

Besu includes support for running Ethereum reference tests and generating detailed EVM execution traces.

To learn how to run the tests and enable opcode-level JSON tracing for debugging and correctness verification, see the Reference Test Execution and Tracing Guide.

Extension points exported contracts — how you extend this code

ObservableMetricsSystem (Interface)
The observable metrics system is used to inspect metrics for debug reasons [8 implementers]
metrics/core/src/main/java/org/hyperledger/besu/metrics/ObservableMetricsSystem.java
Generator (Interface)
The interface Generator. @param the type parameter @param the type parameter [9 implementers]
testutil/src/main/java/org/hyperledger/besu/testutil/JsonTestParameters.java
TasksPriorityProvider (Interface)
The interface Tasks priority provider. [7 implementers]
services/tasks/src/main/java/org/hyperledger/besu/services/tasks/TasksPriorityProvider.java
Stage (Interface)
The interface Stage. [187 implementers]
services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/Stage.java
PluginServiceFactory (Interface)
The interface Plugin service factory. [6 implementers]
app/src/main/java/org/hyperledger/besu/controller/PluginServiceFactory.java
BesuPlugin (Interface)
Base interface for Besu plugins. Plugins are discovered and loaded using java.util.ServiceLoader from jar fi [22 implementers]
plugin-api/src/main/java/org/hyperledger/besu/plugin/BesuPlugin.java
Undoable (Interface)
A manually ticked clock to determine when in execution an item was added to an undo collection. This allows for tracking [6 …
evm/src/main/java/org/hyperledger/besu/collections/undo/Undoable.java
QbftExtraDataProvider (Interface)
Provides the extra data for a block. [16 implementers]
consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/types/QbftExtraDataProvider.java

Core symbols most depended-on inside this repo

of
called by 2457
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/Difficulty.java
empty
called by 2448
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/BlockBody.java
verify
called by 2383
acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/Node.java
fromHexString
called by 2222
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/Difficulty.java
build
called by 2103
ethereum/p2p/src/main/java/org/hyperledger/besu/ethereum/p2p/network/NetworkRunner.java
isEmpty
called by 2014
evm/src/main/java/org/hyperledger/besu/evm/account/AccountState.java
put
called by 1989
ethereum/trie/src/main/java/org/hyperledger/besu/ethereum/trie/MerkleTrie.java
of
called by 1981
datatypes/src/main/java/org/hyperledger/besu/datatypes/Wei.java

Shape

Method 32,463
Class 4,322
Interface 539
Enum 143

Languages

Java100%

Modules by API surface

app/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java197 symbols
evm/src/test/java/org/hyperledger/besu/evm/UInt256PropertyBasedTest.java148 symbols
evm/src/main/java/org/hyperledger/besu/evm/frame/MessageFrame.java148 symbols
evm/src/main/java/org/hyperledger/besu/evm/UInt256.java132 symbols
app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java120 symbols
ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/BlockDataGenerator.java104 symbols
config/src/main/java/org/hyperledger/besu/config/StubGenesisConfigOptions.java102 symbols
acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/BesuNode.java100 symbols
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/Transaction.java98 symbols
ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayersTest.java95 symbols
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/chain/DefaultBlockchain.java87 symbols
ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTest.java87 symbols

For agents

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

⬇ download graph artifact

Ask about this repo answers extend the page