# Contract Addresses Reference - ChainID 138 **Last Updated:** 2026-03-04 **Document Version:** 1.4 **Status:** Active Documentation. DODOPMMIntegration token addresses verified on-chain 2026-03-04 β see EXPLORER_TOKEN_LIST_CROSSCHECK Β§8. --- ## Master JSON (single source of truth) **All contract addresses are maintained in:** [`config/smart-contracts-master.json`](../../config/smart-contracts-master.json) - **Publishable** β no secrets; safe to commit and share. - **Consumed by:** Bash via `source scripts/lib/load-project-env.sh` (or `load-contract-addresses.sh`); Node/JS via `require('.../config/contracts-loader.cjs')`. - **Override:** Values in `.env` (e.g. `smom-dbis-138/.env`) take precedence over the master JSON. See [config/README-CONTRACTS-MASTER.md](../../config/README-CONTRACTS-MASTER.md) for usage from code and scripts. --- **Network**: ChainID 138 **RPC Endpoint** (admin/deployment): Set `RPC_URL_138` (e.g. `http://192.168.11.211:8545` or `https://rpc-core.d-bis.org`) **Explorer:** https://explorer.d-bis.org (Blockscout) β use for Chain 138 balances, contracts, and verification. For balances on **other chains** (Ethereum mainnet, etc.), use [blockscan.com](https://blockscan.com) or etherscan.io. See [EXPLORER_AND_BLOCKSCAN_REFERENCE](EXPLORER_AND_BLOCKSCAN_REFERENCE.md). **Correlated matrix and status (Chain 138 + multi-chain):** [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). Reconcile addresses here and in `.env` when deploying or deprecating contracts (R2). --- ## π Complete Contract Address List ### β Pre-Deployed Contracts (Genesis) These contracts were pre-deployed when ChainID 138 was initialized: | Contract | Address | Status | Notes | |----------|---------|--------|-------| | **WETH9** | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | β Pre-deployed | Genesis allocation | | **WETH10** | `0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f` | β Pre-deployed | Genesis allocation | | **Multicall** | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | β Pre-deployed | Genesis allocation. Same address as Oracle Aggregator in some docs β verify on explorer which contract is at this slot. | ### β Newly Deployed Contracts Contracts deployed after chain initialization: | Contract | Address | Status | Purpose | |----------|---------|--------|---------| | **Oracle Aggregator** | `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` | β Deployed | Price feed aggregator (same address as Multicall β operator to confirm which contract is at this slot on explorer) | | **Oracle Proxy** | `0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6` | β Deployed | **MetaMask price feed** | | **CCIP Router** | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | β Deployed | Cross-chain router | | **CCIP Sender** | `0x105F8A15b819948a89153505762444Ee9f324684` | β Deployed | Cross-chain sender | [π Details](../07-ccip/CCIP_SENDER_CONTRACT_REFERENCE.md) | | **CCIPWETH9Bridge** | `0xcacfd227A040002e49e2e01626363071324f820a` | β Deployed | WETH9 cross-chain (working router) | **Use for sendCrossChain** | | **CCIPWETH10Bridge** | `0xe0E93247376aa097dB308B92e6Ba36bA015535D0` | β Deployed | WETH10 cross-chain | | | **MerchantSettlementRegistry** | `0x16D9A2cB94A0b92721D93db4A6Cd8023D3338800` | β Deployed | alltra-lifi-settlement | | | **WithdrawalEscrow** | `0xe77cb26eA300e2f5304b461b0EC94c8AD6A7E46D` | β Deployed | alltra-lifi-settlement | | | **Multicall** (deploy 2026-02-13) | `0xF4AA429BE277d1a1a1A744C9e5B3aD821a9b96f7` | β Deployed | deploy-all-contracts.sh | | | **Oracle Aggregator** (deploy 2026-02-13) | `0xaFd9E25ff301a79feaBcc56F46969F34808358CE` | β Deployed | DeployOracle.s.sol | | | **Oracle Proxy** (deploy 2026-02-13) | `0x90563867F2ba94ed277303e200f4311c00982E92` | β Deployed | MetaMask price feed; use for new integrations | | | **MultiSig** (deploy 2026-02-13) | `0xb9E29cFa1f89d369671E640d0BB3aD94Cab43965` | β Deployed | deploy-all-contracts.sh | | | **CCIPReceiver** (deploy 2026-02-13) | `0xC12236C03b28e675d376774FCE2C2C052488430F` | β Deployed | DeployCCIPReceiver.s.sol | | | **Voting** (deploy 2026-02-13) | `0x022267b26400114aF01BaCcb92456Fe36cfccD93` | β Deployed | DeployVoting.s.sol | | | **UniversalAssetRegistry** (proxy) | `0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575` | β Deployed | Phased core (2026-02-11). Upgraded to impl `0x2526682F7e24febE4422647F0bFfA16b50438AA4` (registerGRUCompliantAsset). Upgrade script: `script/deploy/UpgradeUniversalAssetRegistry.s.sol`. | | | **GovernanceController** (proxy) | `0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e` | β Deployed | Phased core (2026-02-11) | | | **UniversalCCIPBridge** (proxy) | `0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8` | β Deployed | Phased core (2026-02-11) | | | **BridgeOrchestrator** (proxy) | `0x89aB428c437f23bAB9781ff8Db8D3848e27EeD6c` | β Deployed | Phased core (2026-02-11) | | ### Channels / Mirror / Trustless / Reserve / Vault (deployed 2026-02-11; mirror 2026-02-12) | Contract | Address | Notes | |----------|---------|--------| | **PaymentChannelManager** | `0x302aF72966aFd21C599051277a48DAa7f01a5f54` | Channels | | **GenericStateChannelManager** | `0xe5e3bB424c8a0259FDE23F0A58F7e36f73B90aBd` | Channels | | **AddressMapper** | `0x439Fcb2d2ab2f890DCcAE50461Fa7d978F9Ffe1A` | DeployAddressMapper.s.sol (2026-02-12) | | **MirrorManager** | `0x6eD905A30c552a6e003061A38FD52A5A427beE56` | DeployMirrorManager.s.sol (2026-02-12) | | **Lockbox138** (trustless) | `0xFce6f50B312B3D936Ea9693C5C9531CF92a3324c` | DeployTrustlessBridge.s.sol | | **ReserveSystem** | `0x607e97cD626f209facfE48c1464815DDE15B5093` | Reserve | | **ReserveTokenIntegration** | `0x34B73e6EDFd9f85a7c25EeD31dcB13aB6E969b96` | Reserve | | **RegulatedEntityRegistry** (vault) | `0xEA4C892D6c1253797c5D95a05BF3863363080b4B` | Vault system | | **VaultFactory** (vault) | `0xB2Ac70f35A81481B005067ed6567a5043BA32336` | Vault system | | **Ledger** (vault) | `0x67b3831dc64C14FB9352B2a45C6Dd69b3C86B7af` | Vault system | | **Liquidation** (vault) | `0x3aCdbCB749d6037a02F0ef6ea2E5Fb89D31fAB72` | Vault system | | **XAU Oracle** (vault) | `0xf23E1eDa304082ab7a81531dFE6020E6105e77A8` | Vault system | ### CREATE2 / Deterministic (DeployDeterministicCore.s.sol, 2026-02-11) | Contract | Address | Notes | |----------|---------|--------| | **CREATE2Factory** | `0x750E4a8adCe9f0e67A420aBE91342DC64Eb90825` | Factory for deterministic deploys | | **UniversalAssetRegistry** (proxy) | `0xC98602aa574F565b5478E8816BCab03C9De0870f` | Deterministic registry; call setCCIPRouter on bridge | | **UniversalCCIPBridge** (proxy) | `0x532DE218b94993446Be30eC894442f911499f6a3` | setCCIPRouter(router) set 2026-02-11 | | **MirrorRegistry** | `0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8` | Merkle commitment roots for mirroring | | **AlltraAdapter** | `0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc` | Bridge adapter for ALL Mainnet (651940) | ### TransactionMirror & DODO pool (Chain 138) | Contract | Address | Status / Notes | |----------|---------|----------------| | **DODOPMMIntegration** | `0x79cdbaFBaA0FdF9F55D26F360F54cddE5c743F7D` | β Deployed; **on-chain verified 2026-03-04:** `compliantUSDT()` = canonical cUSDT, `compliantUSDC()` = canonical cUSDC. See [EXPLORER_TOKEN_LIST_CROSSCHECK](EXPLORER_TOKEN_LIST_CROSSCHECK.md) Β§8. | | **TransactionMirror** | `0x7131F887DBEEb2e44c1Ed267D2A68b5b83285afc` (Chain 138; deployed 2026-02-27) | Set `TRANSACTION_MIRROR_ADDRESS` in `smom-dbis-138/.env`. Deploy: `./scripts/deployment/deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh`. | | **DODO cUSDT/cUSDC pool** | `0x9fcB06Aa1FD5215DC0E91Fd098aeff4B62fEa5C8` | β Created (deploy-transaction-mirror-and-pmm-pool-after-txpool-clear.sh). See [REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS](../03-deployment/REQUIRED_FIXES_AND_DEPLOYMENTS_STATUS.md). | ### Deployer / Admin (Chain 138) | Role | Address | Explorer (Chain 138 only) | |------|---------|---------------------------| | **Deployer / Admin** | `0x4A666F96fC8764181194447A7dFdb7d471b301C8` | [explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8](https://explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) | - **Chain 138:** use the link above. **Other chains (e.g. mainnet):** use [blockscan.com](https://blockscan.com/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8) to check balances on those chains. See [EXPLORER_AND_BLOCKSCAN_REFERENCE](EXPLORER_AND_BLOCKSCAN_REFERENCE.md). --- ## π― Key Addresses for Services ### Oracle Publisher Service (VMID 3500) ```bash ORACLE_ADDRESS=0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6 AGGREGATOR_ADDRESS=0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 RPC_URL_138=http://192.168.11.211:8545 CHAIN_ID=138 ``` ### CCIP Monitor Service (VMID 3501) ```bash CCIP_ROUTER_ADDRESS=0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817 CCIP_SENDER_ADDRESS=0x105F8A15b819948a89153505762444Ee9f324684 RPC_URL_138=http://192.168.11.211:8545 CHAIN_ID=138 ``` ### MetaMask Configuration ```json { "chainId": 138, "chainName": "SMOM-DBIS-138", "rpcUrls": ["https://rpc-core.d-bis.org"], "nativeCurrency": { "name": "ETH", "symbol": "ETH", "decimals": 18 }, "priceFeedAddress": "0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6" } ``` --- ## π Canonical source of truth (Chain 138) Use these addresses in config and .env. **smom-dbis-138/.env** has been reconciled to one entry per variable; **smom-dbis-138/.env.example** includes the same canonical block for new setups. | Variable | Canonical address | |----------|-------------------| | ComplianceRegistry | `0xbc54fe2b6fda157c59d59826bcfdbcc654ec9ea1` | | TokenFactory | `0xEBFb5C60dE5f7C4baae180CA328D3BB39E1a5133` | | BridgeVault | `0x31884f84555210FFB36a19D2471b8eBc7372d0A8` | | CompliantUSDT (cUSDT) | `0x93E66202A11B1772E55407B32B44e5Cd8eda7f22` | | CompliantUSDC (cUSDC) | `0xf22258f57794CC8E06237084b353Ab30fFfa640b` | | TokenRegistry | `0x91Efe92229dbf7C5B38D422621300956B55870Fa` | | FeeCollector | `0xF78246eB94c6CB14018E507E60661314E5f4C53f` | | DebtRegistry | `0x95BC4A997c0670d5DAC64d55cDf3769B53B63C28` | | PolicyManager | `0x0C4FD27018130A00762a802f91a72D6a64a60F14` | | TokenImplementation | `0x0059e237973179146237aB49f1322E8197c22b21` | | CCIPWETH9_BRIDGE_CHAIN138 | `0xcacfd227A040002e49e2e01626363071324f820a` | | LINK_TOKEN / CCIP_FEE_TOKEN | `0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03` | | CCIP_ROUTER | `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` | | UNIVERSAL_ASSET_REGISTRY | `0xAEE4b7fBe82E1F8295951584CBc772b8BBD68575` | | GOVERNANCE_CONTROLLER | `0xA6891D5229f2181a34D4FF1B515c3Aa37dd90E0e` | | UNIVERSAL_CCIP_BRIDGE | `0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8` | | BRIDGE_ORCHESTRATOR | `0x89aB428c437f23bAB9781ff8Db8D3848e27EeD6c` | **Multicall / Oracle Aggregator (operator to confirm):** Address `0x99b3511a2d315a497c8112c1fdd8d508d4b1e506` is documented as both. **Action:** Open [explorer](https://explorer.d-bis.org/address/0x99b3511a2d315a497c8112c1fdd8d508d4b1e506), confirm which contract is at this slot (Multicall vs Oracle Aggregator), and document the result here (e.g. "Verified: Multicall" or "Verified: Oracle Aggregator"). See [CONTRACT_NEXT_STEPS_LIST](CONTRACT_NEXT_STEPS_LIST.md) and [OPERATOR_ACTIONS](OPERATOR_ACTIONS.md). **Reconcile .env:** ~~Copy the canonical block from `.env.example` into `.env`.~~ **Done 2026-02-11.** One entry per variable; matches this table. --- ## π CCIP 138 β Ethereum Mainnet (relay) Sends from Chain 138 to mainnet use the **relay** path (custom router + relay service), not Chainlink public CCIP. Mainnet contracts: | Contract (Ethereum Mainnet) | Address | Role | |-----------------------------|---------|------| | **CCIPRelayRouter** | `0xAd9A228CcEB4cbB612cD165FFB72fE090ff10Afb` | Receives relayed messages; forwards to bridge | | **CCIPRelayBridge** | `0xF9A32F37099c582D28b4dE7Fca6eaC1e5259f939` | Releases WETH to recipient; must be funded with WETH | Chain 138 WETH9 bridges (LINK fee and native ETH fee) have mainnet destination set to **CCIPRelayBridge**. Run the relay service so messages are delivered. The Mainnet bridge is **WETH9-only**; token mapping (138βMainnet) and which tokens are relay-supported: [TOKEN_MAPPING_AND_MAINNET_ADDRESSES.md](../07-ccip/TOKEN_MAPPING_AND_MAINNET_ADDRESSES.md). See [CCIP_BRIDGE_MAINNET_CONNECTION.md](../07-ccip/CCIP_BRIDGE_MAINNET_CONNECTION.md). --- ## π Notes 1. **WETH9 and WETH10** are pre-deployed in genesis.json - no deployment needed 2. **Oracle Proxy** address is the primary address for MetaMask price feeds 3. **CCIP Router** is required for cross-chain communication 4. All addresses are on ChainID 138 5. **On-chain confirmation:** Verify each contract at https://explorer.d-bis.org/address/
and use [BLOCKSCOUT_VERIFICATION_GUIDE](../08-monitoring/BLOCKSCOUT_VERIFICATION_GUIDE.md) for source verification. 6. **.env:** Reconciled to single source of truth (one entry per variable). When adding new contract vars, keep one entry and align with this table and `.env.example`. --- ## β οΈ Deprecated (Do Not Use) | Address | Note | |---------|------| | `0x89dd12025bfCD38A168455A44B400e913ED33BE2` | **Deprecated** β old CCIPWETH9Bridge with router mismatch (no code at router). Use **CCIPWETH9Bridge** at `0xcacfd227A040002e49e2e01626363071324f820a` instead. See [ADDRESS_MATRIX_AND_STATUS.md](ADDRESS_MATRIX_AND_STATUS.md). | --- **Related:** [DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS](DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS.md) (all contracts by deployer, network, verified status) | [EXPLORER_TOKEN_LIST_CROSSCHECK](EXPLORER_TOKEN_LIST_CROSSCHECK.md) (Explorer /tokens vs repo token lists) | [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) (correlated matrix and status) | [EXPLORER_AND_BLOCKSCAN_REFERENCE](EXPLORER_AND_BLOCKSCAN_REFERENCE.md) (correct explorer vs blockscan.com) | [ADDRESS_MATRIX_AND_STATUS](ADDRESS_MATRIX_AND_STATUS.md) | [CONTRACTS_TO_DEPLOY](CONTRACTS_TO_DEPLOY.md) | [CHAIN138_TOKEN_ADDRESSES](CHAIN138_TOKEN_ADDRESSES.md) | [TOKEN_MAPPING_AND_MAINNET_ADDRESSES](../07-ccip/TOKEN_MAPPING_AND_MAINNET_ADDRESSES.md) (138βMainnet token mapping)