Kaleido Open Menu

Hyperledger Besu

In 2019 Hyperledger Besu became the first public network compatible blockchain client to be accepted as a project in the Hyperledger foundation. It was originally incubated by the PegaSys engineering team (with project name Pantheon).

Besu is an Ethereum implementation purpose-built for enterprise use. Like the other Ethereum implementations, Besu is also compliant with the Ethereum yellow paper. Implemented in Java, Besu has a robust code base lineage that should give enterprise IT teams a relatively easy time to review for security.

Besu is under Apache 2.0 license. It is supported by the open source community and maintained by the PegaSys team in ConsenSys AG.

The JSON-RPC interface on Besu can be configured to be protected with JSON Web Tokens (JWT). User repositories are easily configured on the Besu node using a toml file. After authentication, the client application is issued a JWT token that can be used to authenticate subsequent requests.

Built on a modular architecture, Besu is relatively easy to extend for adding new features or providing alternative implementations. As an example, the signing wallet is a separate component that interacts with the main component via HTTP. As a result, it can be replaced with a different implementation if needed according to the HTTP API interface design. Or, the wallet component can be easily extended for additional functionalities without affecting the rest of the Besu code base.

Besu supports both clique Proof-of-Authority (PoA) and Istanbul BFT (IBFT) consensus algorithms.

When running with PoA, the block period is set to 5 seconds by default. This is not configurable in the Kaleido console UI. But when creating the Besu node via the Kaleido API, the block period can be set to any integer value between 5 to 10 seconds inclusive.

When running with Istanbul BFT, the block period is set to 10 seconds by default. This is not configurable in the Kaleido console UI. But when creating the Besu node via the Kaleido API, the block period can be set to any integer value between 10 to 20 seconds inclusive.