Ethereum L1-L2 atomic transactions, explained. How the first one on mainnet worked, and who signs for it
One transaction, two networks. A $2.70 transfer on 5 October shows how it works, and a day of tests on Ethereum shows what it could change.
- 8/8
- 28
- 8
- 10,000
- 1 key
01 · The ideaTwo networks, one transaction
Moving ETH from Ethereum to another network usually means a wait. Getting it back can take a week.
An atomic L1-to-L2 transaction removes the wait. It is a cross-chain transaction done in one step. L1, or layer 1, is Ethereum itself. An L2, or Ethereum layer 2, is a separate network that runs on top of it and settles back to it. Atomic means all or nothing: the step on Ethereum and the step on the L2 happen in one transaction, or neither does.
On 5 October, a wallet on Ethereum sent 0.001 ETH, about $2.70, to its own address, and the money reached a second network in the same second. Then, 36 minutes later, Eduardo Antuña, who works on the project, posted on X that it was "the first atomic cross-chain L1->L2 transaction ever".
The project is the Ethereum Economic Zone, or EEZ, from Gnosis and the proving company Zisk. Bitquery indexes every Ethereum transaction, so we pulled every one that touched EEZ's main contract in its first 24 hours of use, 63 in all. They show how such a transaction works and what it could change. They also show what a user is trusting today.
02 · What EEZ isGnosis and Zisk's plan
Ethereum has dozens of L2s. Each works like an island, with its own users and apps. An app on one cannot use an app on another in the same step. Getting them to work together is called blockchain interoperability. Its strongest form is synchronous composability: programs on different chains calling each other as if they shared one.
EEZ is meant to supply it. Gnosis and Zisk announced it in March, with funding help from the Ethereum Foundation. The plan is a group of L2s whose programs can call mainnet, and each other, inside one transaction. Zisk's part is speed. It builds the software meant to prove each L2 block in real time.
EEZ's code went onto mainnet on 29 September and sat unused until the morning of 5 October. Then the first L2, numbered one, was signed up, and its first batch landed less than an hour later.
03 · How one call worksThe result arrives first
On day one, every call from L1 into the L2 took two transactions in the same block, batch first. The 5 October transfer shows each step.
The first is a batch, sent by the team that runs the L2. A batch is a bundle of the L2's latest activity and its outcome, with one signature over all of it. This one held two entries. One was activity that touched only the L2, and the contract applied it at once. The other was parked. It would run only if one exact call came in from L1 in the same block. The contract checked the signature and marked the L2 as checked for this block only.
The second transaction is the user's own. It sent 0.001 ETH to a stand-in address, an Ethereum address that stands for the user's own address on the L2. The stand-in passed the call to the EEZ contract, which took its fingerprint. That is a hash of who sent the call, to whom, how much ETH and what data. The fingerprint matched the parked entry.
Before applying it, the contract checked that the batch came in this same block and that the L2 was in the state the entry expected. It also checked that the ETH added up. Then it wrote the L2's new state and its new ETH balance, all inside the user's transaction. Had any check failed, the whole transaction would have been undone.
So the batch has to come first, in the same block. That is the job of the block builders, the firms that assemble each Ethereum block. Titan, one of EEZ's founding members, built the block with the 5 October transfer. Quasar built others, and BuilderNet carried some of the batches. All 8 user transactions sat straight behind their batch.
04 · What it changesFewer bridges, fewer waits
For the person sending it, the 5 October transfer looked like any other payment. The wallet sent ETH to an address, with no extra data attached, and the L2 credited it in the same block. On OP Mainnet, for example, a deposit takes about 1 to 3 minutes and a withdrawal about 7 days, according to Optimism's docs. The two payments that left EEZ's L2 on its first day landed on mainnet inside the batches that carried them, with no claim step and no waiting period.
Apps stand to gain more. An L2 app could price a trade or a loan off mainnet's own pools and feeds at the moment it runs. On day one, a program on the L2 did this with Uniswap and Chainlink. Money on one network could also be put to work on another without a bridge wait, as a test loan showed on day one.
EEZ's launch post sets the goal for users: "Assets, positions, and identity work across environments without requiring explicit bridging steps." For apps, it says "There is no need to manage bridges, wrapped assets, or per-chain integrations".
For now, EEZ is still in testing. Every transaction from mainnet on day one was a test. Gnosis's proposal targets December 2026 or January 2027 for Gnosis Chain's own move into EEZ.
05 · The first day48 batches and four wallets
In that first day, the team running the L2 posted 48 batches, for about $14 in fees. Of those, 21 were check-ins that carried no call either way. Activity picked up on the morning of 6 October.
Four wallets sent the 8 transactions into the L2. The wallet that set up EEZ sent four. Two older wallets, active since 2016 and 2018, sent one each. A fourth wallet, new that morning, sent two. Of the eight, four sent small amounts of ETH to the sender's own address on the L2. Three bumped a counter there, and one ran the test loan.
| When (UTC) | Sent by | What it did | Builder |
|---|---|---|---|
| 5 Oct 16:44 | setup wallet | sent 0.001 ETH to its own L2 address | Titan |
| 5 Oct 18:51 | setup wallet | sent 0.01 ETH to its own L2 address | Titan |
| 5 Oct 19:53 | setup wallet | bumped a counter on the L2 | Quasar |
| 6 Oct 05:10 | setup wallet | bumped a counter on the L2 | Quasar |
| 6 Oct 06:34 | wallet active since 2016 | sent 0.001 ETH to its own L2 address | Titan |
| 6 Oct 07:24 | wallet active since 2018 | bumped a counter on the L2 | Quasar |
| 6 Oct 07:30 | wallet new that morning | sent 0.00015 ETH to its own L2 address | Titan |
| 6 Oct 07:41 | wallet new that morning | test loan out to the L2 and back | Titan |
06 · The checks at workWhat went through, and what was refused
Calls also went the other way. A program on the L2 read prices from mainnet while it ran: 7 times from Uniswap's USDC/ETH pool, a DEX pool where traders swap dollars for ether, and once from Chainlink's ETH/USD feed. Each read happened on L1 inside the batch, so the L2 used the same number L1 saw. Two more calls paid ETH back out to L1.
The check also said no. The contract refused 28 of the 86 L2 steps the batches tried to apply, a third of them. In 13 cases, a step that had read the Uniswap pool carried a price that no longer matched what the pool returned on L1. The other 15 came later in the same batches and built on one of those steps, so the state they expected to start from was not the one on record.
Of the ETH that went in, 91% came from the wallet that set up EEZ. The contract held $30 of it at the end of the day.
07 · The loanA loan that went out and came back
The day's most involved test came at 07:41 UTC on 6 October. A flash loan is a crypto loan that is borrowed and repaid inside one transaction. This one left L1 in the middle.
First, a lending pool on L1 lent 10,000 tokens. They crossed to the L2 through a bridge. A program there claimed an NFT, according to its code, and sent the tokens back. The pool was repaid, and the whole thing went through. Mainnet shows every step except the NFT claim, which happened on the L2.
The test was set up for the occasion. The wallet was new that morning. It made the token, called Test Token, and the bridge 48 seconds before the loan. The pool and the borrowing program came 24 seconds before it. Their own code marks them as test-only.
08 · Who holds the keysOne signature behind each batch
Every batch has to pass a check before the contract accepts it. The plan is for that check to be a zero-knowledge proof, a piece of math that shows the L2's work was done right without redoing it. On day one, all 48 batches passed through one checker instead. Its own code describes it as a "Temporary proof system that uses ECDSA signature recovery instead of a ZK proof". In plain words, a batch is accepted if one key has signed it. That key has never sent a transaction of its own.
The wallet that set up EEZ controls the rest. It can replace the signing key. It can change the code of the main contract and of the L2's settings contract. It can add any contract as a checker, and it can overwrite the L2's recorded state without a signature. Ether sent to a stand-in address before it exists is swept to a recovery wallet, a shared wallet that needs two of three keys. The setup wallet holds one of them.
| Piece | Controlled by | What it can change |
|---|---|---|
| Batch checker | one signing key 0xa86e…a15e | Its signature is the only proof that the L2's new state is right |
| Signing key | setup wallet 0xceaf…a141 | Can swap in a new signing key |
| Main EEZ contract | setup wallet, as upgrade admin | Can replace the contract's code |
| L2 settings contract | setup wallet, as owner and upgrade admin | Can add any contract as a checker, change how many must sign, rotate keys, overwrite the L2's recorded state, replace the code |
| Recovery wallet | shared wallet, 2 of 3 keys, one held by the setup wallet | Receives ETH sent to a stand-in address before it exists |
The team says much of this itself. The source code calls itself an early-stage version that "has NOT undergone an external security audit". Gnosis's own proposal to move Gnosis Chain into EEZ says Gnosis Ltd alone will order that chain's activity at first. It expects real-time proofs to land "over the course of 2027".
The builders matter too. Zisk founder Jordi Baylina's design has the block builders put the calls and their results together. In the replies, one reader warned that the feature could end up "privately routed to the builder duopoly".
09 · Was it the first?First on Ethereum, after a try on Gnosis Chain
We found no earlier call of this kind on Ethereum. The idea had run before on another chain. In February, Gnosis co-founder Martin Köppelmann put out a test version that ran on Gnosis Chain. Over two days, other contracts called into its test L2 15 times, with an admin signature as the check. One of the older wallets that used EEZ this week sent money through that test as well.
10 · Where it standsA working check, one signer
On its first day, EEZ did what its design says. No call from L1 landed without its batch. Results that no longer matched were turned away, and a loan crossed to the L2 and back inside one mainnet transaction.
What stands behind each result is a signature from one key. The proofs meant to replace it are planned for 2027. Until then, money held in EEZ rests on that key and on the wallet that can replace it.
11 · How we checkedMethod
We took every call into EEZ's main contract on mainnet from its deployment to 10:00 UTC on 6 October, with full call traces, from Bitquery's Ethereum calls and events data. Calls that were later undone are not counted. Who controls what was read from the contracts' verified code and their state on 6 October. We found no public node or explorer for the L2, so everything here is measured on mainnet.
The same records can be pulled with the Bitquery MCP or the Ethereum API docs. Earlier pieces cover how much trading an L2 really gets and what moves through a bridge.
12 · The recordContracts and transactions behind this story
| What | Address or transaction |
|---|---|
| EEZ main contract | 0x4b27…402c |
| Batch checker | 0x1ac7…721e |
| L2 settings contract | 0xb3fb…56d0 |
| Setup wallet | 0xceaf…a141 |
| Wallet that posts batches | 0x4261…d546 |
| Setup wallet's stand-in | 0x3c18…f7c8 |
| Batch, 5 Oct 16:44:59 | 0x82ee…af67 |
| The 0.001 ETH transfer | 0xd0cb…0a02 |
| Test loan, 6 Oct 07:41 | 0x928c…6a7a |
FAQ
What are L1 and L2 on Ethereum?
L1, or layer 1, is Ethereum itself. An L2, or Ethereum layer 2, is a separate network that runs on top of Ethereum and settles back to it, usually with lower fees. Moving money between them has meant a bridge and a wait.
What is the Ethereum Economic Zone?
A plan from Gnosis and Zisk, with funding help from the Ethereum Foundation, for L2 networks whose programs can call mainnet and each other inside one transaction. Its code went onto mainnet at the end of September 2026, and its first network started in early October.
What is synchronous composability?
Programs on separate chains calling each other as if they lived on one chain, inside a single transaction. Either every step happens or none does.
Is an atomic L1-to-L2 transaction the same as an atomic swap?
No. An atomic swap is a trade between two parties, often across two chains, where both sides settle or neither does. The 5 October transaction was one wallet moving its own ETH from Ethereum to an L2 in one step. The same all-or-nothing rule applies, and nothing was traded.
Was the 5 October transfer the first atomic L1-to-L2 transaction?
It is the first such call on Ethereum that we could find. A test version of the same idea ran on Gnosis Chain in February 2026.
What would EEZ change for crypto users?
If it works as designed, ETH and app calls move between mainnet and EEZ networks inside one transaction, with no separate bridge step and no withdrawal wait. On its first day it carried only tests. Gnosis's proposal targets December 2026 or January 2027 for Gnosis Chain's move into EEZ.
Do I still need a cross-chain bridge?
Not as a separate step. On EEZ the main contract holds the ETH and moves it in the same transaction or batch, with no bridge step in between. On its first day only tests used it.
Does EEZ use zero-knowledge proofs today?
Not yet. On its first day every batch was checked against a signature from one key. Gnosis expects real-time proofs to arrive over the course of 2027.
Can a flash loan cross from Ethereum to an L2 and back?
On EEZ it did once on its first day. A test loan of 10,000 tokens went to the L2 and back inside one mainnet transaction, using tokens and contracts made less than a minute earlier for the test.
The window runs from the deployment of EEZ's contracts on 29 September 2026 to 10:00 UTC on 6 October 2026. The system is live and changes after that time are not counted.
Everything is measured on mainnet. We found no public node or explorer for EEZ's L2, so what happened on the L2 side is taken from the contracts' code and from the screenshot in the announcement post, and is not measured.
The reasons given for refused L2 steps come from the error each refusal carried. Linking the price mismatches to the Uniswap reads rests on the calls inside those steps; every other refusal came later in a batch where an earlier step had been refused.
Who controls each contract was read from on-chain state on 6 October 2026. Owners, keys and code can be changed after that date.
This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell, or hold any token or asset, or to use any network or service.
The findings describe transactions observed on Ethereum between 29 September and 6 October 2026. They may be incomplete or incorrect and may be revised as more data becomes available.
References to the Ethereum Economic Zone, Gnosis, Zisk, the Ethereum Foundation, Titan, Quasar, BuilderNet, Uniswap, Chainlink or any other named project, company or person describe what the public record and published code show. They are not statements about any party's security, solvency or conduct. Wallets are described by their activity and are not attributed to any person.
Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.
Reported by Gaurav Agarwal for Bitquery Research, with AI tools; every figure was checked against the raw data.
Ask these questions in plain English
Every Ethereum transaction in this story comes from Bitquery's data, with full call traces. The Bitquery MCP server puts that data behind an AI assistant, so you can ask what a contract did, who called it and what it paid out, without writing the query yourself.