You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi — question about which Solidity verifier variant is considered production-ready, and whether the audit scope
document is current.
We run Noir circuits with a ZK UltraHonk EVM verifier (bb write_solidity_verifier -t evm). We measured --optimized across our stack and it is a 71.5% verify-gas cut (23.9M → 6.8M total, flat across circuits from 12.5k to 42.5k gates), with identical VK hashes and smaller deployed bytecode. We would like to adopt it, and the only thing stopping us is audit provenance.
What we found:
barretenberg/cpp/scripts/audit/audit_scopes/honk_solidity_verifier_audit_scope.md lists honk_contract.hpp, honk_optimized_contract.hpp and honk_zk_contract.hpp — but nothonk_zk_optimized_contract.hpp.
That scope doc was last updated 2026-03-26, and honk_zk_optimized_contract.hpp first landed 2026-04-10, so
the omission may simply be that the doc predates the file rather than a deliberate exclusion.
noir-projects/noir-protocol-circuits/bootstrap.sh uses --disable_zk --optimized, i.e. the non-ZK optimized file.
Questions:
Is honk_zk_optimized_contract.hpp in scope for the Honk Solidity verifier audit — either already submitted, or
planned? Is the scope document current, or does it predate the ZK-optimized work?
Is -t evm --optimized (ZK flavor) considered production-ready, or is the non-ZK optimized path the only one
you'd recommend deploying today?
Is anyone deploying the ZK-optimized verifier on mainnet? Any known users would be useful evidence.
Do the barretenberg differential / malformed-proof tests cover the ZK-optimized generator specifically, or only
the non-ZK optimized one?
What we can contribute back: we built a differential-equivalence suite that treats the currently-deployed template
as a reference oracle and requires the two implementations to agree on every input — per relation: every 32-byte proof
word bit-flipped, every public-input word mutated, truncation, all-zero, wrong arity, cross-relation proofs, plus
fuzzed corruption. 56 tests across ten real circuits, and the harness is mutation-verified (injecting a deliberately
unsound verifier fails 10 of 11 checks). We found zero disagreements between the default-ZK and ZK-optimized
templates. Happy to share it if useful.
Hi — question about which Solidity verifier variant is considered production-ready, and whether the audit scope
document is current.
We run Noir circuits with a ZK UltraHonk EVM verifier (
bb write_solidity_verifier -t evm). We measured--optimizedacross our stack and it is a 71.5% verify-gas cut (23.9M → 6.8M total, flat across circuits from 12.5k to 42.5k gates), with identical VK hashes and smaller deployed bytecode. We would like to adopt it, and the only thing stopping us is audit provenance.What we found:
barretenberg/cpp/scripts/audit/audit_scopes/honk_solidity_verifier_audit_scope.mdlistshonk_contract.hpp,honk_optimized_contract.hppandhonk_zk_contract.hpp— but nothonk_zk_optimized_contract.hpp.honk_zk_optimized_contract.hppfirst landed 2026-04-10, sothe omission may simply be that the doc predates the file rather than a deliberate exclusion.
noir-projects/noir-protocol-circuits/bootstrap.shuses--disable_zk --optimized, i.e. the non-ZK optimized file.Questions:
honk_zk_optimized_contract.hppin scope for the Honk Solidity verifier audit — either already submitted, orplanned? Is the scope document current, or does it predate the ZK-optimized work?
-t evm --optimized(ZK flavor) considered production-ready, or is the non-ZK optimized path the only oneyou'd recommend deploying today?
the non-ZK optimized one?
What we can contribute back: we built a differential-equivalence suite that treats the currently-deployed template
as a reference oracle and requires the two implementations to agree on every input — per relation: every 32-byte proof
word bit-flipped, every public-input word mutated, truncation, all-zero, wrong arity, cross-relation proofs, plus
fuzzed corruption. 56 tests across ten real circuits, and the harness is mutation-verified (injecting a deliberately
unsound verifier fails 10 of 11 checks). We found zero disagreements between the default-ZK and ZK-optimized
templates. Happy to share it if useful.
Thanks!