feat: move storage_slot from partial commitment to completion hash#21351
Merged
benesjan merged 1 commit intomerge-train/fairiesfrom Mar 11, 2026
Merged
Conversation
benesjan
commented
Mar 11, 2026
| pub global MAX_PUBLIC_LOG_LEN_FOR_NOTE_COMPLETION: u32 = MAX_NOTE_PACKED_LEN; | ||
|
|
||
| global MAX_LOG_CONTENT_LEN: u32 = std::cmp::max( | ||
| pub(crate) global MAX_LOG_CONTENT_LEN: u32 = std::cmp::max( |
Contributor
Author
There was a problem hiding this comment.
Needed to expose this because it's now used by fetch_and_process_partial_note_completion_logs when separating the public note content from the storage slot.
With the introduction of the `Owned` state variable, the storage slot no longer encodes the owner address, making it safe to reveal publicly. This moves storage_slot from the first round of hashing (partial commitment) to the second round (completion hash), simplifying the private message and partial commitment. Changes: - Partial commitment: hash(owner, randomness) instead of hash(owner, storage_slot, randomness) - Completion hash: hash(commitment, storage_slot, value) instead of hash(commitment, value) - Completion log: [tag, storage_slot, ...values] instead of [tag, ...values] - storage_slot removed from private message encoding/decoding - storage_slot extracted from completion log during note discovery - Applied to both UintNote and NFTNote Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
54f7b0c to
09ba01e
Compare
Contributor
Author
This stack of pull requests is managed by Graphite. Learn more about stacking. |
github-merge-queue bot
pushed a commit
that referenced
this pull request
Mar 13, 2026
BEGIN_COMMIT_OVERRIDE fix: skip oracle version check for pinned protocol contracts (#21349) fix: not reusing tags of partially reverted txs (#20817) feat: move storage_slot from partial commitment to completion hash (#21351) feat: offchain reception (#20893) fix: handle workspace members in needsRecompile crate collection (#21284) fix(aztec-nr): return Option from decode functions and fix event commitment capacity (#21264) fix: handle bad note lengths on compute_note_hash_and_nullifier (#21271) fix: address review feedback from PRs #21284 and #21237 (#21369) fix: claim contract & improve nullif docs (#21234) feat!: auto-enqueue public init nullifier for contracts with public functions (#20775) fix: search for all note nonces instead of just the one for the note index (#21438) fix: set anvilSlotsInAnEpoch in e2e_offchain_payment to prevent finalization race (#21452) fix: complete legacy oracle mappings for all pinned contracts (#21404) fix: correct inverted constrained encryption check in message delivery (#21399) feat!: improve L2ToL1MessageWitness API (#21231) END_COMMIT_OVERRIDE
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.

This is the first PR of probably 2 towards achieving No-setup Partial Notes. In this PR I move the
storage_slotfrom the partial note commitment (first hash round) to the completion hash (second round).AI Summary
storage_slotfrom the partial note commitment (first hash round) to the completion hash (second round), since with theOwnedstate variable the storage slot no longer encodes the owner and can be safely revealed publiclyhash(owner, randomness)and the completion hash tohash(commitment, storage_slot, value)storage_slotfrom the private message encoding; it is now extracted from the public completion log during note discoveryUintNoteandNFTNoteand all contract callers