Skip to content

feat: merge-train/fairies#21936

Merged
AztecBot merged 10 commits into
nextfrom
merge-train/fairies
Mar 25, 2026
Merged

feat: merge-train/fairies#21936
AztecBot merged 10 commits into
nextfrom
merge-train/fairies

Conversation

@AztecBot

@AztecBot AztecBot commented Mar 24, 2026

Copy link
Copy Markdown
Collaborator

BEGIN_COMMIT_OVERRIDE
fix: interactions clean up (#21933)
fix(stdlib): decode EthAddress, FunctionSelector and wrapped field structs in AbiDecoder (#21926)
fix: bot gas estimations (#21945)
refactor(aztec-nr): use logging wrappers in compute_note_hash_and_nullifier (#21897)
feat: add error page mapping for incompatible oracles (#21943)
fix(pxe): robust error handling in message processing (#21093)
fix: make PXE#getSyncedBlockHeader a concurrency=1 job to prevent IDB tx liveness issues (#21944)
fix(aztec-up): validate semver in uninstall to prevent path traversal (#21892)
fix(aztec-up): add truncation protection to install scripts (#21896)
feat!: scoped capsules (#21533)
END_COMMIT_OVERRIDE

This PR attempts to improve our interaction classes.

Closes: #21875

1. ) Addresses the aforementioned bug, where `BatchCall` wasn't
forwarding the baked in interaction data (authwitnesses, capsules,
extrahashedargs)
2. ) Removes the stale `returnReceipt` option from `DeployMethod`. This
is a remnant from when we were just returning the deployed contract. Now
that the return type is complex object, it just doesn't make sense to
have extra complexity

---------

Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
@AztecBot AztecBot requested a review from a team as a code owner March 24, 2026 07:01
benesjan and others added 3 commits March 24, 2026 18:06
Now that `EmbeddedWallet` estimates gas on send, these simulations are
redundant
@nchamo nchamo requested a review from nventuro as a code owner March 24, 2026 13:01
mverzilli and others added 4 commits March 24, 2026 13:45
Changes the error messages thrown when oracle version issues are
detected. It deemphasizes the "oracle" wording since that's about
internals, and emphasizes that the contract has been compiled with an
Aztec.nr version that their PXE doesn't know how to handle. It also adds
an error page link where we can document more specifics in the future.

Closes F-486
… tx liveness issues (#21944)

Follow up from troubleshooting a user app. This app was interacting with
PXE in a way that it is not designed to work, but ultimately
"protecting" this method by queueing it makes it a bit more robust even
when misused.

Closes F-485
@nchamo nchamo requested a review from charlielye as a code owner March 24, 2026 14:26

@ludamad ludamad left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Auto-approved

@AztecBot AztecBot enabled auto-merge March 24, 2026 19:22
@AztecBot

Copy link
Copy Markdown
Collaborator Author

🤖 Auto-merge enabled after 4 hours of inactivity. This PR will be merged automatically once all checks pass.

Expands capsules to be addressed not only by contract address but also
by scope. This changes `loadCapsule`, `storeCapsule`, `deleteCapsule`,
and `copyCapsule` through various layers, in most cases by introducing a
new scope param. This means different things at different layers:

- `CapsuleStore` changes how it creates DB row keys to store capsule
content, by adding the scope address as part of key computation.
Address=ZERO then becomes global scope. Note this means legacy behavior
is possible by providing a zero scope (though this should be frowned
upon).
- Corresponding oracles now take a scope param. 
- Transient capsules are also given optional scopes. I initially
intended to leave them untouched, but given we currently shadow them
with stored capsules on `load`, that would have caused behavioral drift.

## CapsuleArray

- Makes CapsuleArray's scope aware.
- Makes `CapsuleArray::at` work only with explicit scopes, intended to
be the default

## Contract sync

Contract sync flows rely heavily on capsules so as a ripple of this
change we move from a "per contract" sync, to a "per contract and scope"
sync. This in turn resulted in simplification of some ad-hoc types such
as MessageContext, NoteValidationRequest and EventValidationRequest.

## Offchain processing

This is the original canary that triggered this refactor: it was not
possible to cleanly implement offchain inboxes isolated by recipient.
Since now capsules are always scoped, this is issue gets organically
resolved by dispatching messages to different capsules based on each
message's recipient.

 

Closes F-456
Closes F-457
Closes F-458
Closes F-459
@AztecBot AztecBot added this pull request to the merge queue Mar 25, 2026
Merged via the queue into next with commit 9a0080c Mar 25, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants