- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
14 KiB
Bridge Deployment Review - Complete Analysis
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-18
Status: 📋 COMPREHENSIVE REVIEW COMPLETE
Purpose: Verify all bridges needing deployment, check deployment status, and ensure all features are present
🔍 Executive Summary
Deployment Status
| Bridge Contract | Documented Address | Actual Status | Code Size | Features Complete |
|---|---|---|---|---|
| CCIPWETH9Bridge | 0x89dd12025bfCD38A168455A44B400e913ED33BE2 |
❌ NOT DEPLOYED | 2 bytes | ✅ YES |
| CCIPWETH10Bridge | 0xe0E93247376aa097dB308B92e6Ba36bA015535D0 |
❌ NOT DEPLOYED | 2 bytes | ✅ YES |
| CCIP Router | 0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e |
❌ NOT DEPLOYED | 2 bytes | N/A |
Key Findings
- Documentation Discrepancy: Documentation claims bridges are deployed, but on-chain verification shows they are NOT deployed
- Feature Completeness: Contract code has ALL required features implemented
- Deployment Required: Both WETH9 and WETH10 bridges need to be deployed
- Configuration Required: After deployment, destinations must be configured
📋 Bridge Contracts Analysis
1. CCIPWETH9Bridge
Contract File: smom-dbis-138/contracts/ccip/CCIPWETH9Bridge.sol
Documented Address: 0x89dd12025bfCD38A168455A44B400e913ED33BE2
Actual Status: ❌ NOT DEPLOYED (2 bytes code = empty contract)
Required Features Checklist
| Feature | Status | Implementation |
|---|---|---|
| Cross-Chain Transfer | ✅ COMPLETE | sendCrossChain() - Lines 88-152 |
| Receive Messages | ✅ COMPLETE | ccipReceive() - Lines 158-191 |
| Destination Management | ✅ COMPLETE | addDestination(), removeDestination(), updateDestination() - Lines 228-276 |
| Fee Calculation | ✅ COMPLETE | calculateFee() - Lines 199-223 |
| Replay Protection | ✅ COMPLETE | processedTransfers mapping + nonces - Lines 37-38 |
| Admin Functions | ✅ COMPLETE | changeAdmin(), updateFeeToken() - Lines 281-292 |
| View Functions | ✅ COMPLETE | getDestinationChains(), getUserNonce() - Lines 297-306 |
| Events | ✅ COMPLETE | All events defined - Lines 40-58 |
| Access Control | ✅ COMPLETE | onlyAdmin, onlyRouter modifiers - Lines 60-68 |
| Token Handling | ✅ COMPLETE | WETH9 token transfer, LINK fee payment - Lines 100, 135-136 |
Feature Details
✅ sendCrossChain() (Lines 88-152):
- Validates amount and recipient
- Checks destination is enabled
- Transfers WETH9 from user
- Increments nonce for replay protection
- Encodes transfer data (recipient, amount, sender, nonce)
- Prepares CCIP message with token amounts
- Calculates and pays LINK fees
- Sends via CCIP router
- Emits
CrossChainTransferInitiatedevent
✅ ccipReceive() (Lines 158-191):
- Only callable by CCIP router (
onlyRoutermodifier) - Replay protection via
processedTransfersmapping - Validates token amounts and token type
- Decodes transfer data
- Transfers WETH9 to recipient
- Emits
CrossChainTransferCompletedevent
✅ Destination Management (Lines 228-276):
addDestination(): Add new destination chain with receiver bridge addressremoveDestination(): Disable destination and remove from arrayupdateDestination(): Update receiver bridge address for existing destination- All functions emit appropriate events
✅ Fee Calculation (Lines 199-223):
- View function to calculate CCIP fees before sending
- Uses same message structure as actual send
- Returns fee amount in LINK tokens
✅ Replay Protection:
processedTransfersmapping tracks processed message IDsnoncesmapping tracks user nonces per address- Prevents duplicate message processing
✅ Admin Functions:
changeAdmin(): Transfer admin roleupdateFeeToken(): Change LINK token address if needed
Constructor Parameters
constructor(address _ccipRouter, address _weth9, address _feeToken)
Required Values:
_ccipRouter: CCIP Router address (verify:0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5eor0x99b3511a2d315a497c8112c1fdd8d508d4b1e506)_weth9: WETH9 token address (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)_feeToken: LINK token address (0x514910771AF9Ca656af840dff83E8264EcF986CA)
2. CCIPWETH10Bridge
Contract File: smom-dbis-138/contracts/ccip/CCIPWETH10Bridge.sol
Documented Address: 0xe0E93247376aa097dB308B92e6Ba36bA015535D0
Actual Status: ❌ NOT DEPLOYED (2 bytes code = empty contract)
Required Features Checklist
| Feature | Status | Implementation |
|---|---|---|
| Cross-Chain Transfer | ✅ COMPLETE | sendCrossChain() - Lines 88-152 |
| Receive Messages | ✅ COMPLETE | ccipReceive() - Lines 158-191 |
| Destination Management | ✅ COMPLETE | addDestination(), removeDestination(), updateDestination() - Lines 228-276 |
| Fee Calculation | ✅ COMPLETE | calculateFee() - Lines 199-223 |
| Replay Protection | ✅ COMPLETE | processedTransfers mapping + nonces - Lines 37-38 |
| Admin Functions | ✅ COMPLETE | changeAdmin(), updateFeeToken() - Lines 281-292 |
| View Functions | ✅ COMPLETE | getDestinationChains(), getUserNonce() - Lines 297-306 |
| Events | ✅ COMPLETE | All events defined - Lines 40-58 |
| Access Control | ✅ COMPLETE | onlyAdmin, onlyRouter modifiers - Lines 60-68 |
| Token Handling | ✅ COMPLETE | WETH10 token transfer, LINK fee payment - Lines 100, 135-136 |
Note: CCIPWETH10Bridge has identical feature set to CCIPWETH9Bridge, only difference is WETH10 token instead of WETH9.
Constructor Parameters
constructor(address _ccipRouter, address _weth10, address _feeToken)
Required Values:
_ccipRouter: CCIP Router address (verify:0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5eor0x99b3511a2d315a497c8112c1fdd8d508d4b1e506)_weth10: WETH10 token address (0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f)_feeToken: LINK token address (0x514910771AF9Ca656af840dff83E8264EcF986CA)
🔍 Documentation Review
Documentation Sources Reviewed
-
explorer-monorepo/docs/CCIP_CURRENT_STATUS.md
- Claims: WETH9 Bridge deployed at
0x89dd12025bfCD38A168455A44B400e913ED33BE2 - Claims: WETH10 Bridge deployed at
0xe0E93247376aa097dB308B92e6Ba36bA015535D0 - Claims: CCIP Router deployed at
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e - Status: ❌ OUTDATED - Contracts not actually deployed
- Claims: WETH9 Bridge deployed at
-
smom-dbis-138/docs/deployment/PHASE3_DEPLOYMENT_STATUS.md
- Claims: Mainnet bridges deployed and verified
- Claims: ChainID 138 bridges need verification
- Status: ⚠️ PARTIALLY ACCURATE - Mainnet verified, ChainID 138 NOT deployed
-
docs/06-besu/T1_2_PHASE3_EXECUTION_PLAN.md
- Provides deployment instructions
- Lists required addresses
- Status: ✅ ACCURATE - Good deployment guide
Documentation Discrepancies
| Document | Claim | Actual Status | Action Required |
|---|---|---|---|
| CCIP_CURRENT_STATUS.md | Bridges deployed | ❌ Not deployed | Update documentation |
| PHASE3_DEPLOYMENT_STATUS.md | Needs verification | ❌ Not deployed | Update status |
| T1_2_PHASE3_EXECUTION_PLAN.md | Ready for execution | ✅ Accurate | No action needed |
✅ Feature Completeness Verification
Required Features for CCIP Bridge Contracts
Core Functionality
- sendCrossChain(): Send tokens to another chain ✅
- ccipReceive(): Receive tokens from another chain ✅
- calculateFee(): Calculate CCIP fees ✅
Destination Management
- addDestination(): Add new destination chain ✅
- removeDestination(): Remove destination chain ✅
- updateDestination(): Update receiver bridge address ✅
- getDestinationChains(): List all configured destinations ✅
Security Features
- Replay Protection: Message ID tracking ✅
- Nonce Management: User nonce tracking ✅
- Access Control: Admin and router modifiers ✅
- Input Validation: Zero address checks, amount validation ✅
Admin Functions
- changeAdmin(): Transfer admin role ✅
- updateFeeToken(): Change LINK token address ✅
Events
- CrossChainTransferInitiated: Emitted on send ✅
- CrossChainTransferCompleted: Emitted on receive ✅
- DestinationAdded: Emitted on destination add ✅
- DestinationRemoved: Emitted on destination remove ✅
- DestinationUpdated: Emitted on destination update ✅
View Functions
- getDestinationChains(): Get all destination chain selectors ✅
- getUserNonce(): Get user's current nonce ✅
- destinations(): Get destination details by selector ✅
Feature Comparison: Code vs Requirements
| Feature Category | Required | Implemented | Status |
|---|---|---|---|
| Cross-Chain Transfer | ✅ | ✅ | ✅ COMPLETE |
| Message Reception | ✅ | ✅ | ✅ COMPLETE |
| Destination Management | ✅ | ✅ | ✅ COMPLETE |
| Fee Calculation | ✅ | ✅ | ✅ COMPLETE |
| Replay Protection | ✅ | ✅ | ✅ COMPLETE |
| Access Control | ✅ | ✅ | ✅ COMPLETE |
| Admin Functions | ✅ | ✅ | ✅ COMPLETE |
| Events | ✅ | ✅ | ✅ COMPLETE |
| View Functions | ✅ | ✅ | ✅ COMPLETE |
Result: ✅ ALL REQUIRED FEATURES IMPLEMENTED
📊 Deployment Requirements
Prerequisites
-
CCIP Router: Must be deployed and verified
- Documented:
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e - Status: ❌ NOT DEPLOYED (needs verification)
- Alternative:
0x99b3511a2d315a497c8112c1fdd8d508d4b1e506(from Phase 3.1)
- Documented:
-
LINK Token: Must be deployed
- Expected:
0x514910771AF9Ca656af840dff83E8264EcF986CA(canonical address) - Status: ❌ NOT DEPLOYED (needs CREATE2 deployment)
- Expected:
-
WETH9 Token: Must be deployed
- Address:
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - Status: ✅ PREDEPLOYED (genesis predeployment)
- Address:
-
WETH10 Token: Must be deployed
- Address:
0xf4BB2e28688e89fCcE3c0580D37d36A7672E8A9f - Status: ✅ PREDEPLOYED (genesis predeployment)
- Address:
Deployment Order
-
Deploy LINK Token (if not at canonical address)
- Use CREATE2 to deploy to
0x514910771AF9Ca656af840dff83E8264EcF986CA - Or verify existing deployment
- Use CREATE2 to deploy to
-
Verify CCIP Router
- Check if router exists at documented address
- Verify router is functional
-
Deploy CCIPWETH9Bridge
- Constructor: (router, weth9, link)
- Save deployed address
-
Deploy CCIPWETH10Bridge
- Constructor: (router, weth10, link)
- Save deployed address
-
Configure Destinations
- Add Mainnet destination to both bridges
- Chain selector:
5009297550715157269 - Mainnet WETH9 Bridge:
0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6 - Mainnet WETH10 Bridge:
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e
🎯 Action Items
Immediate Actions Required
-
✅ Verify CCIP Router Status
- Check if router exists at
0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e - If not, check alternative:
0x99b3511a2d315a497c8112c1fdd8d508d4b1e506 - Verify router functionality
- Check if router exists at
-
✅ Deploy LINK Token
- Deploy to canonical address using CREATE2
- Or verify existing deployment
-
✅ Deploy CCIPWETH9Bridge
- Use deployment script:
script/DeployCCIPWETH9Bridge.s.sol - Verify deployment
- Save address
- Use deployment script:
-
✅ Deploy CCIPWETH10Bridge
- Use deployment script:
script/DeployCCIPWETH10Bridge.s.sol - Verify deployment
- Save address
- Use deployment script:
-
✅ Configure Destinations
- Add Mainnet to WETH9 Bridge
- Add Mainnet to WETH10 Bridge
- Verify configuration
-
✅ Update Documentation
- Update
CCIP_CURRENT_STATUS.mdwith actual addresses - Update
PHASE3_DEPLOYMENT_STATUS.mdwith deployment status - Update
.envfiles with new addresses
- Update
Documentation Updates Required
-
explorer-monorepo/docs/CCIP_CURRENT_STATUS.md
- Update bridge addresses after deployment
- Update destination configuration status
-
smom-dbis-138/docs/deployment/PHASE3_DEPLOYMENT_STATUS.md
- Update ChainID 138 deployment status
- Add actual deployed addresses
-
Environment Files
- Update
.envwith new bridge addresses - Update configuration scripts
- Update
📝 Summary
Deployment Status
- CCIPWETH9Bridge: ❌ NOT DEPLOYED - Needs deployment
- CCIPWETH10Bridge: ❌ NOT DEPLOYED - Needs deployment
- CCIP Router: ❌ NOT VERIFIED - Needs verification
- LINK Token: ❌ NOT DEPLOYED - Needs CREATE2 deployment
Feature Completeness
- CCIPWETH9Bridge: ✅ 100% COMPLETE - All required features implemented
- CCIPWETH10Bridge: ✅ 100% COMPLETE - All required features implemented
Documentation Status
- Feature Documentation: ✅ ACCURATE - Contract features well documented
- Deployment Documentation: ❌ OUTDATED - Claims deployment but contracts not deployed
- Execution Plans: ✅ ACCURATE - Good deployment guides available
Next Steps
- Resolve transaction deployment issues (from previous session)
- Deploy CCIPWETH9Bridge
- Deploy CCIPWETH10Bridge
- Configure destinations
- Update all documentation
Last Updated: 2026-01-18
Review Status: ✅ COMPLETE
Action Required: Deploy bridges and update documentation