- Changed CCIP Router address from `0x8078A09637e47Fa5Ed34F626046Ea2094a5CDE5e` to `0x42DAb7b888Dd382bD5Adcf9E038dBF1fD03b4817` across multiple documentation files. - Updated WETH9 Bridge address from `0x89dd12025bfCD38A168455A44B400e913ED33BE2` to `0xcacfd227A040002e49e2e01626363071324f820a`. - Ensured all references to the new addresses are consistent throughout the documentation. This update reflects the latest deployment configurations and ensures accurate contract references for ChainID 138.
3.8 KiB
3.8 KiB
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)withaddress(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:
-
LINK Token Fees (Primary)
- Router uses LINK token for fees
- Fee token address configured in router
- Preferred method for cross-chain fees
-
Native ETH Fees (Alternative)
- Some routers support native ETH via
msg.value - Requires router configuration
- May be chain-specific
- Some routers support native ETH via
-
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
cast call <ROUTER> "getFee(uint64,bytes)" <DEST_CHAIN> "0x" --rpc-url <RPC>
- Result: May return fee in default token (LINK or native)
Test 2: getFee() with address(0)
cast call <ROUTER> "getFee(uint64,bytes,address)" <DEST_CHAIN> "0x" "0x0000..." --rpc-url <RPC>
- Result: Tests if router accepts address(0) as fee token
Test 3: ccipSend() with msg.value
cast send <ROUTER> "ccipSend(...)" --value <amount> --rpc-url <RPC>
- 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.valueinstead 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
- Test Native ETH: Attempt a test CCIP send with native ETH
- Deploy LINK: If native ETH doesn't work, deploy LINK token
- 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.