Skip to content
Open
Show file tree
Hide file tree
Changes from 56 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
46143c8
feat: add Solidity<>Miden address type conversion functions
partylikeits1983 Jan 9, 2026
3c84da6
fix: formatting
partylikeits1983 Jan 9, 2026
c71d9df
refactor: rm unnecessary indirection
partylikeits1983 Jan 9, 2026
779ab24
refactor: use crypto util functions
partylikeits1983 Jan 9, 2026
a8238b6
refactor: implement suggestions & refactor
partylikeits1983 Jan 9, 2026
5dd9c85
refactor: update logic & comments to little endian
partylikeits1983 Jan 9, 2026
99bcee7
Update crates/miden-agglayer/src/utils.rs
partylikeits1983 Jan 9, 2026
2d0a89a
refactor: improve EthAddress representation clarity and MASM alignment
partylikeits1983 Jan 9, 2026
3d45e7f
refactor: simplify ethereum_address_to_account_id proc
partylikeits1983 Jan 9, 2026
43cbcf3
fix: clippy
partylikeits1983 Jan 9, 2026
049e8be
fix: lint doc check
partylikeits1983 Jan 9, 2026
99161e3
refactor: use u32assert2
partylikeits1983 Jan 9, 2026
3dc29f6
refactor: simplify from_account_id() & u32 check
partylikeits1983 Jan 9, 2026
4c6289d
revert: undo drop addr4 in ethereum_address_to_account_id
partylikeits1983 Jan 9, 2026
a5f3309
Merge branch 'ajl-solidity-type-conversions' into ajl-agglayer-get-le…
partylikeits1983 Jan 12, 2026
576f907
feat: init getLeafValue() test
partylikeits1983 Jan 12, 2026
a8e35d3
feat: implement AdviceMap key based getLeafValue procedure
partylikeits1983 Jan 12, 2026
a1a1c3d
Update crates/miden-agglayer/src/eth_address.rs
partylikeits1983 Jan 13, 2026
359b3ef
refactor: update test name
partylikeits1983 Jan 13, 2026
1264d24
refactor: rename to EthAddressFormat
partylikeits1983 Jan 13, 2026
2288c0d
refactor: rearrange EthAddressFormat
partylikeits1983 Jan 13, 2026
d9c309a
refactor: rename file to eth_address_format
partylikeits1983 Jan 13, 2026
393ee03
Merge branch 'agglayer' into ajl-solidity-type-conversions
partylikeits1983 Jan 14, 2026
3c3c29e
fix: update script roots
partylikeits1983 Jan 14, 2026
a926316
Merge branch 'ajl-solidity-type-conversions' into ajl-agglayer-get-le…
mmagician Jan 14, 2026
af29827
chore: pipe words to memory
mmagician Jan 14, 2026
d6b9954
refactor: add stack comments
partylikeits1983 Jan 14, 2026
f9f2d57
chore: pipe words to memory instead of manual `adv_loadw`
partylikeits1983 Jan 14, 2026
d61f836
refactor: deduplicate execute_program_with_default_host
partylikeits1983 Jan 14, 2026
d51bed1
feat: add hardcoded expected hash to test
partylikeits1983 Jan 14, 2026
1388770
fix: verify hash matches commitment
mmagician Jan 15, 2026
f200752
fix: put data under correct key in advice map
mmagician Jan 15, 2026
fc9ff91
chore: refresh Cargo.lock file
bobbinth Jan 17, 2026
0aef40d
chore: increment crate versions to v0.14.0
bobbinth Jan 17, 2026
1a3b8a3
chore: fix documentation links
bobbinth Jan 17, 2026
8ebdc7b
chore: merge agglayer
partylikeits1983 Jan 19, 2026
2dfa097
Merge branch 'next' into agglayer
mmagician Jan 20, 2026
1567d89
fix: rm redundant file
partylikeits1983 Jan 20, 2026
c1aec4d
Merge branch 'agglayer' into ajl-agglayer-get-leaf-value
partylikeits1983 Jan 21, 2026
193c618
Merge pull request #2262 from 0xMiden/ajl-agglayer-get-leaf-value
partylikeits1983 Jan 21, 2026
a36bc67
`CLAIM` note followup: helper functions & refactoring (#2270)
partylikeits1983 Jan 22, 2026
cb920e7
Merge branch 'next' into agglayer
mmagician Jan 23, 2026
4c5ccae
feat: implement Keccak-based MMR frontier (#2245)
Fumuran Jan 23, 2026
66bf679
feat(AggLayer): Solidity compatibility tests for MMR frontier code (#…
mmagician Jan 23, 2026
60ab0ae
feat(AggLayer): add `leafType` param to `CLAIM` note (#2290)
mmagician Jan 23, 2026
cfdf123
feat(AggLayer): `UPDATE_GER` note (#2333)
mmagician Jan 24, 2026
181b25d
feat: put target account in attachment
mmagician Jan 23, 2026
a89766f
feat: extract b2agg creation to helper
mmagician Jan 23, 2026
841f839
lint: regen error file
mmagician Jan 23, 2026
5b855fc
feat: use NetworkAccountTarget for attachments
mmagician Jan 24, 2026
bec68d1
fix: still need LET slot
mmagician Jan 24, 2026
b00c976
chore: test the target mismatch logic
mmagician Jan 24, 2026
2aba29c
chore: apply target checks to UPDATE_GER
mmagician Jan 24, 2026
dfb75bc
Apply suggestion from @mmagician
mmagician Jan 24, 2026
4b2f3fa
chore: add TODOs
mmagician Jan 24, 2026
e3a4af1
chore: lint
mmagician Jan 24, 2026
1f500cb
docs(masm): trim dangling B2AGG note description
cursoragent Jan 28, 2026
ed5f3b9
docs(masm): clarify B2AGG attachment layout
cursoragent Jan 28, 2026
2c11e37
feat: use network account target helper
cursoragent Jan 28, 2026
15edfda
feat: make B2AGG notes always public
cursoragent Jan 28, 2026
e5b7c9c
feat: mark B2AGG notes always consumable
cursoragent Jan 28, 2026
cd76aed
style: use NoteScript import for B2AGG
cursoragent Jan 28, 2026
84bfa0a
docs: add changelog entry for PR 2334
cursoragent Jan 28, 2026
bccd1f4
Merge branch 'agglayer-fixed-2' into mmagician-bagg-check
mmagician Jan 28, 2026
bd1f213
Apply suggestions from code review
mmagician Jan 28, 2026
70157d9
chore: move helper to network_account_target
mmagician Jan 28, 2026
ede3906
chore: note script section headers
mmagician Jan 28, 2026
24486d5
chore: comment simplify and wrap
mmagician Jan 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "crates/miden-agglayer/solidity-compat/lib/forge-std"]
path = crates/miden-agglayer/solidity-compat/lib/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "crates/miden-agglayer/solidity-compat/lib/agglayer-contracts"]
path = crates/miden-agglayer/solidity-compat/lib/agglayer-contracts
url = https://github.com/agglayer/agglayer-contracts
2 changes: 2 additions & 0 deletions .taplo.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
exclude = ["crates/miden-agglayer/solidity-compat/lib/*"]

[formatting]
align_entries = true
column_width = 120
Expand Down
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,15 @@
- [BREAKING] Refactored storage slots to be accessed by names instead of indices ([#1987](https://github.com/0xMiden/miden-base/pull/1987), [#2025](https://github.com/0xMiden/miden-base/pull/2025), [#2149](https://github.com/0xMiden/miden-base/pull/2149), [#2150](https://github.com/0xMiden/miden-base/pull/2150), [#2153](https://github.com/0xMiden/miden-base/pull/2153), [#2154](https://github.com/0xMiden/miden-base/pull/2154), [#2160](https://github.com/0xMiden/miden-base/pull/2160), [#2161](https://github.com/0xMiden/miden-base/pull/2161), [#2170](https://github.com/0xMiden/miden-base/pull/2170)).
- [BREAKING] Allowed account components to share identical account code procedures ([#2164](https://github.com/0xMiden/miden-base/pull/2164)).
- Add `AccountId::parse()` helper function to parse both hex and bech32 formats ([#2223](https://github.com/0xMiden/miden-base/pull/2223)).
- Add Keccak-based MMR frontier structure to the Agglayer library ([#2245](https://github.com/0xMiden/miden-base/pull/2245)).
- Add `read_foreign_account_inputs()`, `read_vault_asset_witnesses()`, and `read_storage_map_witness()` for `TransactionInputs` ([#2246](https://github.com/0xMiden/miden-base/pull/2246)).
- [BREAKING] Introduced `NoteAttachment` as part of `NoteMetadata` and remove `aux` and `execution_hint` ([#2249](https://github.com/0xMiden/miden-base/pull/2249), [#2252](https://github.com/0xMiden/miden-base/pull/2252), [#2260](https://github.com/0xMiden/miden-base/pull/2260), [#2268](https://github.com/0xMiden/miden-base/pull/2268), [#2279](https://github.com/0xMiden/miden-base/pull/2279)).
- [BREAKING] Introduce `NoteAttachment` as part of `NoteMetadata` and remove `aux` and `execution_hint` ([#2249](https://github.com/0xMiden/miden-base/pull/2249), [#2252](https://github.com/0xMiden/miden-base/pull/2252), [#2260](https://github.com/0xMiden/miden-base/pull/2260), [#2268](https://github.com/0xMiden/miden-base/pull/2268), [#2279](https://github.com/0xMiden/miden-base/pull/2279)).
- Introduce standard `NetworkAccountTarget` attachment for use in network transactions which replaces `NoteTag::NetworkAccount` ([#2257](https://github.com/0xMiden/miden-base/pull/2257)).
- Add a foundry test suite for verifying AggLayer contracts compatibility ([#2312](https://github.com/0xMiden/miden-base/pull/2312)).
- Added `AccountSchemaCommitment` component to expose account storage schema commitments ([#2253](https://github.com/0xMiden/miden-base/pull/2253)).
- Introduced standard `NetworkAccountTarget` attachment for use in network transactions which replaces `NoteTag::NetworkAccount` ([#2257](https://github.com/0xMiden/miden-base/pull/2257)).
- Added an `AccountBuilder` extension trait to help build the schema commitment; added `AccountComponentMetadata` to `AccountComponent` ([#2269](https://github.com/0xMiden/miden-base/pull/2269)).
- Added `miden::standards::access::ownable` standard module for component ownership management, and integrated it into the `network_fungible` faucet (including new tests). ([#2228](https://github.com/0xMiden/miden-base/pull/2228)).
- [BREAKING] Add `leaf_value` to `CLAIM` note inputs ([#2290](https://github.com/0xMiden/miden-base/pull/2290)).

### Changes

Expand Down
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,13 @@ build-no-std: ## Build without the standard library
build-no-std-testing: ## Build without the standard library. Includes the `testing` feature
$(BUILD_GENERATED_FILES_IN_SRC) cargo build --no-default-features --target wasm32-unknown-unknown --workspace --exclude bench-transaction --features testing

# --- test vectors --------------------------------------------------------------------------------

.PHONY: generate-solidity-test-vectors
generate-solidity-test-vectors: ## Regenerate Solidity MMR test vectors using Foundry
cd crates/miden-agglayer/solidity-compat && forge test -vv --match-test test_generateVectors
cd crates/miden-agglayer/solidity-compat && forge test -vv --match-test test_generateCanonicalZeros

# --- benchmarking --------------------------------------------------------------------------------

.PHONY: bench-tx
Expand Down
3 changes: 3 additions & 0 deletions _typos.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
[default]
extend-ignore-identifiers-re = [".*1st.*", ".*2nd.*", ".*3rd.*"]

[files]
extend-exclude = ["crates/miden-agglayer/solidity-compat/lib"]
1 change: 1 addition & 0 deletions crates/miden-agglayer/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ fs-err = { workspace = true }
miden-assembly = { workspace = true }
miden-core = { workspace = true }
miden-core-lib = { workspace = true }
miden-crypto = { workspace = true }
miden-protocol = { features = ["testing"], workspace = true }
miden-standards = { workspace = true }
regex = { version = "1.11" }
Expand Down
55 changes: 39 additions & 16 deletions crates/miden-agglayer/asm/bridge/agglayer_faucet.masm
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
use miden::agglayer::bridge_in
use miden::agglayer::asset_conversion
use miden::agglayer::eth_address
use miden::protocol::active_account
use miden::protocol::active_note
use miden::standards::faucets
use miden::protocol::note
use miden::protocol::tx
use miden::core::mem
use miden::core::word


# CONSTANTS
Expand All @@ -15,7 +17,7 @@ use miden::core::mem
const BRIDGE_ID_SLOT = word("miden::agglayer::faucet")

const PROOF_DATA_WORD_LEN = 134
const LEAF_DATA_WORD_LEN = 6
const LEAF_DATA_WORD_LEN = 8
const OUTPUT_NOTE_DATA_WORD_LEN = 2

const PROOF_DATA_START_PTR = 0
Expand All @@ -31,8 +33,14 @@ const CLAIM_NOTE_DATA_MEM_ADDR = 712
const OUTPUT_NOTE_INPUTS_MEM_ADDR = 0
const OUTPUT_NOTE_TAG_MEM_ADDR = 574
const OUTPUT_NOTE_SERIAL_NUM_MEM_ADDR = 568
const OUTPUT_NOTE_ASSET_AMOUNT_MEM_ADDR_0 = 548
const OUTPUT_NOTE_ASSET_AMOUNT_MEM_ADDR_1 = 552
const OUTPUT_NOTE_ASSET_AMOUNT_MEM_ADDR_0 = 552
const OUTPUT_NOTE_ASSET_AMOUNT_MEM_ADDR_1 = 556

const DESTINATION_ADDRESS_0 = 547
const DESTINATION_ADDRESS_1 = 548
const DESTINATION_ADDRESS_2 = 549
const DESTINATION_ADDRESS_3 = 550
const DESTINATION_ADDRESS_4 = 551

# P2ID output note constants
const P2ID_SCRIPT_ROOT = [13362761878458161062, 15090726097241769395, 444910447169617901, 3558201871398422326]
Expand Down Expand Up @@ -94,12 +102,6 @@ proc scale_down_amount
repeat.7 drop end
end

# Inputs: []
# Outputs: [prefix, suffix]
proc get_destination_account_id
mem_load.543 mem_load.544
end

# Inputs: [PROOF_DATA_KEY, LEAF_DATA_KEY, OUTPUT_NOTE_DATA_KEY]
# Outputs: []
proc batch_pipe_double_words
Expand Down Expand Up @@ -128,6 +130,27 @@ proc batch_pipe_double_words
exec.mem::pipe_double_words_preimage_to_memory drop
end

#! Extracts the destination account ID as address[5] from memory.
#!
#! This procedure reads the destination address from the leaf data and converts it from
#! Ethereum address format to AccountId format (prefix, suffix).
#!
#! Inputs: []
#! Outputs: [prefix, suffix]
#!
#! Invocation: exec
proc get_destination_account_id_data
mem_load.DESTINATION_ADDRESS_4
mem_load.DESTINATION_ADDRESS_3
mem_load.DESTINATION_ADDRESS_2
mem_load.DESTINATION_ADDRESS_1
mem_load.DESTINATION_ADDRESS_0
# => [address[5]]

exec.eth_address::to_account_id
# => [prefix, suffix]
end

#! Builds a P2ID output note for the claim recipient.
#!
#! This procedure expects the claim data to be already written to memory via batch_pipe_double_words.
Expand All @@ -149,15 +172,16 @@ proc build_p2id_output_note
push.P2ID_NOTE_NUM_STORAGE_ITEMS
# => [note_num_storage_items, SERIAL_NUM, SCRIPT_ROOT]

exec.get_destination_account_id
# => [account_id_prefix, account_id_suffix, note_num_storage_items, SERIAL_NUM, SCRIPT_ROOT]

mem_store.0 mem_store.1
# => [note_num_storage_items, SERIAL_NUM, SCRIPT_ROOT]

push.OUTPUT_NOTE_INPUTS_MEM_ADDR
# => [storage_ptr = 0, note_num_storage_items, SERIAL_NUM, SCRIPT_ROOT]

exec.get_destination_account_id_data
# => [prefix, suffix]

# Write destination account id into memory
mem_store.1 mem_store.0
# => []

exec.note::build_recipient
# => [RECIPIENT]

Expand Down Expand Up @@ -208,7 +232,6 @@ end
#! destinationAddress[5], // Destination address (5 felts, address as 5 u32 felts)
#! amount[8], // Amount of tokens (8 felts, uint256 as 8 u32 felts)
#! metadata[8], // ABI encoded metadata (8 felts, fixed size)
#! EMPTY_WORD // padding
#! ],
#! OUTPUT_NOTE_DATA_KEY => [
#! output_p2id_serial_num[4], // P2ID note serial number (4 felts, Word)
Expand Down
32 changes: 31 additions & 1 deletion crates/miden-agglayer/asm/bridge/bridge_in.masm
Original file line number Diff line number Diff line change
@@ -1,4 +1,33 @@
use miden::agglayer::crypto_utils
use miden::protocol::active_account
use miden::protocol::native_account

# CONSTANTS
# =================================================================================================
const GER_UPPER_STORAGE_SLOT=word("miden::agglayer::bridge::ger_upper")
const GER_LOWER_STORAGE_SLOT=word("miden::agglayer::bridge::ger_lower")

# Inputs: [GER_LOWER[4], GER_UPPER[4]]
# Outputs: []
pub proc update_ger
push.GER_LOWER_STORAGE_SLOT[0..2]
# => [slot_id_prefix, slot_id_suffix, GER_LOWER[4], GER_UPPER[4]]

exec.native_account::set_item
# => [OLD_VALUE, GER_UPPER[4]]

dropw
# => [GER_UPPER[4]]

push.GER_UPPER_STORAGE_SLOT[0..2]
# => [slot_id_prefix, slot_id_suffix, GER_UPPER[4]]

exec.native_account::set_item
# => [OLD_VALUE]

dropw
# => []
end

# Inputs: []
# Output: [GER_ROOT[8]]
Expand All @@ -20,6 +49,7 @@ end
#! rollupExitRoot[8], // Rollup exit root hash (8 felts, bytes32 as 8 u32 felts)
#! ],
#! LEAF_DATA_KEY => [
#! leafType[1], // Leaf type (1 felt, uint32)
#! originNetwork[1], // Origin network identifier (1 felt, uint32)
#! originTokenAddress[5], // Origin token address (5 felts, address as 5 u32 felts)
#! destinationNetwork[1], // Destination network identifier (1 felt, uint32)
Expand All @@ -33,7 +63,7 @@ end
#! Invocation: call
pub proc check_claim_proof
exec.get_rollup_exit_root
# => [GER_ROOT[8], CLAIM_NOTE_RPO_COMMITMENT]
# => [GER_ROOT[8], PROOF_DATA_KEY, LEAF_DATA_KEY]

# Check CLAIM note proof data against current GER
exec.crypto_utils::verify_claim_proof
Expand Down
1 change: 0 additions & 1 deletion crates/miden-agglayer/asm/bridge/bridge_out.masm
Original file line number Diff line number Diff line change
Expand Up @@ -157,4 +157,3 @@ pub proc bridge_out
exec.create_burn_note
# => []
end

142 changes: 142 additions & 0 deletions crates/miden-agglayer/asm/bridge/canonical_zeros.masm
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# This file is generated by build.rs, do not modify

# This file contains the canonical zeros for the Keccak hash function.
# Zero of height `n` (ZERO_N) is the root of the binary tree of height `n` with leaves equal zero.
#
# Since the Keccak hash is represented by eight u32 values, each constant consists of two Words.

const ZERO_0_L = [0, 0, 0, 0]
const ZERO_0_R = [0, 0, 0, 0]

const ZERO_1_L = [3042949783, 3846789184, 2990541491, 2447652395]
const ZERO_1_R = [2532382527, 1151697986, 3453220726, 3056087725]

const ZERO_2_L = [806175122, 2661877378, 3993486975, 3704028736]
const ZERO_2_R = [1186125340, 4132056164, 2406448277, 1360642484]

const ZERO_3_L = [2243606276, 2319049635, 2778422344, 3686444836]
const ZERO_3_R = [836748766, 3055947948, 1063027030, 2746866977]

const ZERO_4_L = [1150525734, 2360852476, 3881358125, 3462706719]
const ZERO_4_R = [224004420, 1513564138, 4058651434, 3010037733]

const ZERO_5_L = [768598281, 293668224, 2114802790, 2680951561]
const ZERO_5_R = [523052921, 3386889228, 1344794057, 3206459406]

const ZERO_6_L = [1746508463, 578821813, 283579568, 4134788524]
const ZERO_6_R = [756088757, 1715252246, 1087590535, 3173153928]

const ZERO_7_L = [2205136186, 3475749318, 613780937, 1818541875]
const ZERO_7_R = [40140559, 91932979, 4234379492, 1459738623]

const ZERO_8_L = [2941712185, 3321779339, 1227307046, 4069577285]
const ZERO_8_R = [611590243, 2128798138, 2473269631, 1607231384]

const ZERO_9_L = [3763621903, 1154705673, 1903710296, 1972812290]
const ZERO_9_R = [4216691121, 4275626407, 3113795592, 3855940302]

const ZERO_10_L = [2781069751, 774786966, 4112065289, 2182953470]
const ZERO_10_R = [3567589455, 861991663, 1356863200, 2134826233]

const ZERO_11_L = [2465787000, 4149924453, 2720076317, 1467765009]
const ZERO_11_R = [1838648827, 866654147, 167150306, 1228583416]

const ZERO_12_L = [2631517602, 171349786, 79648606, 4164671431]
const ZERO_12_R = [270336915, 2195882716, 3960096235, 3469119540]

const ZERO_13_L = [3152187846, 1895984889, 2047814617, 1944734805]
const ZERO_13_R = [3551827087, 82830058, 326416580, 3649232833]

const ZERO_14_L = [3435063385, 3598841737, 2762164692, 1894305546]
const ZERO_14_R = [3658789242, 3755895333, 49531590, 3618465628]

const ZERO_15_L = [3525744215, 708101859, 2574387782, 3790037114]
const ZERO_15_R = [3700193742, 843132861, 3055060558, 2681109466]

const ZERO_16_L = [530120689, 2718529082, 3981742412, 4194160956]
const ZERO_16_R = [4065390056, 824943129, 4207046226, 266679079]

const ZERO_17_L = [2062522595, 650244466, 598998238, 1099357850]
const ZERO_17_R = [1543068721, 3603315816, 3833704967, 3367359457]

const ZERO_18_L = [2692314236, 1072797208, 2923625471, 4157324078]
const ZERO_18_R = [746357617, 2400147060, 3144187786, 181284186]

const ZERO_19_L = [2691355510, 1491476508, 3986541574, 2665487122]
const ZERO_19_R = [1032730592, 1039549588, 4164965877, 3056102068]

const ZERO_20_L = [3803705507, 1732703975, 3478010394, 1535003327]
const ZERO_20_R = [4242360534, 719184416, 3062253412, 1167482566]

const ZERO_21_L = [3655320222, 899251086, 3853444828, 1001466509]
const ZERO_21_R = [4045815225, 971767692, 1168258541, 2290434548]

const ZERO_22_L = [2011403911, 3698331664, 3934089079, 946955861]
const ZERO_22_R = [3411854989, 1866109879, 418371072, 3692469338]

const ZERO_23_L = [1390808632, 3168994683, 4234662665, 2053609922]
const ZERO_23_R = [2805567324, 2651248336, 696388782, 1078982733]

const ZERO_24_L = [4011431532, 565969590, 1910056709, 4220355468]
const ZERO_24_R = [1681176506, 4292988995, 276516087, 2502281165]

const ZERO_25_L = [2371989742, 3318538162, 999806777, 2066155765]
const ZERO_25_R = [1956437264, 2768897524, 1475191156, 3378167562]

const ZERO_26_L = [3498569445, 3649628337, 1786802573, 2038831148]
const ZERO_26_R = [1678762243, 2385297319, 4030198639, 74763704]

const ZERO_27_L = [516194684, 3360338824, 2165369292, 1916245748]
const ZERO_27_R = [3748991331, 1513828739, 3418759627, 1431735427]

const ZERO_28_L = [787185022, 1571753335, 2366459736, 3067898230]
const ZERO_28_R = [79972070, 2975955312, 3165837101, 3722718822]

const ZERO_29_L = [581144193, 3146618532, 1244629930, 2215341298]
const ZERO_29_R = [2551087773, 3876094376, 1909551909, 246581816]

const ZERO_30_L = [903308566, 578217418, 2128594844, 1787682571]
const ZERO_30_R = [1078065138, 2904706143, 1223587258, 1350312851]

const ZERO_31_L = [2840985724, 1653344606, 4049365781, 2389186238]
const ZERO_31_R = [3759582231, 2660540036, 1648733876, 2340505732]

use ::miden::agglayer::mmr_frontier32_keccak::mem_store_double_word

#! Inputs: [zeros_ptr]
#! Outputs: []
pub proc load_zeros_to_memory
push.ZERO_0_L.ZERO_0_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_1_L.ZERO_1_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_2_L.ZERO_2_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_3_L.ZERO_3_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_4_L.ZERO_4_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_5_L.ZERO_5_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_6_L.ZERO_6_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_7_L.ZERO_7_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_8_L.ZERO_8_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_9_L.ZERO_9_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_10_L.ZERO_10_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_11_L.ZERO_11_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_12_L.ZERO_12_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_13_L.ZERO_13_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_14_L.ZERO_14_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_15_L.ZERO_15_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_16_L.ZERO_16_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_17_L.ZERO_17_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_18_L.ZERO_18_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_19_L.ZERO_19_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_20_L.ZERO_20_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_21_L.ZERO_21_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_22_L.ZERO_22_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_23_L.ZERO_23_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_24_L.ZERO_24_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_25_L.ZERO_25_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_26_L.ZERO_26_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_27_L.ZERO_27_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_28_L.ZERO_28_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_29_L.ZERO_29_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_30_L.ZERO_30_R exec.mem_store_double_word dropw dropw add.8
push.ZERO_31_L.ZERO_31_R exec.mem_store_double_word dropw dropw add.8
drop
end
Loading
Loading