How do you run Hyperledger Besu QBFT validators after go-live?
After go-live, a permissioned Besu network running QBFT is operated through a small set of recurring decisions: which validators join or leave, which timing settings apply, how validator health is checked, and how a stalled network is handled without losing finality. The consortium sets this operating model, not a vendor license. Besu is licensed under Apache 2.0, is a Graduated project of LF Decentralized Trust, and supports QBFT and IBFT 2.0 for private networks, so no single vendor controls how validators are changed or how the network responds to failure.
Day-two work is harder than the initial build for three reasons. First, validator changes are governance acts. Adding or removing a validator changes the set that every operator relies on, so the change needs an agreed proposal, a vote, a timing window and a shared record of the outcome. Second, a stalled network creates pressure to act quickly, and operators who restart nodes or clear data under that pressure can make the situation worse. Third, key handling carries consequences for signing. The Besu documentation states that the local node private key file is not encrypted, so custody, access control and backup of that file are operational decisions that the team must own from the first day.
Validator changes need a written runbook before the first change is proposed. The runbook should name who may raise a vote, how a candidate's node identity and signing key are verified out of band, which checks run before and after the change, and who confirms the new validator set on each operator's node. Confirm the exact voting procedure, the administrative interfaces involved and any version-specific behavior in the Besu private network documentation for the version you run. Treat the procedure as a change control item, not an informal message between operators.
Timing settings and health checks should also be governed, not left to defaults. Block period and timeout settings belong in the network's genesis and node configuration, and every validator must agree on them. Do not assume values from older documents or from another network. Confirm the current parameters with the Besu private network documentation for your version, record the agreed values, and check them after each change. For health checks, track whether each validator is connected to its peers, is producing or signing blocks as expected, and reports the same chain head as the other operators. Besu exposes metrics for Prometheus when enabled, which gives the team a consistent data source for these checks.
When the network stalls, the first step is diagnosis, not restarting. Confirm which validators are online, compare chain heads across operators, and review logs and recent configuration changes. Preserve current node data and take a backup before any action that might change state. Coordinate any restart as a single agreed action with a named incident lead, and escalate through the consortium's governance contacts. Restarting validators one by one without agreement can break finality or cause divergent histories. Plan these steps in advance, rehearse them on a non-production network, and record every decision made during the incident so the consortium can review it afterward.
Which Besu components and settings control validator behavior?
Six components decide how a QBFT validator joins, signs and reports. Some live in the chain, some live in files on each node, and one is a runtime flag. Review all six before a change window so the agreed network configuration matches what each node actually runs.
QBFT validator set in the chain
The validator set is state held on the chain, so membership changes move through validator votes and are recorded on the chain itself. Operators should confirm which addresses the network currently treats as validators, who holds voting authority, and how the vote threshold for adding or removing a validator applies in their Besu release. Keep a signed record of the agreed set outside the network so incident reviews can compare each node against it.
Validator signing key
The signing key lets a validator seal the blocks it proposes and sign its consensus messages. A compromised key lets an attacker produce blocks under a validator's identity, and a mismatched key leaves a validator unable to take part in consensus. Confirm which key source your Besu release reads, where the key material is stored, which accounts can read it, and that the address derived from it matches the validator entry on the chain before the node joins.
Node key and peer identity
The node key file gives each node its peer identity on the network. The Besu documentation describes this file as unencrypted, so anyone who can read it can impersonate that node. Confirm file ownership and permissions, backup handling, and whether your deployment moves the key behind a security module plugin such as the Besu HSM plugin, which is enabled with the --security-module option.
Local permissioning configuration
Local permissioning is a configuration file on each node that sits outside the chain. Node permissioning restricts which peers can connect, and account permissioning sets onboarding rules, suspends accounts and limits actions. Confirm that every validator's file lists the same approved peers, that changes are version-controlled and reviewed, and that a node restarted from an outdated copy does not admit peers the network has not approved.
Genesis consensus settings
The genesis file defines the starting configuration: the chain ID, the QBFT consensus settings and the initial validator set. These values are fixed when the chain starts, so a wrong value cannot be corrected later through a normal configuration change. Confirm the block period, epoch length, request timeout and initial validators against the agreed design, and keep a signed copy of the genesis file in your change records before any node starts.
Metrics endpoint on port 9545
Besu exposes metrics for Prometheus when the --metrics-enabled option is set, with the default endpoint on port 9545. Peer count, block production and sync state are the first signals that a validator is falling behind or dropping out of consensus. Confirm the bind address, restrict scraping to approved monitoring sources, and close the port on any network path that does not need it.
Which validator change and key custody options fit your consortium?
This table compares four day-two decisions for a QBFT network: how validators change, where keys live, where validators run and how tightly timing is set. Read each row against the number of parties who must act, the recovery path when something fails and the audit trail your consortium will need to show later.
| Decision | Option | Operational trade-off | When it fits |
|---|---|---|---|
| Validator set change | In-chain vote | Validator-set changes are proposed and approved by existing validators on chain, so every voting operator must be reachable and act in the same window. Recovery depends on a quorum still producing blocks. The vote record itself is the audit trail. | Consortium has stable operators, a working quorum and wants changes to be recorded on chain without a network restart. |
| Validator set change | Coordinated restart with new genesis | Every operator must stop, switch to the new genesis file and restart in agreed order, which raises coordination cost. Recovery means restoring from a known good state if the cutover fails. The audit trail lives in signed change records outside the chain, so you must keep them yourself. | Membership or rules are changing so much that a fresh genesis is simpler, or a stalled network must be rebuilt under agreed procedures. |
| Validator key custody | File-based validator keys | The node key file is not encrypted, so protection depends on host access controls, backups and disk handling. Key rotation is handled by each operator on their own host. Fewer external dependencies, but the burden of proving key protection falls to your team. | Lower-risk networks with tight host hardening, or a pilot where hardware is not yet in place. |
| Validator key custody | Keys in a security module plugin (for example the Besu HSM plugin via --security-module) | Signing moves to hardware-backed storage, which adds a device to procure, configure, back up and recover. Each operator must maintain the HSM connection and its own runbook. Usually produces a stronger evidence trail for key handling. | Regulated consortia that must show hardware-backed key storage to auditors and can staff HSM operations. |
| Validator hosting | Dedicated hosts for validators | Each validator runs alone, so a fault in one workload does not affect signing or block production. Costs more in machines and patching effort, but failure isolation and access control are simpler to evidence. | Validators hold production consortium keys, and you need clear boundaries for who can reach each host. |
| Validator hosting | Shared hosts | Validators share compute with other services, so resource contention, shared patching windows and broader access can delay block production. Lower infrastructure cost, but every co-located workload joins the change and access review. | Non-production or pilot networks, or when the operator has a strong host isolation model already in place. |
| Block period and round timeouts | Conservative settings | Longer block period and round timeouts tolerate higher and more variable latency between operators, so fewer rounds fail under load. Transactions confirm more slowly, and a stalled round takes longer to detect. | Operators are geographically spread, measured inter-operator latency varies widely, or the network runs on mixed connections. |
| Block period and round timeouts | Aggressive settings | Shorter block time gives faster confirmation but depends on low, stable latency between every operator. Round changes become more frequent when a single operator lags, which raises alert noise and support effort. | Operators are close together on well-measured links and the business case depends on fast confirmation. |
What is the sequence for operating a QBFT validator set?
This sequence takes a permissioned Besu QBFT network from a known starting state to a validator change that operators can repeat. Each step closes with a check you can observe on the node, the chain or the metrics endpoint, so the record of a change shows what was true before and after it.
Confirm Besu version and JDK on each host
Before any change, an operator checks the Besu version and the Java runtime on every validator and RPC host. The Besu 26.6.0 release notes state that Besu requires JDK 25 to build and run, so each host must report a JDK 25 runtime and the Besu version named in the change plan. Record both values per host in the change ticket. The step closes when every host returns the expected version string and a JDK 25 version report, and any host that differs is corrected before work continues.
Record the validator set and block height
Query the chain for the current validator set and the latest block number, then save both with a timestamp. Use the validator-related JSON-RPC methods available in your Besu version, and confirm the method names in the Besu documentation before you script them. Repeat the block number query after a short interval to confirm the chain is advancing. The step closes when you hold a saved snapshot of validators and height that a second operator can reproduce from the same node.
Confirm one key per operator
Each validator operator confirms that they hold their own node key and that no key file has been copied to another person's host or to a shared drive. Besu documentation says the local node private key file is not encrypted, so the check also covers file permissions and storage location. If your policy requires hardware-backed storage, confirm with the vendor or plugin maintainer whether a security module such as the Besu HSM plugin fits your environment. The step closes when each operator signs a written attestation of key location and the node identifiers compare as unique across all validators.
Set and document block period and timeout
Set the QBFT block period and round timeout in the network configuration, using latency measured between each pair of validator sites over the production network path. Write the chosen values, the measurement method and the date into the configuration record. Confirm the option names and accepted ranges in the Besu documentation for your release before you change them. The step closes when every validator's configuration matches the documented record and block timestamps on the test network show the expected production cadence.
Enable metrics and confirm endpoint responds
Start each node with metrics enabled and confirm the metrics endpoint answers on its port. Besu uses the metrics-enabled option, and its default endpoint port is 9545. From a monitoring host, request the endpoint and confirm that a response in the Prometheus format returns, then check that each scrape target shows as up in Prometheus. Keep the metrics endpoint off public networks. The step closes when every validator and RPC node scrapes successfully and the block height metric matches the height the node reports.
Rehearse validator add and remove on test network
On a test network built from the same Besu version and configuration, run one validator addition and one validator removal through the QBFT voting process. Follow the vote steps in the Besu documentation for your release, and watch the validator set and block height after each change. Confirm that the remaining validators keep producing blocks during each vote and that the removed node no longer appears in the validator set. Record every step and any error so the production runbook reflects what actually happened.
Define the change approval record
Create a change approval record template that every validator change uses. It should name the proposed change, the Besu version, the validator identifiers involved, the vote outcome, the approving operators and the rollback plan. Record approvals in writing before the vote starts, and link the record to the block numbers at which the validator set changed. The step closes when the template has been used once on the test network and an independent reviewer can trace a production change from request to the block where the set changed.
Schedule backup before database-touching changes
Before any change that touches the node database, including a Besu upgrade, take a backup and schedule it to complete before the change window opens. The Besu 26.10.0 release notes state that the Bonsai database auto-upgrades on first start and that older Besu versions cannot open an upgraded database, so rollback depends on this backup. Test the restore on a separate host. The step closes when the backup completes, a restored copy starts on the separate host, and it reports a block height at or near the snapshot.
How do validators get added and removed by vote without stopping the chain?
Adding or removing a QBFT validator is a consensus event, not a restart. Existing validators propose a change and cast votes. Once the required majority is reached, the new validator set takes effect, and the set is recorded in the chain so every node applies the same membership from the same point onward. Block production continues while the vote runs, which is why operators can change the set on a live network. Your job before the first vote is to make sure every participant understands what the chain will accept and what it will refuse, because the vote is only as trustworthy as the rules behind it.
Write the governance rules down and get them signed before anyone submits a proposal. The document should answer five questions. Who may propose a change? Who may vote, and does each member hold one vote? How is a candidate vetted for operational competence, legal standing and data handling? How is the new node's identity verified, including who confirms that the candidate controls the node key? And how must a removal be justified, and who can contest it? Ambiguity on any of these will surface at the worst moment, typically when a member wants out during an incident. Confirm the vote mechanics against the current Besu QBFT documentation so the written rules match what the software actually does.
Identity verification deserves its own procedure. A validator is identified by the public key of its node key, and Besu's documentation states that the local node private key file is not encrypted. That means the custody of each candidate's key file is part of the vetting decision, not an afterthought. Ask candidates how the key is stored, who can read it and whether a security module plugin such as the Besu HSM plugin is in use. Check the key fingerprint out of band, through a channel separate from the proposal itself, before any vote. Node permissioning, which restricts connections to known participants, should be updated in the same change window so the new node can actually reach the network.
Treat fault tolerance as the main risk of every membership change. Adding validators changes the margin of failures the network can absorb, and removing one can reduce it, sometimes to a point where a single additional outage stops block production. Before any proposal, calculate the threshold for the exact validator count you will have after the change, and confirm that arithmetic in the Besu documentation rather than relying on general BFT rules of thumb. Record the before and after numbers in the change ticket so the consortium approves the change knowing its effect on resilience.
Rehearse every add and remove on a test network first. Build a network with the same consensus settings and validator count, run the full proposal and vote sequence, and confirm that every node reports the same validator set afterward. Then remove a validator on purpose and watch whether blocks keep being produced at the expected cadence. Enable metrics on the test nodes so you can see peer counts and block production during each step. Keep a written runbook from the rehearsal, including the rollback path, and repeat the rehearsal after each Besu upgrade, because the behavior you tested is tied to the release you tested.
What drives the effort of running QBFT validators?
This table lists the drivers that move the ongoing work of running QBFT validators, the effort each one adds and how to keep it down. Read each row as a lever: the consortium sets how many operators, sites, environments and membership changes it accepts, and each choice sets the operating load. The main takeaway is that fixed windows, one runbook and a shared test network keep recurring work predictable.
| Driver | Why it moves effort | How to keep it down | Who usually carries it |
|---|---|---|---|
| Validator count and operators | Each independent operator adds its own node patching, key handling and on-call duty. | Use one standard node build, a shared runbook and a named contact for each validator. | Consortium staffs each operator's on-call. Partner can quote the build and runbook. |
| Sites and networks | Each site or network adds connectivity checks, separate monitoring and its own upgrade window. | Use an identical build across sites, one configuration template per network and one dashboard. | Consortium staffs site access and change approval. Partner can quote build and templates. |
| Frequency of membership changes | Each vote to add or remove a validator needs a config change, a restart and a sync check. | Hold changes in fixed windows, follow a written checklist and rehearse on the test network first. | Consortium runs the votes and sign-off. Partner can quote the checklist and rehearsal. |
| Key custody model | Besu's local node key file is not encrypted, so the custody choice sets the controls and ceremony load. | Choose one custody model early, document key ceremonies and test recovery of a lost key. | Consortium staffs key custodians and ceremonies. Partner can quote HSM security module plugin integration. |
| Number of environments | Test, staging and production each need their own validators, upgrades and sign-off. | Use one shared test network for rehearsals and promote the same build and config through each environment. | Consortium owns sign-off for each environment. Partner can quote environment setup. |
| Monitoring coverage | Metrics help only where scraping, dashboards and alert routing are set up for every node. | Automate health checks for peer count, block production and sync status, with each alert linked to a runbook step. | Consortium staffs alert response. Partner can quote Prometheus and Grafana setup. |
| Besu upgrade cadence | Besu ships roughly monthly on calendar versions, so each release needs review, testing and an adopt or skip decision. Recent releases include 26.9.0 (September 25, 2026). | Set a fixed upgrade window, a written adopt-or-skip policy per release and a rolling upgrade runbook. | Consortium approves each adoption. Partner can quote release review and rolling upgrades. |
| Database and JDK requirements | Upgraded Bonsai databases cannot be opened by older Besu versions, and 26.6.0 requires JDK 25. | Take a backup before every upgrade, check the JDK version in the runbook and test rollback on the test network. | Consortium owns the backup schedule. Partner can quote upgrade testing and rollback drills. |
What to do when a QBFT network stalls, without losing committed blocks
When a QBFT network stops producing blocks, the first task is to prove the stall is real and identify its cause before any validator is changed. Query the latest block number from every validator's JSON-RPC endpoint and compare the results. Check the peer count on each node as well. A validator that is behind but still connected to peers points to a different problem than a set of nodes that have lost contact with each other. Record timestamps for each check, because a single snapshot rarely shows whether the chain is halted or only slow. Keep these observations in the incident log so operators work from the same evidence.
Once the stall is confirmed, sort it into one of three causes. The first is too few validators online to reach agreement. Confirm the fault tolerance of your validator set and the agreement threshold for your Besu version in the documentation, then compare that figure with the number of validators actually reachable. The second is a clock or network problem affecting consensus, such as validators whose system clocks have drifted or peer-to-peer traffic blocked between sites. The third is a bad configuration change, including edits to genesis or consensus settings, block time or timeout values, or validator vote changes. Assign one owner to each hypothesis so the team tests them in order.
Changes to a stalled network carry their own risk. Restarting many validators at once, or replacing validator keys during the incident, can produce conflicting state and makes it hard to establish which node signed what. Every change should follow a written recovery plan that operators agreed before work began. The plan should name the order of restarts, the person who approves each step, the first node to touch, the criteria for stopping and rolling back, and who communicates with the consortium. Leave node key files unchanged unless the plan explicitly calls for it. The local node private key file is not encrypted, so any copy made during the incident must be controlled and removed afterward.
Take a backup before any action that touches a node's database, including a restart with a new binary, a resync, or a configuration change that alters storage. The Besu 26.10.0 release notes state that the Bonsai database upgrades automatically on first start and that older Besu versions cannot open an upgraded database, so rollback depends entirely on a backup taken beforehand. Stop the node cleanly before copying its data directory, and check that the copy is complete. Where possible, test a restore on a separate host so the team knows the backup works before it is needed.
Recovery should restore liveness by returning validators to agreement on the chain that already exists. Committed blocks must not be rewritten, and any plan that appears to require editing history should be stopped and escalated. Before an incident occurs, confirm in the Besu documentation for your exact version how finality behaves under QBFT and what the recommended recovery procedure is. Rehearse the sequence on a non-production network that mirrors your validator count, key custody and monitoring, so the on-call team has practiced each step before a live stall.
How do you protect validator keys and the voting process?
In a QBFT network, a validator's node key signs blocks and its vote shapes who can join or leave the validator set, so both need controls. The cards below cover how the key is stored, who can reach the host, how votes are authorized and logged, and how permissioning files are changed. Authentication and network hardening have their own pages and are only pointed to here.
Protect the node key file on disk
The Besu documentation states that the local node private key file is not encrypted, so the file system becomes the main protection. Restrict read access on the key file and its data directory to the account that runs Besu, and confirm that backups, snapshots and log collectors do not copy the key in readable form. Check file permissions on every validator host after each provisioning or upgrade run.
Limit who can read the host
Anyone with root or sudo on a validator host can read the node key, so host access is part of key custody. Keep validator hosts in a restricted administrative group, record each login, and use separate administrators for validator hosts and RPC hosts. Ask your team to confirm who holds host access today and whether that list matches the people authorized to vote.
Consider hardware-backed storage with a security module
Where policy requires keys outside plain files, Besu supports a security module plugin through the --security-module option, and the Besu HSM plugin is one example. Evaluate the plugin against your hardware, its supported key types and its failure behavior before committing, because a validator that cannot reach its signing module stops producing blocks. Confirm the plugin version matches your Besu release.
Define who holds the authority to vote
Adding or removing a validator changes the set that finalizes blocks, so the authority to propose and vote must be written down. Name the organizations and individuals allowed to submit proposals, the number of votes needed to pass, and who may approve changes to that list. Store this roster with the network documentation and review it whenever a validator operator changes.
Log every proposal and vote
Each proposal, vote and resulting validator change should appear in a change log with the time, the proposer, the voters, the target address and the approval reference. Record the block in which the change took effect so auditors can match the log to the chain. Ask your team to confirm where the log is stored, who can edit it, and whether entries are signed or otherwise protected against later alteration.
Separate validator key custody from RPC access
A validator signs blocks and should not also serve application traffic. Keep validators off the public or application-facing RPC path, and give RPC nodes their own hosts, credentials and administrators. This split means a compromise of an API-facing node does not expose the signing key. Confirm the network layout in your design review before validators are provisioned.
Treat permissioning files as change-controlled configuration
Node permissioning restricts connections to known participants, and account permissioning sets onboarding rules and can suspend accounts. A wrong edit to these files can cut validators off from the network or admit an unknown peer. Store them in version control, require review and approval before deployment, and roll changes out to every node in a consistent order. Pair each change with an entry in the change log.
How do you verify validator operations work and fail safely?
Every validator change should be proven in a test environment that matches production, both before and after the change. Start with a baseline. Confirm that all validators are producing or agreeing on blocks, meaning every node reports the same head hash at the same height. Record the validator set at that height using the QBFT validator query available through your node's RPC interface, so that later comparisons have a fixed reference. Keep the baseline with the change record. A vote without a baseline gives you no way to show later whether the network behaved differently because of the change.
Next, test adding and removing a validator. Propose a vote to add a test validator, then confirm that the new set appears on every node, not only on the node that proposed the vote, once the vote takes effect. Check that the test validator joins, takes part in block production, and that the chain keeps producing blocks. Then vote the test validator out and repeat the agreement check. Confirm the exact vote procedure and the majority threshold in the Besu private network documentation for the release you run, because the procedure depends on version and your team should not rely on memory.
Then test failure behavior. In the test environment, stop validators one at a time and confirm that blocks continue and all remaining nodes agree while the fault tolerance of your validator count still holds. Stop validators until the threshold is reached, then stop one more. The expected result is that the chain halts. Confirm that it halts without producing blocks that some nodes accept and others reject, and that no node reports a different head. Restart the stopped validators and confirm that each resyncs from its peers and reaches the same head without forking. Rehearse restarts on a copy of the data directory so that production state never becomes the experiment.
Ongoing health checks should run continuously in production. Compare block height and head hash across validators, and alert on any sustained disagreement. Track peer counts per node, since a validator with few peers may lag. Confirm that the metrics endpoint is reachable from your Prometheus server, using the scrape setup in the Besu metrics documentation. Check key file integrity as well: the node private key file is not encrypted by Besu, so verify its owner, permissions and a stored hash, and alert on any change. Finally, stop a validator in the test environment and confirm that the missing-validator alert fires. Alert design is covered on the monitoring page in this series, so use it for thresholds and routing.
What do buyers ask before running QBFT validators with a partner?
Can our own team run QBFT validators on Besu without a partner?
Yes. Besu is open source under Apache 2.0, it is documented, and it supports QBFT for permissioned networks, so an internal team can run it. The harder parts sit outside the software. Governance decides who may vote a validator in or out, who approves a change and how members settle disagreements. Key handling decides how node keys are generated, stored, backed up and rotated. Besu's documentation notes that the local node private key file is not encrypted, so custody needs a deliberate design. Before deciding, ask whether your team has run validators with several independent operators, and whether the consortium has agreed its governance rules in writing.
What drives the cost and effort of a QBFT validator engagement?
The effort table earlier on this page shows the main components, and a quote follows from the written scope. The largest drivers are the number of validators and organizations involved, the number of environments (development, test, pre-production and production), how keys are custodied (software key files, an HSM security module plugin or another approach), the depth of monitoring, and how many rehearsals of validator changes and failure scenarios the consortium requires. One-time work includes design, build, hardening and rehearsal. Recurring work includes monitoring, Besu upgrades and incident support if you buy a retainer. Ask the quote to separate these items, name who is paid for each, and list the assumptions about your hosts and test network. Your own staff time is also a cost, even when it is not invoiced to you.
How long does it take to be ready to run validators in production?
The answer depends on your environments, your key custody model and how many rehearsals the consortium wants before go-live, so confirm the timeline in the written scope before work starts. Readiness usually depends on four workstreams: agreeing governance and validator operator roles, provisioning hosts and a test network, configuring permissioning and metrics, and running failure drills. Each workstream has dependencies outside the project, such as hardware security module procurement, approval cycles in your change board, or the time members need to review genesis and permissioning decisions. Ask the partner to show the phases, the milestones that need client sign-off, and the dependencies that sit with your organization. Writing those dependencies into the scope makes the schedule testable.
What does the work need from our team before and during validator operations?
Your team needs to name the people and decisions a validator network cannot run without. Validator operators: one named person or team for each validator organization, able to respond to alerts and sign off changes. A change approval owner: someone who can accept or reject a vote to add or remove a validator and any configuration change. Host and network access: access to the machines that run validators and to a test network that mirrors production settings. Observability access: access to metrics dashboards and logs. A contact list: documented contacts at each consortium member for coordinated restarts and upgrades. Without these, rehearsals stall and incidents take longer to resolve. Name the people in the written scope so the schedule can depend on them.
Can DeployOpen take over validator operations after go-live?
Yes. Ongoing support, upgrades and continuous testing are available as retainers. A retainer can cover monitoring review, Besu upgrade planning and validator change support on a cadence you agree in writing. Besu ships roughly every month, so the release calendar matters. Upgrades can also change platform requirements: the Besu 26.6.0 release notes state that Besu requires JDK 25 to build and run. The Besu 26.10.0 release notes state that the Bonsai database upgrades automatically on first start and that older versions cannot open the upgraded database, so a backup must be taken before any upgrade that moves the database forward. Ask what the retainer excludes, who holds on-call duty, what response expectations are written into the agreement, and whether your own staff keep operator access. Confirm service levels in the agreement itself.
What happens during an incident if a validator fails or the network stalls?
The aim is to restore block production without losing finality, and the first step is diagnosis before any restart. A QBFT network tolerates only a limited number of faulty validators, so a stall usually means too many validators are down, out of sync or running different configuration. A typical sequence is: confirm which validators are reachable and how many peers each one sees; compare block heights and configuration files across validators; check the metrics for block production and sync status; then bring nodes back in a controlled order while the change approval owner is informed. Do not clear a node database to fix a stall unless a verified backup exists. A written incident process should name on-call contacts, the authority to make emergency changes, the evidence to be kept, and the post-incident review. Confirm each of these in the scope.
How should we protect validator node keys when the key file is unencrypted?
Treat the node private key as the most sensitive file on each validator host. Besu's documentation says the local node private key file is not encrypted, so protection must come from the platform and the process around it. Start by restricting file permissions to the Besu service account, keeping backups encrypted and access-logged, and limiting who can read the host. Where your policy requires hardware-backed storage, a security module plugin such as the Besu HSM plugin can be enabled with the --security-module option. Confirm plugin compatibility with your Besu version before choosing it, because plugins must track Besu releases. Document who may generate, copy, rotate and retire a key, witness key generation, and rehearse a key replacement on the test network before production. Keep the record of each ceremony for your auditors.
How DeployOpen scopes, builds and hands over validator operations
DeployOpen runs Hyperledger Besu QBFT validator operations inside the client's own infrastructure, starting from a written scope that names each validator, environment and procedure. The work covers validator set changes by vote, block time and timeout settings, health monitoring and a documented response to a stalled network.
How we scope
- Engagements are fixed-scope, with the validator count, environments and procedures agreed in writing before work starts.
- The written scope lists which validator changes by vote, and which runbooks, are covered for the network.
- Ask for block time and timeout values to be recorded with the reasoning behind each setting, as part of the scope.
How we build
- Validator add and remove procedures are rehearsed on a non-production QBFT network before they touch live nodes.
- Health checks cover peer count, block production and sync status, using Besu metrics exposed for Prometheus.
- Stalled-network runbooks are tested so operators can restore block production without losing finality already reached.
How we hand over
- Handover includes written runbooks for voting, validator rotation, timeout changes and stall response, tested with your operators.
- Each node's private key handling and backup location is documented, since Besu's node key file is not encrypted by default.
- Your team receives monitoring dashboards and alert definitions, with a record of the settings and the reason for each.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer, scoped separately from the initial engagement.
- Retainer scope can cover reviewing Besu release notes before each planned upgrade of validator nodes.
- Confirm with DeployOpen which incident response hours and escalation paths a retainer includes before signing.

