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.
This commit is contained in:
223
docs/operations/integrations/CCIP_TROUBLESHOOTING.md
Normal file
223
docs/operations/integrations/CCIP_TROUBLESHOOTING.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# 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)
|
||||
|
||||
Reference in New Issue
Block a user