Problem
ZKA bridge validity predicates need a consensus-native way to verify the exact UltraHonk/BN254/Keccak proofs produced by their pinned Noir/Barretenberg pipeline. Namada currently has no corresponding verifier host import, authenticated verifier-profile registry, deterministic resource schedule, or activation lifecycle, so the production path must remain fail-closed.
ZKA ADR-0009 specifies the intended trust boundary and wire formats. Its reserved zka-ultrahonk-bn254-keccak-zk-bb5-v1 feasibility profile is permanently non-admissible because the production trusted-setup artifacts and review dispositions were never assigned. Current export and transfer artifacts also produce 7,616-byte proofs, above ABI v1's fixed 7,232-byte ceiling, so they require a separately versioned successor ABI/profile rather than changing v1 in place.
Reference: https://github.com/pyramidal-io/ZKA.dev/blob/main/docs/adr/0009-namada-consensus-native-ultrahonk-verification-bou.md
Proposed staged work
- Add total, bounded codecs for the ADR-0009 profile-binding, three-row allowlist, trusted-setup provenance, and inactive-selection records. This stage is deliberately non-activating and retains v1's exact 7,232-byte ceiling.
- Extract and audit a verifier-only UltraHonk BN254/Keccak core with a panic-free canonical parser and reproducible dependency/source lock.
- Add the root-frame-authenticated VP host ABI and bind calls to host-derived chain, VP code, protocol-version, and statement-domain context.
- Add an immutable governance registry and fail-closed activation/rotation lifecycle over complete, profile-selected rows and inline authenticated verifier CRS bytes.
- Prove deterministic gas and native memory bounds, then publish cross-tool positive and adversarial KATs across pinned
bb -t evm, the Rust host verifier, and generated Solidity verifiers.
- Wire the real ZKA bridge VP path, remove the transfer fallback only after all positive paths are real, and use a two-phase protocol activation.
Each stage should be an atomic, reviewable PR. The first implementation stage is ready locally with an authoritative byte-for-byte ADR golden vector, exhaustive truncation/trailing/mutation coverage, fixed allocation, and no storage, governance, verifier, or activation API.
Security invariants
- The reserved v1 profile remains inactive and non-admissible.
- No caller bytes, local file, cache, download, implementation default, or ambient network source may substitute for protocol-published, authenticated verifier artifacts.
- A selected profile binds complete circuit rows, exact lengths/encodings, all artifact and schema digests, inline canonical G2 CRS bytes, named provenance, and resource/gas versions.
- Caller proof/input parse failures and false equations are transaction-invalid; malformed referenced authenticated verifier state is validator-fatal before vote or commit.
- Parsing, allocation, gas, and results are deterministic across supported architectures.
- Activation occurs only after exact-artifact cryptographic, trusted-setup, codec, runtime, gas, governance, and state-machine reviews.
Maintainer input requested
- Is
crates/parameters the preferred home for the non-activating wire codecs and inactive protocol selection record?
- Which future Namada protocol version/release should own the successor host ABI and activation gate?
- Should the verifier core live in-tree or as a separately audited, pinned crate?
Problem
ZKA bridge validity predicates need a consensus-native way to verify the exact UltraHonk/BN254/Keccak proofs produced by their pinned Noir/Barretenberg pipeline. Namada currently has no corresponding verifier host import, authenticated verifier-profile registry, deterministic resource schedule, or activation lifecycle, so the production path must remain fail-closed.
ZKA ADR-0009 specifies the intended trust boundary and wire formats. Its reserved
zka-ultrahonk-bn254-keccak-zk-bb5-v1feasibility profile is permanently non-admissible because the production trusted-setup artifacts and review dispositions were never assigned. Current export and transfer artifacts also produce 7,616-byte proofs, above ABI v1's fixed 7,232-byte ceiling, so they require a separately versioned successor ABI/profile rather than changing v1 in place.Reference: https://github.com/pyramidal-io/ZKA.dev/blob/main/docs/adr/0009-namada-consensus-native-ultrahonk-verification-bou.md
Proposed staged work
bb -t evm, the Rust host verifier, and generated Solidity verifiers.Each stage should be an atomic, reviewable PR. The first implementation stage is ready locally with an authoritative byte-for-byte ADR golden vector, exhaustive truncation/trailing/mutation coverage, fixed allocation, and no storage, governance, verifier, or activation API.
Security invariants
Maintainer input requested
crates/parametersthe preferred home for the non-activating wire codecs and inactive protocol selection record?