Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- 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>
109 lines
3.0 KiB
Markdown
109 lines
3.0 KiB
Markdown
# T1.1: ChainID 138 CCIP Selector Resolution
|
|
|
|
**Last Updated:** 2026-01-31
|
|
**Document Version:** 1.0
|
|
**Status:** Active Documentation
|
|
|
|
---
|
|
|
|
**Date**: 2026-01-18
|
|
**Status**: ✅ **RESOLUTION IDENTIFIED**
|
|
|
|
---
|
|
|
|
## 🔍 Investigation Findings
|
|
|
|
### Conflicting Values
|
|
|
|
1. **networks.json**: `5009297550715157269` (same as Mainnet selector)
|
|
- **Location**: `smom-dbis-138/networks.json` line 13
|
|
- **Issue**: Different chains should have different selectors
|
|
|
|
2. **Relay Service Config**: `BigInt('138')` (chain ID directly)
|
|
- **Location**: `services/relay/src/config.js` line 34
|
|
- **Comment**: "Using chain ID as selector for custom relay"
|
|
|
|
### Analysis
|
|
|
|
**Key Finding**: Relay service uses **chain ID (138)** as selector
|
|
|
|
**Implication**: This indicates a **custom CCIP implementation**, not official Chainlink CCIP
|
|
|
|
**Documentation Evidence**:
|
|
- Relay service comment: "Official CCIP chain selectors are calculated differently, but for custom relay we use chain ID"
|
|
- This confirms custom CCIP is being used
|
|
|
|
---
|
|
|
|
## ✅ Resolution
|
|
|
|
### Correct Selector Value
|
|
|
|
**ChainID 138 Selector**: `138`
|
|
|
|
**Reasoning**:
|
|
1. Matches relay service implementation (actively used)
|
|
2. Consistent with custom CCIP pattern (chain ID as selector)
|
|
3. networks.json value appears to be placeholder/incorrect
|
|
|
|
### Action Required
|
|
|
|
1. **Update `.env`**:
|
|
```bash
|
|
CHAIN138_SELECTOR=138
|
|
```
|
|
|
|
2. **Update `networks.json`** (optional but recommended):
|
|
```json
|
|
"138": {
|
|
"chainSelector": "138"
|
|
}
|
|
```
|
|
|
|
3. **Document decision**: Custom CCIP uses chain ID as selector
|
|
|
|
---
|
|
|
|
## 📋 Verification
|
|
|
|
**Before Update**:
|
|
- Current: `5009297550715157269` (same as Mainnet)
|
|
- Status: ❌ Incorrect for custom CCIP
|
|
|
|
**After Update**:
|
|
- New: `138` (chain ID)
|
|
- Status: ✅ Matches relay service implementation
|
|
|
|
---
|
|
|
|
## 🔍 Why This Matters
|
|
|
|
**Impact on Bridge Configuration**:
|
|
- Mainnet → ChainID 138: Already configured with `5009297550715157269` (Mainnet selector)
|
|
- This is correct - Mainnet bridges use Mainnet selector to identify ChainID 138 destination
|
|
- ChainID 138 → Mainnet: Needs to use `138` (ChainID 138 selector)
|
|
- This is what identifies ChainID 138 as the source chain
|
|
|
|
**Note**:
|
|
- **Source selector** = selector of the chain sending the message (ChainID 138 = `138`)
|
|
- **Destination selector** = selector of the target chain (Mainnet = `5009297550715157269`)
|
|
|
|
The Mainnet → ChainID 138 configuration is correct because it uses Mainnet selector.
|
|
The ChainID 138 → Mainnet configuration needs ChainID 138 selector (`138`).
|
|
|
|
---
|
|
|
|
## 🚀 Next Steps
|
|
|
|
1. **Update `.env`** with `CHAIN138_SELECTOR=138`
|
|
2. **Test bridge configuration** with correct selector
|
|
3. **Verify bidirectional configuration** works with:
|
|
- Mainnet → ChainID 138: Uses `5009297550715157269` (destination selector)
|
|
- ChainID 138 → Mainnet: Uses `138` (source selector) and `5009297550715157269` (destination selector)
|
|
|
|
---
|
|
|
|
**Status**: ✅ **RESOLUTION IDENTIFIED - READY FOR IMPLEMENTATION**
|
|
|
|
**Last Updated**: 2026-01-18
|