Besu Certified Professional study materials
Besu Certified Professional study resources

Besu Certified Professional flashcards

Besu Certified Professional · Build recall with a focused review session.

32 cards. Read the term and the definition here. The deck at the top of this page is optional.

Besu data directory
Default location for Besu data including RocksDB database, keystore, and network key; set with --data-path. Backup by stopping node and copying directory; do not copy while running.
Besu genesis file
JSON file defining private network: chainId, consensus config, alloc for pre-funded accounts, and initial validators in extraData. Must be identical on all nodes; loaded with --genesis-file.
IBFT 2.0 consensus
Byzantine fault-tolerant PoA consensus requiring 2f+1 validators to commit blocks. Provides immediate finality; validator changes via voting; block time set by blockperiodseconds.
QBFT consensus
Improved IBFT 2.0 consensus for Besu; requires 2f+1 validators; supports dynamic validator sets and higher throughput. Recommended for new private networks; uses qbft_ JSON-RPC methods.
Clique consensus
Proof-of-Authority consensus where authorized signers take turns producing blocks. Uses period and epoch config; signers vote via clique_propose; simpler but less fault-tolerant than IBFT/QBFT.
eth_syncing method
JSON-RPC method returning false when node is fully synced, or an object with sync status (startingBlock, currentBlock, highestBlock) when syncing. Used to monitor sync progress.
Besu metrics
Prometheus-format metrics exposed when --metrics-enabled is set; default port 9545. Monitor block height, peer count, CPU, memory; use Grafana dashboards for visualization.
eth_call
JSON-RPC method executing a read-only smart contract function without creating a transaction. Returns function output; does not change state; used for queries.
eth_sendRawTransaction
JSON-RPC method submitting a signed transaction to the network. Returns transaction hash; use eth_getTransactionReceipt to check status (0x1 success, 0x0 fail).
Besu privacy with Tessera
Private transactions use Tessera privacy manager; configure --privacy-enabled and --privacy-url. Private payload encrypted; only group members can decrypt; on-chain only hash visible.
Local permissioning
Node and account permissioning using configuration files (nodes-allowlist, accounts-allowlist). Enable with --permissions-nodes-config-file-enabled and --permissions-accounts-config-file-enabled; requires restart or reload.
On-chain permissioning
Permissioning via smart contracts deployed on network; configure contract addresses with --permissions-nodes-contract-address and --permissions-accounts-contract-address. Updates take effect after transaction mined.
Contract deployment address
Computed as keccak256(rlp(sender, nonce))[12:]; obtained from eth_getTransactionReceipt contractAddress after deployment transaction is mined. No to address in deployment transaction.
Solidity event logs
Events emitted by contracts stored in logs; retrieve via eth_getLogs. topics[0] is keccak256 of event signature; indexed parameters become additional topics.
Besu node key
Private key for P2P identity stored in data directory; enode derived from public key. Back up securely; used for node authentication and peer discovery.
JSON-RPC TLS
Enable TLS for JSON-RPC with --rpc-http-tls-enabled and keystore flags. Supports mutual TLS with --rpc-http-tls-client-auth-enabled; encrypts RPC traffic.
JWT for Engine API
Besu uses JWT authentication for Engine API (post-merge); configure with --engine-jwt-secret. Required for consensus layer communication; separate from JSON-RPC auth.
Besu upgrade procedure
Stop node, backup data directory, replace binaries, restart. Check release notes for database schema changes; major upgrades may require resync. Test in staging first.
Genesis fork blocks
Network upgrades configured in genesis with fork block numbers (e.g., londonBlock, shanghaiTime). All nodes must upgrade before fork block to avoid chain split.
Besu JSON-RPC namespaces
API groups enabled via --rpc-http-api: ETH, NET, WEB3, ADMIN, DEBUG, TRACE, MINER, QBFT, IBFT, PERM, PLUGINS. Restrict to needed namespaces for security.
eth_estimateGas
JSON-RPC method estimating gas needed for a transaction. Returns gas estimate; used to set gasLimit. Helps avoid out-of-gas errors.
Besu bootnodes
Initial peers for discovery specified as enode URLs (enode://pubkey@ip:port). Set via --bootnodes flag or genesis config; used to join network.
extraData validator encoding
In genesis, extraData contains initial validators: for IBFT/QBFT, RLP-encoded list of addresses with 32-byte vanity prefix/suffix; for Clique, vanity + signer addresses + signature.
Besu sync modes
FULL sync downloads and executes all blocks; SNAP sync (default) uses snapshots for faster sync; archive mode keeps full state. Set with --sync-mode.
admin_peers
JSON-RPC method listing connected peers with details (enode, version, latency). Used for troubleshooting connectivity and monitoring peer count.
Besu dev mode
Run with --network=dev for a quick local development chain with pre-funded accounts and instant blocks. Useful for testing contracts; not for production.
Contract ABI encoding
Application Binary Interface defines function selectors (first 4 bytes of keccak256 signature) and parameter encoding. Used by libraries (web3.js, ethers.js) to interact with contracts.
Besu account keystore
Encrypted JSON files storing private keys; managed with --key-store-path. Alternatively use external signer (EthSigner) for secure key storage; never expose keys in config.
RPC host binding
Bind JSON-RPC to localhost (--rpc-http-host=127.0.0.1) by default for security; use 0.0.0.0 only when remote access needed, combined with firewall and auth.
Besu Docker deployment
Use hyperledger/besu image; mount data volume for persistence; pass CLI flags as arguments. Pull new tag for upgrades; ensure volume persists across container restarts.
Besu CLI network flag
--network selects predefined network (mainnet, goerli, sepolia, dev) or custom genesis. For private networks, use --genesis-file instead. Affects chainId and bootnodes.
Validator voting
Add or remove validators via qbft_proposeValidatorVote or ibft_proposeValidatorVote. Proposal requires majority of validators; takes effect after epoch. Used to manage validator set.