Repository navigation
zk-proofs: UltraHonk verifier needs Protocol 28+, pin its proof tooling - #160
Conversation
The rs-soroban-ultrahonk 0.1.0 release builds on soroban-sdk 28, so contracts using it need Protocol 28, not the CAP-0080 floor of 26. Pin the Noir walkthrough to Nargo 1.0.0-beta.9 + bb 0.87.0 with the Keccak oracle, add the missing write_vk step, note the OpenZeppelin audit, and update the eval scenario.
|
|
🤖 Automated message from the Stellar Triage Bot. Picked this up. I am reviewing the claims and will wait for Copilot's review before I merge. |
There was a problem hiding this comment.
🟡 Changes recommended
The proof commands and evaluation scenario still omit the required --disable_zk non-ZK flavor selection.
2 open issues
What changed in this PR
Updates the zk-proofs guidance and evaluation scenario for Protocol 28+ UltraHonk verification.
Changes:
- Updates protocol, tooling, and audit guidance.
- Pins Noir and Barretenberg versions with revised proof commands.
- Aligns the Noir evaluation scenario.
| File | Summary |
|---|---|
skills/zk-proofs/SKILL.md |
Updates verifier requirements, tooling, audit notes, and walkthrough commands. |
evals/scenarios/zk-proofs/02-noir-onchain.json |
Aligns evaluation expectations with the revised guidance. |
Review effort: Lite
| "States that Noir's UltraHonk/BN254 output verifies on-chain via the community rs-soroban-ultrahonk verifier, and that it needs Protocol 26+ (CAP-0074 base ops plus CAP-0080 MSM/Fr host functions)", | ||
| "Flags the verifier's maturity (young, community-maintained — check audit status before mainnet)", | ||
| "States that Noir's UltraHonk/BN254 output verifies on-chain via the community rs-soroban-ultrahonk verifier, which uses CAP-0074 base ops plus CAP-0080 MSM/Fr host functions, and that its current release (soroban-sdk 28) needs Protocol 28+, not just Protocol 26+", | ||
| "Generates proofs with the verifier's pinned tooling (Nargo 1.0.0-beta.9 + Barretenberg 0.87.0) and passes --oracle_hash keccak to bb, without --zk", |
There was a problem hiding this comment.
🤖 Automated message from the Stellar Triage Bot.
Not applied. --disable_zk does not exist in bb 0.87.0, the version this verifier pins.
- In 0.87.0,
zkdefaults to false and--zkis the opt-in flag (bb/cli.cpp, api/api.hpp at v0.87.0). - Upstream's
circuits/scripts/build_all.shruns bb 0.87.0 with--oracle_hash keccakand no ZK flag. --disable_zkarrives in bb 1.0.0, where ZK becomes the default.
Your concern is valid for bb 1.x. cac6404 adds a warning to stay on 0.87.0 and says why.
| bb prove --scheme ultra_honk --oracle_hash keccak -b target/age_check.json -w target/witness.gz -o target | ||
| bb write_vk --scheme ultra_honk --oracle_hash keccak -b target/age_check.json -o target | ||
| bb verify --scheme ultra_honk --oracle_hash keccak -k target/vk -p target/proof -i target/public_inputs # off-chain check |
There was a problem hiding this comment.
🤖 Automated message from the Stellar Triage Bot.
Not applied. --disable_zk does not exist in bb 0.87.0, the version this verifier pins.
- In 0.87.0,
zkdefaults to false and--zkis the opt-in flag (bb/cli.cpp, api/api.hpp at v0.87.0). - Upstream's
circuits/scripts/build_all.shruns bb 0.87.0 with--oracle_hash keccakand no ZK flag. --disable_zkarrives in bb 1.0.0, where ZK becomes the default.
Your concern is valid for bb 1.x. cac6404 adds a warning to stay on 0.87.0 and says why.
|
🤖 Automated message from the Stellar Triage Bot. Verified at cac6404. Merging.
|

🤖 Automated message from the Stellar Triage Bot.
The
zk-proofsNoir walkthrough said the rs-soroban-ultrahonk verifier needs Protocol 26+. The 0.1.0 release builds onsoroban-sdk^28, and its README says contracts need Protocol 28+.Changes:
--oracle_hash keccak, addsbb write_vk, and fixes the-oand-ipaths. The old snippet used bb's Poseidon2 default and had no vk step.Sources: the verifier README, crates.io deps, and the bb 0.87.0 and Nargo 1.0.0-beta.9 CLI source. No site code changed.
Closes #159