# 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.