Table of Contents
What is Hyperledger Besu?
Hyperledger Besu is an enterprise-grade Ethereum client that supports both public and private permissioned blockchain networks. Ethereum is a distributed technology that works in a network of computers, also called nodes. Now, each of this node must carry a client software that can implement the rules of protocol. For running a node, you need this client and Hyperledger Besu (H.B.) is one such Ethereum client.
It is an open-source client that is written in the Java language and is developed under Apache License, version 2.0, which provides reliable software products for open-source development. The Besu client comes with Ethereum Virtual Machine (EVM) implementation.
Note: Ethereum Virtual Machine stands for a software that executes smart and post that adds new blocks of transactions to the Ethereum chain.
As we know Hyperledger is developed to run permissioned, private networks, H.B. is the first project under Hyperledger umbrella that runs on a public network without compromising on security. Due to its flexibility to run both on the private as well as public networks, it has become quite popular among enterprises that are looking for a secure and scalable solution for their open-source projects.
Hyperledger Besu developed for running on Mainnet can also run on test networks such as Goerli. So, developers before deploying the code on Mainnet can test it on the Testnets. Another feature that sets it apart from other Ethereum clients is that it is able to run different consensus algorithms such as Proof of Work, Proof of Authority, and several others, and carries a plethora of permissioned schemes that work seamlessly.
Features of Hyperledger Besu
- Modular: The Besu client follows the modular approach to create interfaces that are well-defined and well-demarcated from one another. Due to its modular approach , it is easier to customize as per an enterprise’s requirements.
- Efficient Execution: Its execution environment is efficient to handle Ethereum-based transactions.
- Open-source: It is an opens-source development platform where anyone can contribute and also get rewards.
- Open-source: It is an opens-source development platform where anyone can contribute and also get rewards.
- Supports APIs: It provides REST and JSON RPC APIs that let you interact with blockchain easilyand efficiently. The JSON RPC APIs are provided over the WebSocket and HTTP protocols. The APIs are used to run and monitor nodes and support smart contracts.
- Follows EEA: This framework supports Enterprise Ethereum Alliance (EEA) specifications. EEA is a group of members that collaborate and share expertise on blockchain ecosystem. The EEA provides a seamless and standard interface for development to different vendors so that are able to create both open as well as close-source projects without any hiccups.
- Supports EVM: It supports turing-complete EVMs thus enabling easy execution of the smart contracts.
- Supports RocksDB: Besu Hyperledger supports a persistent key-value store called RocksDB for storage of blockchain data. Due to its low-latency storage, RockDB provides faster read-write rates and is also adaptable to provide a myriad of data storage needs (such as data caching from applications, MyRocks database storage engine, to name a few). RocksDB, in addition to providing high performance rates, also supports advanced database operations. The data mainly consists of two types: blockchain data and world state data.
Blockchain data comprises of the blockchain headers and the actual body of the blocks. The blockchain header contains metadata such as previous block’s hash, timestamp at which a block was created, and a nonce. The block itself contains the actual transaction data.
World state is a database that keeps the values of a number of ledger state. This means if you want to know the current values of a state, you need not look up the entire transaction log. - Supports Multiple Consensus Mechanisms: As stated earlier, it supports different consensus mechanisms like POW and POA (Proof of Authority. The POW, as we know, is used for mining. POA is the mechanism used for permissioned blockchain networks. It uses identity as a stake to provide faster transactions.
These transactions are validated by a set of known accounts (when participants are known to each other). These approved accounts are called validators who run a software that automates the process and these validators need not check their nodes all the time.
A type of Proof of Authority that this protocol supports is IBFT (Istanbul Byzantine Fault Tolerant), which supports immediate finality of blocks. As the time to validate a block is reduced, the time between the creation of the two blocks is highly reduced; this way the overall throughput is increased. IBFT is fault-tolerant as it requires 66% of the validators to agree before a block can be added to the blockchain, thus making the chances of malicious attack very less.
There are no forks and no uncle blocks due to immediate finality. it supports IBFT 2.0 protocol that suits well the enterprises working on private blockchain networks.
It uses a genesis file peculiar to IBFT 2.0; this file defines different properties related to a block- this may include minimum block time, number of blocks after which validators reset their votes, block rewards, etc.
Yet another POA mechanism is Clique. This consensus mechanism is even more fault tolerant than IBFT. It can tolerate even if half of the validators fail to function. But Clique does not give immediate finality like IBFT.
- Monitors Node Performance: It allows you to monitor node’s performance using Prometheus, which is an open-source database that stores data for Prometheus monitoring database.
- Is Permissioned and Private: It is a permissioned, private network that lets only the known nodes to participate in the network by enabling their node permission feature. The transactions are private to these known nodes.
- Supports both Private and Public Networks: It also supports building platform for public blockchains. So, Enterprises can leverage the benefits of both the the private as well as the public blockchain networks without limiting themselves with the limitations posed by the permissioned networks.
- User Participation: Users can participate in public networks on it and get rewarded in terms of skills that they gain ; the skill could be learning node operation or contributing to network security.
How to Install Hyperledger Besu?
You can either run it from its Docker image or install its binaries.
Run Besu with Docker
For using Hyperledger Besu docker, you need not install it first. Docker allows you to run its node for Mainnet in a container. For this, Docker Daemon must be installed on your system first and must be running. Post that, run the following command:
docker run hyperledger/besu:latest
Then you need to expose ports for WebSocket, P2P, Http, GraphQL, and metrics. You can either use default ports or use your own ports:
docker run -p <localportJSON-RPC>:8545 -p <localportWS>:8546 -p <localportP2P>:30303 hyperledger/besu:latest --rpc-http-enabled --rpc-ws-enabled
Run Hyperledger Besu Docker Node on Goerli
docker run -p 30303:30303 --mount type=bind,source=/<myvolume/besu/goerli>,target=/var/lib/besu hyperledger/besu:latest --network=goerli --data-path=/var/lib/besu
Run Besu Node with Docker on Mainnet
docker run -p 8545:8545 --mount type=bind,source=/<myvolume/besu/mainnet>,target=/var/lib/besu -p 30303:30303 hyperledger/besu:latest --rpc-http-enabled --data-path=/var/lib/besu
To learn more on how to run a this node using docket image, click here.
Install using Binary
For MacOS , you need Homebrew along with Java JDK. For Linux, you only need Java JDK
Install Besu using Homebrew
brew tap hyperledger/besu
brew install hyperledger/besu/besu
Upgrade existing node using Homebrew
brew upgrade hyperledger/besu/besu
Once installed, you can check the version using:
Besu --version
For installation on Linux, you need to download the binary packages provided by this protocol, unpack them after downloading, and change into the besu-<release> directory.
How to run it?
Once it is is installed, you an use the CLI commands to run the node on Ethereum Mainnet or testnets.
Besu [options] [suboptions]
To run a node on Goerli testnet, you need to specify a data directory:
besu --network=goerli --data-path=<path>/<goerlidata-path>
where <path> and <goerlidata-path> are the path and the directory in which Goerli chain data is saved.
The node can also be run on Sepolia testnet.
Note: To know more on how to run this node on Ethereum Mainnet, read here.
Disclaimer
This article is for informational purposes only and is NOT a financial advice. We do not promote, in any form, any blockchain network or cryptocurrencies or tokens mentioned herein. The content of this article is based on the information available up to the knowledge. You should be aware that investing in any blockchain network or cryptocurrency or a crypto project is subject to market risk and you MUST do your own due diligence (DYOR) before you put any money in any of the crypto or blockchain projects or coins or tokens.
Read More
Follow these links to read about other cryptocurrency topics: