Skip to content

feat(avm): contract class mutation#19498

Merged
IlyasRidhuan merged 1 commit into
merge-train/avmfrom
ir/01-09-feat_avm_contract_class_mutation
Jan 14, 2026
Merged

feat(avm): contract class mutation#19498
IlyasRidhuan merged 1 commit into
merge-train/avmfrom
ir/01-09-feat_avm_contract_class_mutation

Conversation

@IlyasRidhuan

@IlyasRidhuan IlyasRidhuan commented Jan 12, 2026

Copy link
Copy Markdown
Contributor

Adds mutation for contract classses. This requires changing from simple ContractClass to ContractClassWithCommitment within the fuzzer.

We need the commitment so that when the contract class is mutated, we can re-compute: the class id and the contract address.

@AztecBot

AztecBot commented Jan 12, 2026

Copy link
Copy Markdown
Collaborator

Flakey Tests

🤖 says: This CI run detected 4 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/5a88ff93aba3260c�5a88ff93aba3260c8;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_invalidate_block.parallel.test.ts "committee member invalidates a block if proposer does not come through" (94s) (code: 1) group:e2e-p2p-epoch-flakes (\033IlyasRidhuan\033: feat(avm): contract class mutation)
\033FLAKED\033 (8;;http://ci.aztec-labs.com/18c2ce120400d9db�18c2ce120400d9db8;;�): yarn-project/end-to-end/scripts/run_test.sh web3signer src/composed/web3signer/e2e_multi_validator_node_key_store.test.ts (35s) (code: 1) (\033IlyasRidhuan\033: feat(avm): contract class mutation)
\033FLAKED\033 (8;;http://ci.aztec-labs.com/ee2a604854608bea�ee2a604854608bea8;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_p2p/gossip_network.test.ts (428s) (code: 1) group:e2e-p2p-epoch-flakes (\033IlyasRidhuan\033: feat(avm): contract class mutation)
\033FLAKED\033 (8;;http://ci.aztec-labs.com/2def6311a768668c�2def6311a768668c8;;�): ./boxes/scripts/run_test.sh react chromium (602s) (code: 124) (\033IlyasRidhuan\033: feat(avm): contract class mutation)

@sirasistant sirasistant left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! With this approach of bytecode mutations and classes mutations, the mutation only lives for one iteration (further mutations will clear the contract classes). We can probably improve this so they are longer lived, by changing the approach of rebuild everything on every mutation to rebuild what's needed. But for now it's probably fine.

@IlyasRidhuan

Copy link
Copy Markdown
Contributor Author

yep! thanks for the reminder, we should just mutate 1 bytecode per iteration i think.

@IlyasRidhuan IlyasRidhuan changed the base branch from ir/01-06-feat_avm_avm_fuzzer_bytecode_mutation to graphite-base/19498 January 14, 2026 10:41
@IlyasRidhuan IlyasRidhuan force-pushed the ir/01-09-feat_avm_contract_class_mutation branch from 3a173f8 to 62aa8d5 Compare January 14, 2026 13:07
@IlyasRidhuan IlyasRidhuan changed the base branch from graphite-base/19498 to merge-train/avm January 14, 2026 13:07
@IlyasRidhuan IlyasRidhuan merged commit 87cbf1e into merge-train/avm Jan 14, 2026
15 of 17 checks passed
@IlyasRidhuan IlyasRidhuan deleted the ir/01-09-feat_avm_contract_class_mutation branch January 14, 2026 13:40
@AztecBot AztecBot mentioned this pull request Jan 14, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Jan 14, 2026
BEGIN_COMMIT_OVERRIDE
fix(avm): Fix relative addressing in fuzzer (#19550)
feat(avm): avm fuzzer bytecode mutation (#19378)
chore(avm): there is automatic conversion from uint128_t to FF
chore(avm): ECC pre-audit - normalise infinity points (#19462)
feat(bb-pilcom): single-component graph check (#19578)
feat(avm): contract class mutation (#19498)
chore: support uint128_t in uint256_t construction (#19581)
fix!: remove unused column in update_check.pil (#19557)
fix(avm)!: pre-audit review of context.pil (#19549)
fix(avm): Relax fuzzer memory manager asserts (#19591)
fix!: sha256.pil missing input propagation constraints (#19590)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants