- Marked submodules ai-mcp-pmm-controller, explorer-monorepo, and smom-dbis-138 as dirty to reflect recent changes. - Updated documentation to clarify operator script usage, including dotenv loading and task execution instructions. - Enhanced the README and various index files to provide clearer navigation and task completion guidance. Made-with: Cursor
14 KiB
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
- Publishable — no secrets; safe to commit and share.
- Consumed by: Bash via
source scripts/lib/load-project-env.sh(orload-contract-addresses.sh); Node/JS viarequire('.../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 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 or etherscan.io. See EXPLORER_AND_BLOCKSCAN_REFERENCE.
Correlated matrix and status (Chain 138 + multi-chain): 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 | 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e |
✅ Deployed | Cross-chain router |
| CCIP Sender | 0x105F8A15b819948a89153505762444Ee9f324684 |
✅ Deployed | Cross-chain sender |
| CCIPWETH9Bridge | 0x971cD9D156f193df8051E48043C476e53ECd4693 |
✅ Deployed | WETH9 cross-chain (working router) |
| 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 §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. |
Deployer / Admin (Chain 138)
| Role | Address | Explorer (Chain 138 only) |
|---|---|---|
| Deployer / Admin | 0x4A666F96fC8764181194447A7dFdb7d471b301C8 |
explorer.d-bis.org/address/0x4A666F96fC8764181194447A7dFdb7d471b301C8 |
- Chain 138: use the link above. Other chains (e.g. mainnet): use blockscan.com to check balances on those chains. See EXPLORER_AND_BLOCKSCAN_REFERENCE.
🎯 Key Addresses for Services
Oracle Publisher Service (VMID 3500)
ORACLE_ADDRESS=0x3304b747e565a97ec8ac220b0b6a1f6ffdb837e6
AGGREGATOR_ADDRESS=0x99b3511a2d315a497c8112c1fdd8d508d4b1e506
RPC_URL_138=http://192.168.11.211:8545
CHAIN_ID=138
CCIP Monitor Service (VMID 3501)
CCIP_ROUTER_ADDRESS=0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
CCIP_SENDER_ADDRESS=0x105F8A15b819948a89153505762444Ee9f324684
RPC_URL_138=http://192.168.11.211:8545
CHAIN_ID=138
MetaMask Configuration
{
"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 | 0x971cD9D156f193df8051E48043C476e53ECd4693 |
| LINK_TOKEN / CCIP_FEE_TOKEN | 0xb7721dD53A8c629d9f1Ba31a5819AFe250002b03 |
| CCIP_ROUTER | 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e |
| 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, 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 and OPERATOR_ACTIONS.
Reconcile .env: Copy the canonical block from Done 2026-02-11. One entry per variable; matches this table..env.example into .env.
🌉 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. See CCIP_BRIDGE_MAINNET_CONNECTION.md.
📝 Notes
- WETH9 and WETH10 are pre-deployed in genesis.json - no deployment needed
- Oracle Proxy address is the primary address for MetaMask price feeds
- CCIP Router is required for cross-chain communication
- All addresses are on ChainID 138
- On-chain confirmation: Verify each contract at https://explorer.d-bis.org/address/ and use BLOCKSCOUT_VERIFICATION_GUIDE for source verification.
- .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 0x971cD9D156f193df8051E48043C476e53ECd4693 instead. See ADDRESS_MATRIX_AND_STATUS.md. |
Related: DEPLOYER_CONTRACTS_INVENTORY_AND_VERIFICATION_STATUS (all contracts by deployer, network, verified status) | EXPLORER_TOKEN_LIST_CROSSCHECK (Explorer /tokens vs repo token lists) | ADDRESS_MATRIX_AND_STATUS (correlated matrix and status) | EXPLORER_AND_BLOCKSCAN_REFERENCE (correct explorer vs blockscan.com) | ADDRESS_MATRIX_AND_STATUS | CONTRACTS_TO_DEPLOY | CHAIN138_TOKEN_ADDRESSES | TOKEN_MAPPING_AND_MAINNET_ADDRESSES (138↔Mainnet token mapping)