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>
125 lines
4.0 KiB
Markdown
125 lines
4.0 KiB
Markdown
# Critical Tasks Progress Report
|
|
|
|
**Last Updated:** 2026-01-31
|
|
**Document Version:** 1.0
|
|
**Status:** Active Documentation
|
|
|
|
---
|
|
|
|
**Date**: 2026-01-18
|
|
**Tasks**: T1.1 (CCIP Selector), T1.2 (Bridge Configuration Block)
|
|
|
|
---
|
|
|
|
## ✅ T1.1: ChainID 138 CCIP Selector - RESOLUTION FOUND
|
|
|
|
### Findings
|
|
|
|
**Conflicting Values**:
|
|
- `networks.json`: `5009297550715157269` (same as Mainnet - **INCORRECT**)
|
|
- `services/relay/src/config.js`: `BigInt('138')` - chain ID directly (**CORRECT**)
|
|
|
|
**Resolution**: Use `138` as ChainID 138 selector
|
|
|
|
**Reasoning**:
|
|
1. Relay service actively uses `138` (chain ID)
|
|
2. Indicates custom CCIP implementation (not official Chainlink)
|
|
3. For custom CCIP, chain ID is used as selector
|
|
|
|
### Action Required
|
|
|
|
1. **Update `.env`**: `CHAIN138_SELECTOR=138`
|
|
2. **Update `networks.json`** (optional): Change selector to `138`
|
|
3. **Document**: Custom CCIP uses chain ID as selector
|
|
|
|
**Status**: ✅ **90% COMPLETE** - Resolution identified, needs implementation
|
|
|
|
---
|
|
|
|
## ⚠️ T1.2: ChainID 138 Bridge Configuration Block - ISSUE IDENTIFIED
|
|
|
|
### Investigation Results
|
|
|
|
**Contract Analysis**:
|
|
- **Address**: `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6`
|
|
- **Code Size**: 1,311 bytes (small - minimal proxy or different version)
|
|
- **Admin Function**: ✅ Works (`admin()` returns valid address)
|
|
- **Configuration Functions**: ❌ NOT in bytecode
|
|
|
|
**Function Selector Check**:
|
|
- `admin()` (0xf851a44): ✅ **FOUND** in code
|
|
- `addDestination(uint64,address)` (0xced719f3): ❌ **NOT FOUND** in code
|
|
- `getDestinationChains()` (0xabc343a7): ❌ **NOT FOUND** in code
|
|
|
|
**Proxy Pattern Check**:
|
|
- EIP-1967 implementation slot: **NOT FOUND**
|
|
- Code size suggests minimal proxy or older version
|
|
|
|
### Conclusion
|
|
|
|
**Issue**: Deployed contract on ChainID 138 is **different version** than source code
|
|
|
|
**Evidence**:
|
|
- Source code has `addDestination()` and `getDestinationChains()`
|
|
- Deployed bytecode does NOT have these function selectors
|
|
- Only `admin()` function exists in deployed contract
|
|
|
|
### Possible Causes
|
|
|
|
1. **Older Contract Version**: Deployed before these functions were added
|
|
2. **Different Implementation**: Contract deployed with different source/compiler
|
|
3. **Minimal Proxy**: Very small code suggests proxy, but no EIP-1967 slot found
|
|
4. **Different Address**: May be checking wrong address (but `admin()` works, so address is correct)
|
|
|
|
### Address Confirmation
|
|
|
|
**Note**: Address `0x3304b747E565a97ec8AC220b0B6A1f6ffDB837e6` is:
|
|
- Same address on Mainnet and ChainID 138
|
|
- Mainnet bridge has full implementation (works)
|
|
- ChainID 138 bridge has minimal implementation (missing functions)
|
|
|
|
This suggests **canonical address deployment** but **different implementations** on each chain.
|
|
|
|
### Resolution Options
|
|
|
|
1. **Check Deployment Logs**: Find which version was deployed
|
|
2. **Query Event Logs**: Check if destinations configured via events
|
|
3. **Update Contract**: Deploy updated version with full interface (if needed)
|
|
4. **Use Alternative Method**: Find alternative configuration method for current version
|
|
5. **Check Storage Directly**: Read storage slots if functions don't exist
|
|
|
|
### Next Steps
|
|
|
|
1. **Check deployment history** for ChainID 138 bridges
|
|
2. **Query event logs** for `DestinationAdded` events
|
|
3. **Compare with Mainnet** bridge implementation
|
|
4. **Determine if update needed** or if alternative method exists
|
|
|
|
**Status**: ⚠️ **60% COMPLETE** - Issue identified, resolution path needs determination
|
|
|
|
---
|
|
|
|
## 📊 Summary
|
|
|
|
### T1.1: CCIP Selector
|
|
- **Status**: ✅ Resolution found
|
|
- **Progress**: 90%
|
|
- **Action**: Update selector to `138`
|
|
|
|
### T1.2: Bridge Configuration
|
|
- **Status**: ⚠️ Issue identified (interface mismatch)
|
|
- **Progress**: 60%
|
|
- **Action**: Determine resolution path (check deployment, events, or update needed)
|
|
|
|
---
|
|
|
|
## 🚀 Next Actions
|
|
|
|
1. **Implement T1.1**: Update selector to `138` in `.env` and `networks.json`
|
|
2. **Continue T1.2**: Check deployment logs and event history
|
|
3. **Determine Resolution**: Decide if contract update needed or alternative method exists
|
|
|
|
---
|
|
|
|
**Last Updated**: 2026-01-18
|