# ChainID 138 CCIP Selector Notes

**Date**: 2025-01-18  
**Status**: Selector Reference Found

## Selector References Found

### networks.json

In `networks.json`, ChainID 138 shows:
```json
"chainSelector": "5009297550715157269"
```

**Note**: This is the same selector as Ethereum Mainnet. This may be:
- A placeholder value
- Incorrect if ChainID 138 is using a custom CCIP implementation
- Correct if ChainID 138 is configured to use Mainnet's selector (unlikely)

### Historical Documentation

In `docs/archive/historical/CROSS_CHAIN_BRIDGE_ADDRESSES.md`:
```
ChainID 138 | 138 | `866240039685049171407962509760789466724431933144813155647626` (calculated, needs verification)
```

**Note**: This value exceeds uint64 maximum (`18446744073709551615`), so it cannot be used as a uint64 chain selector.

### Relay Service Config

In `services/relay/src/config.js`:
```javascript
sourceChainSelector: BigInt('138'), // Using chain ID as selector for custom relay
```

**Note**: For custom relay implementations, the chain ID (138) is used directly as the selector.

## Determining the Correct Selector

### For Official Chainlink CCIP

1. **Query Chainlink CCIP Directory**:
   - Visit: https://docs.chain.link/ccip/supported-networks
   - Check if ChainID 138 is listed
   - Use the official selector if available

2. **Query CCIP Router Contract** (if deployed):
   - Check if CCIP Router on ChainID 138 has a method to query its chain selector
   - Query: `getChainSelector()` or similar

3. **Contact Chainlink**:
   - If ChainID 138 needs to be registered with Chainlink CCIP
   - Obtain official selector from Chainlink

### For Custom CCIP Implementation

If using a custom CCIP Router (not official Chainlink):
- Selector may be calculated differently
- May use chain ID directly (138)
- May use a custom calculation method
- Check custom router documentation

## Current Recommendation

Until the official selector is confirmed:

1. **For Testing**: Use the value from `networks.json` (`5009297550715157269`) if it matches your CCIP setup
2. **For Custom Relays**: Use chain ID (`138`) as the selector
3. **For Production**: Obtain official selector from Chainlink CCIP Directory

## Action Required

**Before configuring bridges**:
1. Determine which CCIP implementation is being used (official Chainlink vs custom)
2. Query or obtain the correct ChainID 138 selector
3. Update `.env` with: `CHAIN138_SELECTOR=<correct-selector>`
4. Run bridge configuration script

## Helper Script

Use `scripts/configuration/find-chain-selector.sh` to help locate the selector:
```bash
./scripts/configuration/find-chain-selector.sh
```

---

**Status**: ⚠️ **Selector needs verification before bridge configuration**
