§01A collaboration
2026 / 04 / 24
AggLayer · Bali
Smoke Test · No. 001


Miden ↔ Sepolia bridge,
end-to-end verified.

Two round-trips on the AggLayer Bali deployment: a deposit from Sepolia into Miden, and the first-ever Miden → Sepolia withdrawal. Every component below links to Etherscan and MidenScan, so the trace is reproducible end‑to‑end.

Date
2026‑04‑24
Layer 1
Sepolia
Layer 2
Miden
AggLayer
Bali
Client
v0.14.4
§01 · L1→L2 Deposit

Sepolia → Miden

✓ Full success 19m 31s
  1. 01Sepolia
  2. deposit
  3. 02AggLayer
  4. 03AggKit
  5. 04miden-agglayer
  6. 05Miden Node
  7. 06Claim Note
  8. 07P2ID Note

0.001 ETH deposited from the bridge wallet on Sepolia, claimed and consumed by a v0.14.4 Miden account. Amount arrives as 100 000 miden-eth units (ETH × 10⁸, scale=10). Broadcast → claim committed in 19m 31s.

L1 side · Sepolia

Deposit tx
0x9fdf66f3…e3a6b31a
Broadcast
2026-04-24T11:58:38Z
Sepolia block
0xa39dea · 10 722 282
Amount
0.001 ETH

Destination · Miden

Miden addr
0xd4f1cf38ec8c3210627fd2ea8fdde1
Eth-padded
0x00000000d4f1cf38ec8c3210627fd2ea8fdde100
Account deploy tx
0x5311b60b…49b16644
Faucet
0xa88a59eb97990060612bc4a6c2f0dc

Claim pipeline

Global index
18 446 744 073 710 679 266
L2 miden_tx (claim)
0xbcfabb1b…35666b8d1
L2 eth_tx (ClaimEvent)
0x7249ccf6…e9ff1e70
Claim note id (from log)
0xc5f6e556…d3a1d4c8
On-chain NoteId (from sync)
0x4ca2850b…f14ca82
L2 miden block (claim commit)
117 289

Consume · user absorbs the note

Consume tx
0xdadb0540…af731717
Synced to block
117 336

Result

Amount received
100 000 miden-eth units
Scale check
0.001 ETH × 10⁸ · scale=10 correct
Pipeline duration
19m 31s
Status
✓ Full success
§02 · L2→L1 Bridge-out

Miden → Sepolia

✓ Full success 1h 44m
  1. 01B2AGG Note
  2. 02miden-agglayer
  3. 03Aggsender
  4. cert · LER
  5. 04AggLayer
  6. 05Sepolia

First-ever L2→L1 round-trip on AggLayer Bali. Pipeline: Miden burnsynthetic BridgeEventaggsender cert (InError → auto-retry → Settled) → claimAsset → dest EOA funded by exactly amount − gas. Broadcast 2026-04-24T14:06:33Z · Claim 2026-04-24T15:50:37Z. ~65m of the 1h 44m was Polygon-side settler nonce self-resolve; happy-path ≈ 30–45m.

L2 side · Miden

RPC
https://rpc.testnet.miden.io:443
Miden tx
0xb645d24a…d5e6d75d · block 119 445
B2AGG note
0xb96a3033…2fb408 CONSUMED
Wallet before
10 000 Miden-ETH units
Wallet after
0 (Δ −10 000 = −0.0001 ETH)
Faucet
0xa88a59eb97990060612bc4a6c2f0dc

B2AGG note · decoded

Note id
0xb96a30332145fda9124daa89a544f7680713d5f67a1b055cfa49657d032fb408
Status
CONSUMED · network note (consumed by the bridge's network account)
Note type
Public
Sender (Miden account)
mtst1ar20rnecajxryyrz0lfw4r7auyur3qx3
Recipient (digest)
0x98c558811c93ca30a2bdca6520adcc5ea710ed63be2aa11a54171a76ba41352b
Nullifier
0x184489a9834a2b74d67008a847476cbc698615684500efb50197a807db7b200f
Created at block
119 447 · batch 1 · leaf 1024
note_tag / note_aux
0 / 8 985 630 040 330 916 864 (0x7cb35ee9ed00d400)
Asset — faucet
0xa88a59eb97990060 · mtst1az5g5k0tj7vsqcrp90z2dshsmskhyely
Asset — amount
10 000 Miden-ETH units (= 0.0001 ETH · scale 10⁸)
Inputs (felt array)
[0, 371240431, 1787337561, 4093345605, 2816662035, 665501604]
  · input[0] — destNetwork
0 (Ethereum / Sepolia)
  · input[1..5] — destAddress
5 × u32 LE → 0xEFAD2016599b886A457Ffbf313dae2a7A4bfaa27
How the inputs map. The five felts 371240431, 1787337561, 4093345605, 2816662035, 665501604 are the destination EVM address packed as 4-byte little-endian words. Concatenating them in LE byte order reconstructs the full 20-byte address — an exact match for the destinationAddress seen later in the claimAsset calldata on Sepolia. Same destination, same amount (10 000 miden-eth units → 10¹⁴ wei), round-trip verified.

Proxy · AggLayer synthetic log

Synth tx
0xb5e2f477…035f483
Synth block
119 451
Deposit count
0 (first-ever L2→L1 on this deployment)
Amount
100 000 000 000 000 wei (0.0001 ETH)
Dest network / addr
0 / 0xEFAD2016…A4bfaa27
Global index
309 237 645 312

Aggsender certificate · progression

  • 14:24:01Z Pending 0x11d4d425…c12fb9
  • 14:27:09Z (+3m 8s) Proven 0x11d4d425…c12fb9
  • 14:32:09Z (+8m 8s) InError SettlementError: replacement transaction underpriced (settler EOA nonce collision)
  • ~15:32Z (self-resolve) Pending (retry 1) 0x6e180f0b…46148e9
  • 15:37:09Z (+5m 31s) Settled ✓ 0x6e180f0b…46148e9
PreviousLocalExitRoot
0x27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d757
NewLocalExitRoot
0xa822866a392d5d5226793db37c42ca4452d9d0d778702d0c5510f61eff5539da
Settlement tx (L1)
0xcd92fabb…cfe580 Sepolia block 10 723 771
AggLayer settler EOA
0x3053c702…6c559a

L1 claim · Sepolia

Claimer EOA (pays gas)
0xEFAD2016599b886A457Ffbf313dae2a7A4bfaa27
Dest EOA (recipient)
0xEFAD2016599b886A457Ffbf313dae2a7A4bfaa27 (same — delta = amount − gas)
claimAsset tx
0x391fa251…58c23c91 block 10 723 851
Receipt
success (0x1)
Gas used × price
131 339 × 9 234 510 wei = 1 212 851 308 890 wei
ClaimEvent
addr 0x1348…d1f · topic0 0x1df3f2a973…fda4d (PolygonZkEVMBridgeV2.ClaimEvent)
bridge-api claim_tx_hash
0x391fa251…58c23c91 populated
isClaimed on-chain
true
Balance check. L1 before 100 487 612 856 866 724 750 wei → after 100 487 711 644 015 415 860 wei.
Δ = +98 787 148 691 110 wei · expected (amount − gas) = +98 787 148 691 110 weiexact match ✓

claimAsset · decoded calldata

Method
claimAsset(…) · selector 0xccaa2d11
To (bridge)
0x1348947e282138d8f377b467f7d9c2eb0f335d1f (PolygonZkEVMBridgeV2)
Value sent
0 ETH (bridge pays out from its own balance)
Gas
131 339 / 138 604 (94.76%)
globalIndex
309 237 645 312 (0x4800000000)
mainnetExitRoot
0xac981df484ac8603381d9ba74dc3b1822b251d764e273e63306489ee857361e8
rollupExitRoot
0x396ab55a49c50815aa7864852c974bda179ebeace1fa5c7927bda366508870ba
smtProofLocalExitRoot
32 × bytes32 (Merkle proof against mainnet exit root)
smtProofRollupExitRoot
32 × bytes32 (Merkle proof against rollup exit root)
originNetwork
0 (asset originates on L1 — it is native ETH being returned to Sepolia)
originTokenAddress
0x0000000000000000000000000000000000000000 native ETH
destinationNetwork
0 (Ethereum / Sepolia)
destinationAddress
0xEFAD2016599b886A457Ffbf313dae2a7A4bfaa27
amount
100 000 000 000 000 wei (0x5af3107a4000 · 0.0001 ETH)
metadata
0x0920 (empty — no custom payload)
Reading the call. originNetwork = 0 + originTokenAddress = 0x0…0 tells the bridge this is native ETH returning home from the rollup, so it unlocks from its escrow balance rather than minting a wrapped token. destinationNetwork = 0 + destinationAddress → funds are released to 0xEFAD…bfaa27 on Sepolia. The globalIndex 0x4800000000 encodes the leaf position under the rollup exit tree, and the two 32-depth SMT proofs anchor the claim to the roots posted by the settlement tx.