# CCIP Router Native ETH Support Check **Date**: 2025-01-12 **Router**: `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` **ChainID**: 138 --- ## Summary Comprehensive check to determine if the CCIP Router supports native ETH for fees instead of requiring LINK tokens. --- ## Methods Tested ### Method 1: Fee Token Query - **Method**: `getFeeToken()` / `feeToken()` - **Result**: Returns `0x000000000000000000000000514910771af9ca65...` - **Finding**: Router references Ethereum Mainnet LINK address, but contract doesn't exist on ChainID 138 ### Method 2: getFee with address(0) - **Method**: `getFee(uint64, bytes, address)` with `address(0)` - **Result**: Method may not exist or doesn't accept address(0) - **Finding**: Router may require explicit fee token parameter ### Method 3: Bytecode Analysis - **Method**: Check router bytecode for payable functions - **Result**: Router has payable functions (can accept ETH via msg.value) - **Finding**: Router can receive native ETH, but may still require LINK for fees ### Method 4: Standard CCIP Behavior - **Method**: Reference Chainlink CCIP documentation - **Result**: Standard CCIP Routers typically support: - LINK token for fees (preferred) - Native ETH for fees (if configured) - Both methods may be available --- ## Key Findings ### Router Configuration - **Fee Token Reference**: `0x514910771AF9Ca656af840dff83E8264EcF986CA` (Ethereum Mainnet LINK) - **Contract Status**: Token does NOT exist on ChainID 138 - **Router Status**: Operational, but cannot process fees without LINK token ### Native ETH Support - **Payable Functions**: ✅ Router has payable functions (can receive ETH) - **Fee Token Parameter**: Router expects fee token address - **Native ETH via msg.value**: ⚠️ May be supported, but requires testing --- ## Standard CCIP Router Behavior According to Chainlink CCIP documentation: 1. **LINK Token Fees** (Primary) - Router uses LINK token for fees - Fee token address configured in router - Preferred method for cross-chain fees 2. **Native ETH Fees** (Alternative) - Some routers support native ETH via `msg.value` - Requires router configuration - May be chain-specific 3. **Hybrid Support** - Router may accept both LINK and native ETH - Depends on router implementation - Configuration determines which is used --- ## Testing Results ### Test 1: getFee() Default ```bash cast call "getFee(uint64,bytes)" "0x" --rpc-url ``` - **Result**: May return fee in default token (LINK or native) ### Test 2: getFee() with address(0) ```bash cast call "getFee(uint64,bytes,address)" "0x" "0x0000..." --rpc-url ``` - **Result**: Tests if router accepts address(0) as fee token ### Test 3: ccipSend() with msg.value ```bash cast send "ccipSend(...)" --value --rpc-url ``` - **Result**: Tests if router accepts native ETH for fees --- ## Recommendations ### Option 1: Deploy LINK Token (Recommended) - Deploy LINK token to ChainID 138 - Matches router configuration - Standard CCIP approach - Most compatible with CCIP infrastructure ### Option 2: Test Native ETH Support - Attempt to send CCIP message with native ETH - Use `msg.value` instead of LINK token - May work if router is configured for native ETH - Less standard but avoids LINK deployment ### Option 3: Update Router Configuration - If router admin access available - Update fee token to address(0) for native ETH - Or deploy LINK and update router to use it - Requires admin privileges --- ## Next Steps 1. **Test Native ETH**: Attempt a test CCIP send with native ETH 2. **Deploy LINK**: If native ETH doesn't work, deploy LINK token 3. **Check Router Admin**: See if router configuration can be updated --- **Last Updated**: 2025-01-12 **Status**: ⚠️ Router configured for LINK, but token not deployed. Native ETH support uncertain.