Files
smom-dbis-138/docs/operations/integrations/CCIP_TROUBLESHOOTING.md
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

224 lines
4.5 KiB
Markdown

# CCIP Troubleshooting Guide
## Common Issues
### Message Not Received
**Symptoms**: Message sent but not received on target chain
**Diagnosis**:
1. Check message was sent successfully
2. Verify target chain selector is correct
3. Check receiver contract address
4. Verify CCIP Router is operational
5. Check LINK balance for fees
**Solutions**:
- Verify transaction hash on source chain
- Check CCIP Router logs
- Verify receiver contract is deployed
- Ensure sufficient LINK tokens
- Check target chain status
### High Fees
**Symptoms**: Fees are unexpectedly high
**Diagnosis**:
1. Check message size
2. Monitor gas prices on target chain
3. Verify fee calculation
4. Check for network congestion
**Solutions**:
- Reduce message size
- Wait for lower gas prices
- Optimize message encoding
- Consider batching updates
### Replay Protection Errors
**Symptoms**: "Message already processed" error
**Diagnosis**:
1. Check `processedMessages` mapping
2. Verify message IDs are unique
3. Check for duplicate sends
**Solutions**:
- Ensure message IDs are unique
- Clear processed messages (if safe)
- Check for duplicate transaction sends
- Verify replay protection logic
### Router Not Found
**Symptoms**: "Router not found" or "Invalid router address"
**Diagnosis**:
1. Verify router address is correct
2. Check router is deployed
3. Verify network/chain ID matches
**Solutions**:
- Update router address in contracts
- Deploy router if missing
- Verify chain ID configuration
- Check router deployment status
### Insufficient LINK
**Symptoms**: "Insufficient LINK balance" error
**Diagnosis**:
1. Check LINK token balance
2. Verify token address is correct
3. Check approval for spending
**Solutions**:
- Transfer more LINK tokens
- Verify LINK token address
- Approve contract to spend LINK
- Check token contract is correct
### Message Encoding Errors
**Symptoms**: "Invalid message format" or decode failures
**Diagnosis**:
1. Check message encoding format
2. Verify data types match
3. Check for encoding errors
**Solutions**:
- Verify encoding matches expected format
- Check data types are correct
- Test encoding/decoding separately
- Review message structure
### Target Chain Unavailable
**Symptoms**: Message fails to deliver, router unavailable
**Diagnosis**:
1. Check target chain status
2. Verify router is operational
3. Check network connectivity
**Solutions**:
- Wait for chain to recover
- Check router health status
- Verify network connectivity
- Contact support if persistent
## Diagnostic Commands
### Check Router Status
```bash
# Check router is accessible
cast call $CCIP_ROUTER "getSupportedTokens(uint64)" $CHAIN_SELECTOR --rpc-url $RPC_URL
```
### Check Message Status
```bash
# Check if message was processed
cast call $RECEIVER "processedMessages(bytes32)" $MESSAGE_ID --rpc-url $RPC_URL
```
### Check LINK Balance
```bash
# Check LINK balance
cast call $LINK_TOKEN "balanceOf(address)" $SENDER_CONTRACT --rpc-url $RPC_URL
```
### Calculate Fee
```bash
# Calculate fee for message
cast call $SENDER "calculateFee(uint64,bytes)" $CHAIN_SELECTOR $MESSAGE_DATA --rpc-url $RPC_URL
```
## Monitoring
### Key Metrics
- Message send success rate
- Message delivery latency
- Fee consumption
- Error rates
- Router availability
### Alerts
Set up alerts for:
- High error rates
- Low success rates
- High fees
- Router unavailability
- Low LINK balance
## Logs
### Check Contract Logs
```bash
# Get recent events
cast logs --from-block latest-100 --address $SENDER_CONTRACT --rpc-url $RPC_URL
```
### Check Router Logs
Check CCIP Router service logs for errors.
## Recovery Procedures
### Resend Failed Message
1. Verify original message failed
2. Check why it failed
3. Fix underlying issue
4. Resend message with new message ID
### Clear Processed Messages
**Warning**: Only if safe to do so
```solidity
// Admin function to clear processed messages (use with caution)
function clearProcessedMessage(bytes32 messageId) external onlyAdmin {
delete processedMessages[messageId];
}
```
### Emergency Pause
If critical issues occur:
```solidity
// Pause message sending
function pause() external onlyAdmin {
paused = true;
emit Paused();
}
```
## Getting Help
1. Check CCIP documentation
2. Review contract code
3. Check Chainlink status page
4. Contact Chainlink support
5. Review GitHub issues
## References
- [CCIP Integration Guide](docs/CCIP_INTEGRATION.md)
- [CCIP Router Setup](docs/CCIP_ROUTER_SETUP.md)
- [CCIP Message Format](docs/CCIP_MESSAGE_FORMAT.md)
- [CCIP Fees](docs/CCIP_FEES.md)
- [Chainlink CCIP Support](https://chain.link/support)