Skip to content

refactor(agglayer): update Keccak256 hash aliases and rework GlobalIndex#2661

Merged
mmagician merged 3 commits intoagglayerfrom
ajl-hash-chain-alias
Mar 23, 2026
Merged

refactor(agglayer): update Keccak256 hash aliases and rework GlobalIndex#2661
mmagician merged 3 commits intoagglayerfrom
ajl-hash-chain-alias

Conversation

@partylikeits1983
Copy link
Copy Markdown
Member

This PR resolves #2542 and implements the following:

  • Moved Keccak256Output definition from claim_note.rs into new utils.rs
  • Added Keccak256Output::from_hex constructor
  • Created LeafValue and CgiChainHash type aliases in claim_note.rs
  • Refactored GlobalIndex struct into a type alias for Keccak256Output
  • Updated all imports across the codebase

@partylikeits1983 partylikeits1983 changed the base branch from next to agglayer March 23, 2026 09:23
@partylikeits1983 partylikeits1983 marked this pull request as ready for review March 23, 2026 09:32
Copy link
Copy Markdown
Collaborator

@mmagician mmagician left a comment

Choose a reason for hiding this comment

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

LGTM thanks!

@mmagician mmagician enabled auto-merge (squash) March 23, 2026 11:02
@mmagician mmagician added the no changelog This PR does not require an entry in the `CHANGELOG.md` file label Mar 23, 2026
@mmagician mmagician merged commit 47b4eeb into agglayer Mar 23, 2026
17 checks passed
@mmagician mmagician deleted the ajl-hash-chain-alias branch March 23, 2026 17:00
@mmagician mmagician mentioned this pull request Mar 23, 2026
mmagician added a commit that referenced this pull request Mar 23, 2026
* refactor: refactor `EthAddress` and `EthEmbeddedAccountId` (#2622)

* Rename the `MMR Frontier` structure (#2642)

* refactor: rename MMR frontier

* docs: use LET instead of MTF in user-facing docs, improve docs

* chore: update changelog

* docs: use append insread of add in terms of LET

* refactor: rename bridge memory-reading procedures to use `load_*` prefix (#2650)

Resolves #2640 by renaming private bridge_in.masm procedures that read
from memory to use `load_*` prefix, distinguishing them from `get_*`
procedures that read from account storage:

- get_origin_token_address -> load_origin_token_address
- get_raw_claim_amount -> load_raw_claim_amount
- get_destination_account_id_data -> load_destination_address
  (also extracts eth_address::to_account_id call to the call site)

Removes the TODO comment from faucet/mod.masm since the name conflict
is resolved.

Co-authored-by: Claude (Opus) <noreply@anthropic.com>

* docs(agglayer): add Faucet Registry section to the spec (#2584)

* docs(agglayer): add Section 6 - Faucet Registry to SPEC.md

* docs(agglayer): add issue references to SPEC Section 6

Link #2585 (token name storage) and #2586 (on-chain metadata hash
verification) in the implementation status notes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(agglayer): update Section 6 to reflect two-step faucet registration

Section 6 (Faucet Registry) now accurately describes the current
implementation:
- Two registries: faucet_registry_map + token_registry_map
- register_faucet performs atomic two-step registration
- lookup_faucet_by_token_address for bridge-in token resolution
- Updated storage slot names (removed miden:: prefix)
- AggLayerFaucet struct moved to src/faucet.rs
- Companion components (Ownable2Step, OwnerControlled) documented
- CONFIG_AGG_BRIDGE note now carries origin_token_address (7 felts)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(agglayer): clarify Miden-native faucet bridging in Section 6.2

Replace the "not yet implemented" placeholder with a concrete
description of how Miden-native faucets use the same registration
and bridging flow as wrapped faucets. The origin_token_address is
the faucet's own AccountId embedded as an Ethereum address via
EthAddressFormat::from_account_id. The EVM bridge deploys a
TokenWrapped ERC20 deterministically on first claim.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: polish sec 6

* docs(agglayer): fix CREATE2 salt description in Miden-native faucets

The CREATE2 salt is tokenInfoHash (derived from originNetwork +
originTokenAddress), not the metadata hash. The metadata bytes are
used to initialize the wrapped token's name, symbol, and decimals.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update crates/miden-agglayer/SPEC.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update crates/miden-agglayer/SPEC.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update crates/miden-agglayer/SPEC.md

Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>

---------

Co-authored-by: Claude (Opus) <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>

* docs(agglayer): update the spec to latest code state (#2649)

* docs(agglayer): update SPEC Sections 1-5 to latest code state

Align the spec with the current agglayer branch after the CLAIM flow
re-orientation and faucet registry migration:

- Section 1: CLAIM now targets bridge (not faucet); add MINT note row
- Section 2.1: Add bridge_in::claim; update register_faucet to two-step
  registration (faucet_registry + token_registry); replace
  verify_leaf_bridge with claim procedure; add new storage slots
  (token_registry_map, claim_nullifiers, cgi_chain_hash); update
  rpo256 references to poseidon2
- Section 2.2: Replace faucet::claim with mint_and_send; add
  get_metadata_hash and get_scale; add metadata_hash storage slots
  and companion component notes
- Section 3: Update CLAIM consumption to target bridge; update
  CONFIG_AGG_BRIDGE to 7-felt layout; update BURN serial_num to
  poseidon2; update P2ID generation source; add MINT note type (3.7)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(agglayer): document Ownable2Step sender validation on MINT notes

The MINT note's sender (bridge) is validated by the faucet's
owner_only mint policy via Ownable2Step::assert_sender_is_owner.
This ensures only the bridge account can trigger minting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* docs(agglayer): address review comments on SPEC Sections 1-5

- Fix GER merge order: poseidon2::merge(GER_LOWER, GER_UPPER)
- Add advice map mention to bridge_in::claim inputs
- Simplify MINT note details in step 8, point to Section 3.7
- Remove implicit "[0,0,0,0] if absent" from storage tables
- Use "lower/upper word" instead of hash_0..hash_7 in value encodings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Apply suggestions from code review

Co-authored-by: Marti <marcin.gorny.94@protonmail.com>

* chore: update conventions

* Update crates/miden-agglayer/SPEC.md

Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>

* chore: remove distinction between element notation

---------

Co-authored-by: Claude (Opus) <noreply@anthropic.com>
Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>

* refactor: update Keccak256 hash aliases and rework GlobalIndex (#2661)

---------

Co-authored-by: Alexander John Lee <77119221+partylikeits1983@users.noreply.github.com>
Co-authored-by: Andrey Khmuro <andrey@polygon.technology>
Co-authored-by: Claude (Opus) <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no changelog This PR does not require an entry in the `CHANGELOG.md` file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update hash aliaces

2 participants