Besu Certified Professional study materials
Besu Certified Professional study resources

Besu Certified Professional practice questions

One question at a time. Build your Besu Certified Professional understanding.

First 50 of 200 questions. Each one lists the choices, the correct answer, and an explanation. The checker at the top of this page saves progress in this browser when it is available.

Continue in the practice tool above to load more questions, 50 at a time.

Question 1Hyperledger Besu Architecture and Deployment

In a Hyperledger Besu node deployment, which component is responsible for executing transactions and maintaining the world state trie?

  1. The Ethereum client core running the EVM and state database Correct answer.
  2. The metrics exporter that publishes Prometheus statistics
  3. The P2P discovery layer that finds peers on the network
  4. The JSON-RPC HTTP service that exposes the API to callers

Explanation

Besu's core client components include the EVM and the world state database, which together execute transactions and persist account and storage state. Discovery, RPC, and metrics are peripheral services that do not maintain state.

Question 2Hyperledger Besu Architecture and Deployment

Which Besu command-line flag selects the network configuration used at startup?

  1. --config-file
  2. --genesis-file
  3. --network Correct answer.
  4. --data-path

Explanation

The --network flag chooses a predefined network such as mainnet, sepolia, or a named private network. Genesis and config files can override details, but the network selector is the standard startup switch.

Question 3Hyperledger Besu Architecture and Deployment

A team wants a Besu node to serve eth_getLogs and eth_call requests from a web application. Which startup option must be enabled?

  1. --p2p-enabled
  2. --min-gas-price
  3. --rpc-http-enabled Correct answer.
  4. --sync-mode

Explanation

The HTTP JSON-RPC endpoint is disabled by default in Besu, so --rpc-http-enabled is required before clients can call methods such as eth_call and eth_getLogs. The other options affect peering, transaction pricing, and synchronization.

Question 4Hyperledger Besu Architecture and Deployment

Which Besu synchronization mode stores only recent blocks and state while relying on peers for older data?

  1. SNAP Correct answer.
  2. CHECKPOINT
  3. FULL
  4. X_SNAP

Explanation

SNAP synchronization downloads state snapshots and recent blocks, allowing a node to become usable faster with less historical data stored locally. FULL retains all blocks and reprocesses them from genesis.

Question 5Hyperledger Besu Architecture and Deployment

An operator needs to run Besu with a custom genesis file for a private network. Which flag supplies that file at startup?

  1. --genesis-file Correct answer.
  2. --bootnodes
  3. --network=private
  4. --revert-reason-enabled

Explanation

--genesis-file points Besu at a JSON genesis definition that establishes chain ID, alloc, and consensus parameters for a custom network. A named network selector alone cannot define private chain parameters.

Question 6Hyperledger Besu Architecture and Deployment

Which Besu storage format is optimized for reading contract storage and account state during block processing?

  1. A flat key-value store using RocksDB or Forest Correct answer.
  2. An append-only log of raw block bytes
  3. A remote object store bucket
  4. A relational schema in PostgreSQL

Explanation

Besu persists chain and state data in embedded key-value databases such as RocksDB (default) or Forest, which are tuned for trie and flat lookups. Relational databases and object stores are not Besu's native storage backends.

Question 7Hyperledger Besu Architecture and Deployment

What is the purpose of the Besu --bootnodes option?

  1. To set the maximum number of inbound peer connections
  2. To specify the validator set for IBFT 2.0 consensus
  3. To whitelist accounts permitted to submit transactions
  4. To define the initial set of peers used for discovery Correct answer.

Explanation

Bootnodes are enode URLs that a fresh node contacts to join the peer-to-peer network and discover additional peers. They do not enforce permissions, define validators, or cap connection counts.

Question 8Hyperledger Besu Architecture and Deployment

Which Besu deployment pattern best supports high availability for a JSON-RPC read workload?

  1. Multiple Besu nodes behind a load balancer sharing the same network Correct answer.
  2. One node exposing both P2P and RPC on the public internet
  3. A node configured with --sync-mode=FULL and RPC disabled
  4. A single node with a large data disk and no replicas

Explanation

Running several Besu nodes on the same network behind a load balancer removes single points of failure and spreads RPC read traffic. A single node or a node without RPC cannot provide resilient read service.

Question 9Hyperledger Besu Architecture and Deployment

A Besu node is configured with --rpc-http-api=ETH,NET but a client receives a method-not-found error for web3_clientVersion. What is the most likely cause?

  1. The node is not fully synchronized
  2. The client is using HTTPS instead of HTTP
  3. The WEB3 API namespace is not enabled on the HTTP endpoint Correct answer.
  4. The genesis file lacks the web3 precompile

Explanation

Besu exposes RPC method namespaces selectively; web3_clientVersion belongs to the WEB3 namespace, which must be listed in --rpc-http-api. Sync status, transport, and genesis content do not gate namespace availability.

Question 10Hyperledger Besu Architecture and Deployment

An operator wants Besu to accept transactions only above a certain gas price floor. Which option enforces this?

  1. --min-gas-price Correct answer.
  2. --target-gas-limit
  3. --tx-pool-max-size
  4. --rpc-http-max-batch-size

Explanation

--min-gas-price sets the minimum gas price for transactions the node accepts into its pool. The other flags govern pool capacity, block gas targeting, and RPC batching rather than price filtering.

Question 11Hyperledger Besu Architecture and Deployment

A private Besu network uses IBFT 2.0 with four validators. What happens if two validators go offline?

  1. Blocks continue because three of four validators still form quorum
  2. The chain halts because quorum is lost Correct answer.
  3. The remaining validators switch automatically to Clique
  4. New blocks are produced but marked uncles

Explanation

IBFT 2.0 requires a supermajority of validators, meaning more than two-thirds, to commit blocks. With four validators, losing two leaves only half, which is below the required quorum, so finality stalls.

Question 12Hyperledger Besu Architecture and Deployment

Which Besu option enables eth/66 and eth/67 subprotocol negotiation with peers?

  1. --discovery-enabled
  2. --host-allowlist
  3. --network-id
  4. --p2p-enabled Correct answer.

Explanation

Peer-to-peer networking must be enabled for Besu to negotiate ETH subprotocols with other nodes. The other options govern network identity, RPC host filtering, and discovery behavior.

Question 13Hyperledger Besu Architecture and Deployment

An operator wants to expose the Besu JSON-RPC endpoint only to a specific monitoring subnet while keeping the default loopback binding. Which option should be adjusted?

  1. --rpc-http-port
  2. --rpc-http-host Correct answer.
  3. --rpc-http-cors-origins
  4. --rpc-http-api

Explanation

--rpc-http-host controls the interface the HTTP endpoint binds to, so binding to the subnet-facing address exposes it beyond loopback. Port, CORS, and API namespace settings do not change the binding interface.

Question 14Hyperledger Besu Architecture and Deployment

What is the effect of running Besu with --sync-mode=FULL on a mainnet node with limited disk?

  1. It requires substantially more disk because all blocks are retained and processed Correct answer.
  2. It disables state storage entirely
  3. It stores only the latest 128 blocks
  4. It reduces disk use by pruning historical state

Explanation

FULL synchronization retains and processes the entire chain from genesis, which demands more disk and time than snapshot-based SNAP sync. It does not prune history or truncate the chain.

Question 15Hyperledger Besu Architecture and Deployment

A Besu node must sign blocks in a QBFT network. Which key material is required on the validator node?

  1. A TLS certificate issued by the network operator
  2. An account key funded with ether for gas
  3. A node key whose address appears in the QBFT validator set Correct answer.
  4. A JWT secret shared with all peers

Explanation

QBFT validators sign consensus messages with their node key, and the corresponding address must be in the validator set defined at genesis or via the validator contract. Gas funding, TLS, and JWT secrets serve other purposes.

Question 16Hyperledger Besu Architecture and Deployment

Which Besu feature allows an operator to restrict which nodes may connect at the peer-to-peer layer?

  1. Node permissioning Correct answer.
  2. CORS origin filtering
  3. JWT authentication
  4. Account permissioning

Explanation

Node permissioning restricts peer connections to an allowlist of enode identities. Account permissioning restricts transaction senders, while CORS and JWT apply to RPC access.

Question 17Hyperledger Besu Architecture and Deployment

An operator configures Besu with --data-path=/var/lib/besu and later starts the node with a different data path. What is the expected result?

  1. The node refuses to start until the old path is deleted
  2. The node copies the old database to the new path automatically
  3. The node initializes a fresh database and must synchronize again Correct answer.
  4. The node reuses the previous database regardless of the new path

Explanation

The data path determines where chain and state databases live, so pointing Besu at a new directory starts from an empty database that must sync. Besu does not migrate or copy existing data automatically.

Question 18Hyperledger Besu Architecture and Deployment

Which option enables the Besu Engine API used by consensus-layer clients such as a beacon node?

  1. --rpc-http-api=ENGINE Correct answer.
  2. --graphql-http-enabled
  3. --rpc-ws-enabled
  4. --engine-api-enabled

Explanation

The Engine API namespace is exposed by including ENGINE in the enabled RPC API list, for example --rpc-http-api=ENGINE. WebSocket and GraphQL toggles enable different interfaces entirely.

Question 19Hyperledger Besu Architecture and Deployment

A Besu node on a private network reports peers but never imports new blocks. Which configuration area should be checked first?

  1. The genesis chain ID and consensus configuration matching the rest of the network Correct answer.
  2. The RPC batch size limit
  3. The Prometheus metrics port
  4. The GraphQL HTTP host allowlist

Explanation

Block import requires the node's genesis chain ID and consensus settings to match its peers; mismatches cause silent rejection of blocks. Metrics, GraphQL, and batching settings do not affect block validity.

Question 20Hyperledger Besu Architecture and Deployment

Which statement accurately describes the relationship between Besu and the Ethereum JSON-RPC specification?

  1. Besu replaces JSON-RPC with a proprietary binary protocol
  2. Besu requires a sidecar process to answer eth_ methods
  3. Besu exposes only GraphQL and not JSON-RPC
  4. Besu implements the standard Ethereum JSON-RPC methods and adds client-specific namespaces Correct answer.

Explanation

Besu serves standard Ethereum JSON-RPC methods and supplements them with namespaces such as ADMIN, DEBUG, and MINER. It does not replace JSON-RPC with a binary protocol or require a sidecar for eth_ methods.

Question 21Hyperledger Besu Architecture and Deployment

An operator needs historical state queries such as eth_getBalance at an old block. Which deployment choice supports this on Besu?

  1. Enable only the NET namespace
  2. Disable the ETH API namespace
  3. Run a node with archive data retention enabled Correct answer.
  4. Run a SNAP-synced node with default pruning

Explanation

Historical state queries require archive-style retention, which keeps past state rather than pruning it. A default SNAP node prunes old state, and disabling namespaces removes the query methods entirely.

Question 22Hyperledger Besu Architecture and Deployment

A Besu validator in a QBFT network is repeatedly missing block proposals while peers report it as connected. Which cause is most consistent with these symptoms?

  1. The node's metrics exporter is misconfigured
  2. The node has too many bootnodes configured
  3. The node key is not in the validator set used by peers Correct answer.
  4. The node has a stale RPC CORS allowlist

Explanation

If peers do not recognize the node's address as a validator, its proposals and commits are rejected even though P2P connectivity exists. CORS, metrics, and bootnode count do not affect consensus participation.

Question 23Hyperledger Besu Architecture and Deployment

An operator plans to migrate a Besu node from RocksDB to Forest. What must be done with existing chain data?

  1. Copy only the genesis file to the new directory
  2. Rename the RocksDB directory and start Besu, which converts it in place
  3. Delete the genesis file to force a format conversion
  4. Resynchronize the chain into a new data directory using the Forest format Correct answer.

Explanation

The storage format is fixed per data directory, so switching to Forest requires a fresh data directory and a new synchronization. Besu does not convert an existing RocksDB database in place.

Question 24Hyperledger Besu Architecture and Deployment

A Besu node behind a reverse proxy returns HTTP 403 for browser calls while curl from the same host succeeds. Which Besu setting most likely explains this?

  1. --sync-mode is set to SNAP
  2. --rpc-http-enabled is set to false
  3. --rpc-http-cors-origins does not include the browser origin Correct answer.
  4. --min-gas-price is too high

Explanation

Besu rejects cross-origin browser requests unless the calling origin is in the CORS allowlist, whereas curl sends no Origin header and is unaffected. RPC being disabled, gas pricing, and sync mode would not produce an origin-specific 403.

Question 25Hyperledger Besu Architecture and Deployment

Which Besu configuration combination best supports a private network where only approved accounts may submit transactions?

  1. CORS restricted to a single origin
  2. Account permissioning enabled with an allowlist of sender addresses Correct answer.
  3. Node permissioning enabled with an allowlist of enode URLs
  4. JWT authentication enabled on the HTTP endpoint

Explanation

Account permissioning enforces which sender accounts may submit transactions, matching the requirement. Node permissioning, JWT, and CORS control peering and API access rather than transaction senders.

Question 26Hyperledger Besu Architecture and Deployment

A Besu node is started with --rpc-http-enabled=true but no --rpc-http-host is supplied. Which interface does the HTTP JSON-RPC listener bind to by default?

  1. The first non-loopback address discovered on the host
  2. The address of the first connected peer's P2P endpoint
  3. 127.0.0.1, so the endpoint answers only on the loopback interface Correct answer.
  4. 0.0.0.0, so the endpoint answers on every network interface

Explanation

Besu's documented default for --rpc-http-host is 127.0.0.1, which keeps the JSON-RPC endpoint reachable only from the local host unless the operator explicitly widens it. Exposure to other machines therefore requires setting the host to 0.0.0.0 or a specific interface address, together with appropriate firewall and API-enablement choices.

Question 27Hyperledger Besu Architecture and Deployment

Which statement describes the role of the Besu node key stored in the data directory?

  1. It is the key used to seal blocks in QBFT and IBFT 2.0 networks
  2. It encrypts the RocksDB column families that hold world state
  3. It signs transactions submitted through the JSON-RPC eth_sendTransaction method by default
  4. It is the secp256k1 identity key whose public key yields the node's 64-byte P2P enode ID Correct answer.

Explanation

Besu generates a node key that identifies the node at the devp2p layer; the corresponding public key forms the enode URL used for peering and static-node configuration. It is separate from the validator signing key and from account keys used for transactions.

Question 28Hyperledger Besu Architecture and Deployment

An operator must run Besu as a validator in a QBFT network and wants the signing key loaded from disk rather than from an environment variable. Which option supplies that key file?

  1. --node-private-key-file Correct answer.
  2. --revert-reason-enabled
  3. --p2p-private-key-file
  4. --security-module

Explanation

The --node-private-key-file option points Besu at the private key file used to sign consensus messages and blocks on a validator node. Supplying it keeps the validator key on disk with restricted permissions instead of exposing it through the environment.

Question 29Hyperledger Besu Architecture and Deployment

A private Besu network uses Clique and an operator wants the node to expose the engine's block-production controls through the JSON-RPC interface. Which API group must be enabled on that node?

  1. CLIQUE Correct answer.
  2. PERM
  3. QBFT
  4. IBFT

Explanation

Besu exposes consensus-specific RPC methods through named API groups, and the Clique group (clique_*) must be enabled in --rpc-http-api for those calls to be served. Without the group enabled, the methods return a method-not-found error even though the node is producing blocks.

Question 30Hyperledger Besu Architecture and Deployment

An operator plans to run Besu in XA transactions with a single node and wants the node to keep the full chain history while still starting quickly after a restart. Which combination is most appropriate?

  1. --sync-mode=SNAP with --data-storage-format=BONSAI
  2. --sync-mode=CHECKPOINT with --Xcheckpoint-post-merge-enabled=false
  3. --sync-mode=X_SNAP with --pruning-enabled=true
  4. --sync-mode=FULL with pruning disabled Correct answer.

Explanation

FULL sync retains all blocks and state history, and disabling pruning preserves that history rather than discarding old trie nodes. SNAP and CHECKPOINT syncs are designed for faster initial sync and are not the choice when complete historical data must be retained.

Question 31Network Configuration and Genesis Files

In a Besu genesis file, which field defines the chain identifier that must match across all peers on a private network?

  1. genesisHash
  2. forkId
  3. chainId Correct answer.
  4. networkId

Explanation

The chainId field inside the genesis config sets the EIP-155 chain identifier used for replay protection and transaction signing. All nodes on the same private Besu network must share the same chainId so signed transactions are valid everywhere.

Question 32Network Configuration and Genesis Files

Which consensus mechanism value in the genesis config block is required for a Besu network using IBFT 2.0?

  1. clique
  2. qbft
  3. ibft2 Correct answer.
  4. ethash

Explanation

Besu selects the consensus engine from the consensus field in the genesis config block. IBFT 2.0 is activated with the value ibft2, and the extraData field must contain the encoded validator set.

Question 33Network Configuration and Genesis Files

A team wants a Besu private network where blocks are produced only when transactions arrive. Which genesis config field controls this in a Clique network?

  1. requesttimeoutseconds
  2. epochlength
  3. createemptyblocks Correct answer.
  4. blockperiodseconds

Explanation

Setting createemptyblocks to false in the Clique config block makes the engine mine only when pending transactions exist. With the default true, empty blocks are produced on the block period regardless of activity.

Question 34Network Configuration and Genesis Files

In the genesis alloc section, what does each account entry primarily define?

  1. The validator voting weight for that address
  2. The peer list allowed to connect at startup
  3. The transaction gas price floor for the network
  4. The initial balance and optional code/storage for that address Correct answer.

Explanation

The alloc object maps addresses to their initial state: a starting balance and, for contracts, bytecode and storage. It is how pre-funded accounts and pre-deployed contracts are established at genesis.

Question 35Network Configuration and Genesis Files

Which genesis field typically holds the encoded list of initial validators for an IBFT 2.0 network?

  1. extraData Correct answer.
  2. mixHash
  3. difficulty
  4. nonce

Explanation

For IBFT 2.0 and QBFT, the extraData field carries the RLP-encoded validator addresses plus the vanity and seal bytes. This is how the genesis file seeds the initial validator set.

Question 36Network Configuration and Genesis Files

A genesis file must specify the gas limit for the network. Which field in the genesis JSON sets the per-block gas limit at genesis?

  1. currentGasLimit
  2. baseFeePerGas
  3. gasUsed
  4. gasLimit Correct answer.

Explanation

The top-level gasLimit field in the genesis file sets the initial block gas limit. Nodes will adjust it over time according to the configured gas limit bound divisor unless configured otherwise.

Question 37Network Configuration and Genesis Files

Which genesis field is required to enable the London hard fork features such as EIP-1559 base fee handling?

  1. baseFeeBlock
  2. berlinBlock
  3. londonBlock Correct answer.
  4. eip1559Block

Explanation

Fork activation in Besu genesis files uses fields like londonBlock to specify the block at which the fork becomes active. Setting londonBlock to 0 enables London rules from genesis, which is required for EIP-1559 behavior.

Question 38Network Configuration and Genesis Files

What is the purpose of the nonce field in a Besu genesis file for a Clique network?

  1. It stores the initial validator vote count
  2. It sets the transaction replay-protection counter
  3. It provides the proof-of-work solution for the genesis block
  4. It is a fixed legacy value included to satisfy block header structure Correct answer.

Explanation

The genesis nonce is a legacy header field carried for structural compatibility; it does not perform proof-of-work in Clique or IBFT networks. It is typically set to a conventional hex value such as 0x0.

Question 39Network Configuration and Genesis Files

Which Besu configuration file is used to define the bootnodes that a node contacts for peer discovery?

  1. The node configuration file (for example config.toml) Correct answer.
  2. The permissioning configuration file
  3. The logging configuration file
  4. The genesis file

Explanation

Bootnodes are specified in the node's configuration file, such as config.toml, under the p2p section. The genesis file defines chain state and consensus, not peer discovery endpoints.

Question 40Network Configuration and Genesis Files

A node operator needs to prevent any peer from connecting unless it appears in an allowlist. Which Besu feature should be configured?

  1. Host allowlist for JSON-RPC
  2. Account permissioning
  3. Node permissioning Correct answer.
  4. Transaction pool limits

Explanation

Node permissioning restricts which nodes may establish P2P connections, using either a local config or an onchain permissioning contract. Account permissioning instead restricts which accounts may send transactions.

Question 41Network Configuration and Genesis Files

Which field in the genesis config block sets the address that receives block rewards in a Clique network?

  1. rewardAccount
  2. beneficiary
  3. coinbase Correct answer.
  4. treasury

Explanation

The coinbase field in the Clique config block specifies the address that collects block rewards. It must be a funded account when rewards are enabled, otherwise block production halts.

Question 42Network Configuration and Genesis Files

Why must the genesis file be byte-for-byte identical across all nodes in a private Besu network?

  1. Because Besu refuses to start without a signed genesis file
  2. Because the transaction pool validates genesis contents at runtime
  3. Because the genesis hash is used to identify the network and must match for peers to sync Correct answer.
  4. Because the genesis file contains the private keys of all validators

Explanation

The genesis hash is derived from the exact genesis content and forms part of the network identity. Any difference produces a different genesis hash, causing peers to reject each other as being on different chains.

Question 43Network Configuration and Genesis Files

Which genesis config field must be set to enable the Shanghai hard fork, including EIP-4895 withdrawals?

  1. shanghaiTime Correct answer.
  2. withdrawalsBlock
  3. mergeBlock
  4. parisBlock

Explanation

Besu uses shanghaiTime to schedule Shanghai activation by timestamp, including EIP-4895 withdrawals. Shanghai and later forks use timestamp-based milestones rather than the earlier block-number pattern, so a field named shanghaiBlock does not express this activation.

Question 44Network Configuration and Genesis Files

In a QBFT genesis configuration, which field specifies the time a validator waits before initiating a round change?

  1. epochlength
  2. requesttimeoutseconds Correct answer.
  3. blockperiodseconds
  4. emptyBlockPeriodSeconds

Explanation

requesttimeoutseconds in the QBFT config block sets how long a validator waits for a proposal before starting a new round. This value directly affects resilience to slow or failed proposers.

Question 45Network Configuration and Genesis Files

A genesis file sets difficulty to a very low value on a Clique network. What is the practical effect?

  1. It prevents all transactions from being mined
  2. It causes the network to switch to Ethash automatically
  3. It disables validator voting
  4. It has little effect because Clique does not use proof-of-work difficulty Correct answer.

Explanation

Clique is a proof-of-authority engine and does not perform proof-of-work, so difficulty is largely a legacy field. Block production is driven by validator signing rather than difficulty targets.

Question 46Network Configuration and Genesis Files

Which genesis field establishes the initial EIP-1559 base fee for the first block when London is active at genesis?

  1. initialBaseFee
  2. gasPrice
  3. baseFeePerGas Correct answer.
  4. minGasPrice

Explanation

The top-level baseFeePerGas field in the genesis file sets the base fee of the genesis block when London rules apply. Subsequent blocks adjust the base fee according to EIP-1559 mechanics.

Question 47Network Configuration and Genesis Files

What must be included in the extraData of a Clique genesis file?

  1. The vanity bytes plus the signer address and seal bytes Correct answer.
  2. The RLP-encoded validator set
  3. Only the chain ID encoded as hex
  4. The Merkle root of the state trie

Explanation

Clique genesis extraData is composed of 32 bytes of vanity data, followed by the initial signer address and 65 bytes of seal data. IBFT and QBFT use an RLP-encoded validator list instead.

Question 48Network Configuration and Genesis Files

Which Besu CLI option specifies the genesis file when starting a node?

  1. --config-file
  2. --genesis-file Correct answer.
  3. --network
  4. --data-path

Explanation

The --genesis-file option points Besu at the genesis JSON used to initialize the chain. Without it, Besu defaults to a public network definition or requires --network.

Question 49Network Configuration and Genesis Files

A private network needs accounts pre-funded at genesis. Where in the genesis JSON are those balances declared?

  1. In the top-level balances array
  2. In the extraData field
  3. In the alloc object keyed by address Correct answer.
  4. In the config block under accounts

Explanation

Pre-funded accounts are declared in the alloc object, where each key is an address and the value contains a balance in wei. This state is written directly into the genesis state trie.

Question 50Network Configuration and Genesis Files

Which field in the genesis config controls how often validator vote tallies are reset in IBFT 2.0?

  1. validatorContract
  2. requesttimeoutseconds
  3. epochlength Correct answer.
  4. blockperiodseconds

Explanation

epochlength defines the number of blocks after which validator vote history is reset. This keeps the validator set management bounded over the life of the chain.