diff --git a/AZIPs/azip-17.md b/AZIPs/azip-17.md new file mode 100644 index 0000000..9533fa2 --- /dev/null +++ b/AZIPs/azip-17.md @@ -0,0 +1,55 @@ +# AZIP-17: Optimized Rollup Verifier + +## Preamble + +| `azip` | `title` | `description` | `author` | `discussions-to` | `status` | `category` | `created` | +| ------ | ------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------- | -------- | ---------- | ---------- | +| 17 | Optimized Rollup Verifier | Switch the L1 root-rollup verifier to the hand-rolled inline-assembly UltraHonk verifier. | Mitchell Tracy (mitchell@aztec-labs.com) | - | Draft | Accepted | 2026-05-28 | + +## Abstract + +The L1 root-rollup verifier MUST be the inline-assembly UltraHonk Solidity verifier generated by `bb write_solidity_verifier --optimized`, replacing the high-level Solidity verifier previously used. The verified relation, the proof shape, and the verification key MUST be unchanged; only the on-chain implementation changes. + +## Impacted Stakeholders + +**Sequencers and Provers.** No proof-format change. Existing proofs verify identically against the new contract, just more cheaply. + +**Infrastructure Providers.** No change. + +**App Developers, Wallets, Token Bridges.** No change. + +## Motivation + +Root-rollup verification is expensive. Lowering verification gas directly reduces per-epoch sequencer cost and therefore user fees. + +## Specification + +The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174. + +The rollup verifier deployed by `DeployRollupLib._deployVerifier` MUST be the `HonkVerifier` produced from `barretenberg/sol/src/honk/optimised/honk-optimized.sol.template` with the root-rollup verification key injected at code-generation time. + +The verifier MUST implement the same UltraHonk verification as the non-optimized version. + + +## Rationale + +A hand-rolled assembly verifier is the smallest change that captures the full gas saving without altering the underlying proof system. +## Backwards Compatibility + +The verified relation, proof shape, and VK are unchanged, so existing proofs MUST verify against the new contract. The verifier contract address changes; any consumer pinning a verifier address MUST update. + +## Test Cases + +- Every existing rollup verifier test MUST pass against the new contract. + +## Reference Implementation + +Template: `barretenberg/sol/src/honk/optimised/honk-optimized.sol.template`. Generator: `bb write_solidity_verifier --scheme ultra_honk --disable_zk --optimized`. Rollup wiring: `noir-projects/noir-protocol-circuits/bootstrap.sh`, consumed by `l1-contracts/script/deploy/DeployRollupLib.sol`. + +## Security Considerations + +The optimized verifier MUST receive an external audit. + +## Copyright Waiver + +Copyright and related rights waived via [CC0](/LICENSE).