feat(public_checks): demote to non-protocol contract#23199
Merged
dbanks12 merged 0 commit intoMay 12, 2026
Conversation
Contributor
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
This was referenced May 12, 2026
997ab10 to
2ce0150
Compare
7103a75 to
36d801c
Compare
10c3fc0 to
707496c
Compare
2ce0150 to
0476d27
Compare
This was referenced May 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Stacked on top of #23197 (which stacks on #23106). Mirrors the auth_registry and multi_call_entrypoint demotions but with a Noir-side stamp because
public_checks::utils::privately_check_*is consumed by Noir app contracts (app_subscription, crowdfunding).Summary
public_checks_contractfromcontracts/protocol/tocontracts/canonical/(preserves git rename history).canonical_addressesNoir crate solib.nris now a hand-written aggregator that re-exports per-contract stamps.auth_registry.nr(renamed fromlib.nr) holdsAUTH_REGISTRY_ADDRESS;public_checks.nrholds the newPUBLIC_CHECKS_ADDRESS. Downstreamuse canonical_addresses::FOO_ADDRESSimports keep their flat paths.public_checks::utilsto importcanonical_addresses::PUBLIC_CHECKS_ADDRESS; addscanonical_addressesas a direct Nargo dep ofpublic_checks_contract(transitive dep throughaztecwasn't enough for nargo's import resolver).PUBLIC_CHECKS_ADDRESSfromconstants.nr/aztec_constants.hpp/constants_gen.pil/constants.gen.ts/constants.in.tswhitelists and drops the entry fromprotocol_contracts.json. Address slot 6 inProtocolContractsListbecomes reserved (zero).public-checksstamp sub-package to@aztec/canonical-contractswith both Noir lib renderer and TS twin, plus a freshness test..tsfile (which previously caused the freshness assertion to flap between renderer-output and on-disk versions). This is a one-time fix that lets the freshness gate be stable for all three stamps; the on-disk Noir/TS twin files are correspondingly regenerated.noir-projects/scripts/public_checks_cycle_guard.sh(mirrors the auth_registry guard). It accepts the structural dep (unlike auth_registry's) because the contract crate must exportutils.nrfor consumer contracts, but it still fails if the bytecode embeds the stamped address.public-checks/subdir from@aztec/protocol-contracts, thePublicChecksContractre-export fromaztec.js, and the entries in the bundle/lazy providers.Derived address
PUBLIC_CHECKS_ADDRESS = 0x0ed9aa9b8262bd0afb923764799e058ad10cf0de3e01dcf955055b11fdb20d70(class id
0x1853dc3b22d13d7fb93a089c366125098bf0f4a169255e12fc3765b3c08c3b6dmatches the prior protocol-contract class id forPublicChecks; only the address moves from the magic6to the artifact-derived value.)Test plan
yarn workspace @aztec/canonical-contracts test— all 15 tests pass (auth_registry, multi_call_entrypoint, and public_checks freshness gates).nargo compile --package {public_checks_contract,app_subscription_contract,crowdfunding_contract}— all succeed.noir-projects/scripts/public_checks_cycle_guard.sh—public_checks cycle guard: ok.