34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
# MirrorRegistry Deployment
|
|
|
|
**Purpose:** Deploy MirrorRegistry to public mainnets for Merkle commitment mirroring (DBIS 138 / Alltra 651940 → public).
|
|
|
|
## Contract
|
|
|
|
- **File:** `contracts/mirror/MirrorRegistry.sol`
|
|
- **Interface:** `submitCommit(uint256 sourceChainId, uint64 startBlock, uint64 endBlock, bytes32 root, string calldata uri, uint64 ts)`
|
|
- **Event:** `CommitSubmitted(sourceChainId, startBlock, endBlock, root, uri, ts)`
|
|
- **Access:** Publisher allowlist; admin can set publishers and pause.
|
|
|
|
## Deploy (one mainnet)
|
|
|
|
```bash
|
|
cd smom-dbis-138
|
|
export PRIVATE_KEY=0x...
|
|
export MIRROR_ADMIN=0x... # or DEPLOYER
|
|
|
|
forge script script/DeployMirrorRegistry.s.sol \
|
|
--rpc-url $ETH_MAINNET_RPC_URL \
|
|
--broadcast \
|
|
--verify
|
|
```
|
|
|
|
## Post-deploy
|
|
|
|
1. Set publisher address(es) for the Mirroring Service warm key: `setPublisher(publisher, true)`.
|
|
2. Document deployed address per chain in DEPLOYED_ADDRESSES or this doc.
|
|
3. Mirroring Service calls `submitCommit(...)` with root from Merkle commitment builder.
|
|
|
|
## Multi-mainnet (Phase 3)
|
|
|
|
Repeat deploy with same admin/publisher pattern on Arbitrum, Base, Polygon, BSC using respective RPC and chain IDs. MS can post the same root to multiple MirrorRegistry instances for redundancy.
|