Skip to content

Commit 300e3d4

Browse files
authored
Document deployed contract addresses (#13)
1 parent ec61b96 commit 300e3d4

File tree

3 files changed

+131
-99
lines changed

3 files changed

+131
-99
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ broadcast/
1414

1515
snapshots/
1616

17-
node_modules
17+
node_modules
18+
19+
.DS_Store

README.md

Lines changed: 30 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@
3131
* [Supporting Documents](#supporting-documents)
3232
<!-- TOC -->
3333

34-
35-
## External Audit
36-
The contracts in this repository were independently audited by Nethermind Security in February 2026. The full audit report is available [here](./audit/20260209-nethermind-audit.pdf).
37-
3834
## Overview
3935
The Immutable X chain will be sunset in early 2026. Most users will withdraw their assets before the sunset date. However, for some users, the cost and friction of standard withdrawals may exceed the value of their remaining on-chain assets.
4036

@@ -125,103 +121,39 @@ The overall automated migration system consists of both off-chain and on-chain c
125121

126122
---
127123

124+
## Deployed Contracts
125+
The final deployed contract addresses are listed below.
126+
A high-level description of each component is provided in the [Core Contracts](#core-contracts) section above.
127+
128+
### Mainnet
129+
- **Ethereum**
130+
- [StarkExchangeMigration](https://etherscan.io/address/0x58b5484F489f7858DC83a5a677338074b57de806)
131+
- [VaultRootSenderAdapter](https://etherscan.io/address/0x9Fabd9Cc71f15b9Cfd717E117FBb9cfD9fC7cd32)
132+
- **Immutable zkEVM**
133+
- [VaultWithdrawalProcessor](https://explorer.immutable.com/address/0xCeA34C706C4A18E103575832Dd21fD3656026D1E)
134+
- [VaultEscapeProofVerifier](https://explorer.immutable.com/address/0x9Fabd9Cc71f15b9Cfd717E117FBb9cfD9fC7cd32)
135+
- [VaultRootReceiverAdapter](https://explorer.immutable.com/address/0x58b5484F489f7858DC83a5a677338074b57de806)
136+
137+
### Testnet
138+
- **Sepolia**
139+
- [StarkExchangeMigration](https://sepolia.etherscan.io/address/0x9F9b4A495A62191A4225759Ae7C00906Cc6417B8)
140+
- [VaultRootSenderAdapter](https://sepolia.etherscan.io/address/0xCeA34C706C4A18E103575832Dd21fD3656026D1E)
141+
- **Immutable zkEVM Testnet**
142+
- [VaultWithdrawalProcessor](https://explorer.testnet.immutable.com/address/0xCeA34C706C4A18E103575832Dd21fD3656026D1E)
143+
- [VaultEscapeProofVerifier](https://explorer.testnet.immutable.com/address/0x9Fabd9Cc71f15b9Cfd717E117FBb9cfD9fC7cd32)
144+
- [VaultRootReceiverAdapter](https://explorer.testnet.immutable.com/address/0x58b5484F489f7858DC83a5a677338074b57de806)
145+
146+
----
128147

129-
## Project Structure
130-
131-
```
132-
src/
133-
├── bridge/ # Bridge and messaging contracts
134-
│ ├── starkex/ # Immutable X bridge contracts
135-
│ ├── zkEVM/ # zkEVM bridge interfaces
136-
│ └── messaging/ # Cross-chain messaging adapters
137-
├── verifiers/ # Proof verification contracts
138-
│ ├── vaults/ # Vault proof verification
139-
│ └── accounts/ # Account proof verification
140-
├── withdrawals/ # Withdrawal processing contracts
141-
└── assets/ # Asset mapping and management
142-
```
143-
144-
## Prerequisites
145-
146-
- [Foundry](https://getfoundry.sh/) 1.0+
147-
- Solidity 0.8.27+
148-
- Node.js 18+ (for deployment scripts)
149-
150-
## Installation
151-
152-
1. Clone the repository:
153-
```bash
154-
git clone https://github.com/immutable/imx-migration-contracts.git
155-
cd imx-migration-contracts
156-
```
157-
158-
2. Install Foundry dependencies:
159-
```bash
160-
forge install
161-
```
162-
163-
## Build and Test
164-
Build the contracts:
165-
```bash
166-
forge build
167-
```
168-
169-
Run the test suite:
170-
```bash
171-
# Run all tests
172-
forge test
173-
174-
# Run specific test file
175-
forge test --match-path test/unit/StarkExchangeMigration.t.sol
176-
```
177-
178-
## Deployment
179-
### Configuration
180-
The system uses configuration files for deployment. Create a deployment configuration file with the following structure:
181-
182-
```json
183-
{
184-
"allow_root_override": false,
185-
"vault_verifier": "0x...",
186-
"operators": {
187-
"disburser": "0x...",
188-
"pauser": "0x...",
189-
"unpauser": "0x..."
190-
},
191-
"lookup_tables": ["0x...", "0x...", ...],
192-
"asset_mappings": [
193-
{
194-
"tokenOnIMX": {
195-
"id": 123,
196-
"quantum": 1000000000000000000
197-
},
198-
"tokenOnZKEVM": "0x..."
199-
}
200-
]
201-
}
202-
```
203-
204-
### Deploy L2 Contracts
205-
206-
1. Set environment variables:
207-
```bash
208-
export DEPLOYMENT_CONFIG_FILE="path/to/config.json"
209-
export PRIVATE_KEY="your-private-key"
210-
export RPC_URL="your-rpc-url"
211-
```
212-
213-
2. Run deployment script:
214-
```bash
215-
forge script script/DeployL2Contracts.s.sol:DeployL2Contracts \
216-
--rpc-url $RPC_URL \
217-
--private-key $PRIVATE_KEY \
218-
--broadcast \
219-
--verify
220-
```
221-
222-
**Note**: Use `--slow` or `-batch-size 1` when deploying to Tenderly to avoid out-of-order deployments.
148+
## External Audit
149+
The contracts in this repository were independently audited by Nethermind Security in February 2026. The full audit report is available [here](./audit/20260209-nethermind-audit.pdf).
223150

151+
----
224152

153+
## Build, Test and Deploy
154+
Instruction for building, testing and deploying these contracts can be found [here](./docs/build-test-deploy.md).
155+
156+
---
225157

226158
## Supporting Documents
227159
- [Key Decisions and Technical Considerations](https://immutable.atlassian.net/wiki/spaces/~712020640315cc7a594fb28a6b452c5a8ef6a3/pages/3186852061/Key+Technical+Decisions)

docs/build-test-deploy.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Build, Test and Deploy
2+
3+
## Project Structure
4+
5+
```
6+
src/
7+
├── bridge/ # Bridge and messaging contracts
8+
│ ├── starkex/ # Immutable X bridge contracts
9+
│ ├── zkEVM/ # zkEVM bridge interfaces
10+
│ └── messaging/ # Cross-chain messaging adapters
11+
├── verifiers/ # Proof verification contracts
12+
│ ├── vaults/ # Vault proof verification
13+
│ └── accounts/ # Account proof verification
14+
├── withdrawals/ # Withdrawal processing contracts
15+
└── assets/ # Asset mapping and management
16+
```
17+
18+
## Prerequisites
19+
20+
- [Foundry](https://getfoundry.sh/) 1.0+
21+
- Solidity 0.8.27+
22+
- Node.js 18+ (for deployment scripts)
23+
24+
## Installation
25+
26+
1. Clone the repository:
27+
```bash
28+
git clone https://github.com/immutable/imx-migration-contracts.git
29+
cd imx-migration-contracts
30+
```
31+
32+
2. Install Foundry dependencies:
33+
```bash
34+
forge install
35+
```
36+
37+
## Build and Test
38+
Build the contracts:
39+
```bash
40+
forge build
41+
```
42+
43+
Run the test suite:
44+
```bash
45+
# Run all tests
46+
forge test
47+
48+
# Run specific test file
49+
forge test --match-path test/unit/StarkExchangeMigration.t.sol
50+
```
51+
52+
## Deployment
53+
### Configuration
54+
The system uses configuration files for deployment. Create a deployment configuration file with the following structure:
55+
56+
```json
57+
{
58+
"allow_root_override": false,
59+
"vault_verifier": "0x...",
60+
"operators": {
61+
"disburser": "0x...",
62+
"pauser": "0x...",
63+
"unpauser": "0x..."
64+
},
65+
"lookup_tables": ["0x...", "0x...", ...],
66+
"asset_mappings": [
67+
{
68+
"tokenOnIMX": {
69+
"id": 123,
70+
"quantum": 1000000000000000000
71+
},
72+
"tokenOnZKEVM": "0x..."
73+
}
74+
]
75+
}
76+
```
77+
78+
### Deploy L2 Contracts
79+
80+
1. Set environment variables:
81+
```bash
82+
export DEPLOYMENT_CONFIG_FILE="path/to/config.json"
83+
export PRIVATE_KEY="your-private-key"
84+
export RPC_URL="your-rpc-url"
85+
```
86+
87+
2. Run deployment script:
88+
```bash
89+
forge script script/DeployL2Contracts.s.sol:DeployL2Contracts \
90+
--rpc-url $RPC_URL \
91+
--private-key $PRIVATE_KEY \
92+
--broadcast \
93+
--verify
94+
```
95+
96+
**Note**: Use `--slow` or `-batch-size 1` when deploying to Tenderly to avoid out-of-order deployments.
97+
98+

0 commit comments

Comments
 (0)