← Quickstarts PRE-MAINNET

Deploy on the EEZ testnet

Five steps, about fifteen minutes, one contract live on the EEZ L2. Everything you need is on this page — the walkthroughs explain why it works, and none of them are prerequisites.

Install Foundry

The demos and this page are pinned to Foundry v1.7.1. Nothing else is needed.

SHELL
$ curl -L https://foundry.paradigm.xyz | bash && foundryup

Fund a throwaway key

The faucet hands out xDAI on Chiado, which funds both layers. Then hand the key to your shell:

SHELL
$ export KEY=0x…   # the private key the faucet funded

⚠ Use a throwaway key. Never a key that holds real assets — testnet or not.

Point your shell at the network

Everything below comes from this table — the L2 manager is a predeploy, the same 0x4200…0007 on every EEZ L2; the L1 manager comes from the canonical deploy.

CHAINRPC URLCHAIN IDEEZ MANAGEREXPLORER
EEZ L2 (testnet) COMING SOON COMING SOON 0x4200…0007 COMING SOON
Chiado (L1) https://rpc.chiadochain.net 10200 COMING SOON gnosis-chiado.blockscout.com
SHELL · THE L2 RPC FROM THE TABLE
$ export EEZ_RPC=COMING_SOON

Deploy

One command. src/MyContract.sol is whatever you're shipping.

SHELL
$ forge create src/MyContract.sol:MyContract --rpc-url $EEZ_RPC --private-key $KEY
EXPECTED OUTPUT · NOT A COMMAND
Deployer: 0x…
Deployed to: 0x…   ← this line means you're done
Transaction hash: 0x…

Verify it landed — non-empty bytes means deployed:

SHELL
$ cast code <address> --rpc-url $EEZ_RPC

If it fails

insufficient funds

The key isn't funded on the L2 — go back to the faucet, then cast balance $ADDR --rpc-url $EEZ_RPC to confirm before retrying.

connection refused / timeout

$EEZ_RPC doesn't match the table in step 3 — re-copy it. cast chain-id --rpc-url $EEZ_RPC should print the chain id from the table.

nonce too low

An earlier transaction from this key is stuck or already mined — cast nonce $ADDR --rpc-url $EEZ_RPC to inspect, then resend.

Deployed. Now make it cross-chain

In this order.

Give it a cross-chain address

Your contract's stand-in on every other rollup — readable before anything is deployed.

WATCH THE 3-STEP WALKTHROUGH

Call it from the other side

An ordinary encode, sent to the proxy — the answer comes back in the same transaction.

WATCH THE 3-STEP WALKTHROUGH

Before you build on it

Cross-chain, msg.sender is the proxy — not your contract. Fix the check before it ships.

WATCH THE 3-STEP WALKTHROUGH
EEZ QUICKSTARTS All walkthroughs Start here llms.txt GitHub Verified against eez-core-protocol @ 9735f53 — pre-mainnet; interfaces may move.