- 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.
224 lines
4.5 KiB
Markdown
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)
|
|
|