Add full monorepo: virtual-banker, backend, frontend, docs, scripts, deployment
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
179
docs/CCIP_RATE_LIMITS.md
Normal file
179
docs/CCIP_RATE_LIMITS.md
Normal file
@@ -0,0 +1,179 @@
|
||||
# CCIP Rate Limits Documentation
|
||||
|
||||
**Date**: 2025-01-12
|
||||
**Network**: ChainID 138
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
This document describes the rate limits configured for CCIP token pools and cross-chain transfers.
|
||||
|
||||
---
|
||||
|
||||
## Rate Limit Types
|
||||
|
||||
### Outbound Rate Limits
|
||||
Controls the maximum amount of tokens that can be sent from the source chain to a destination chain within a time period.
|
||||
|
||||
### Inbound Rate Limits
|
||||
Controls the maximum amount of tokens that can be received on the destination chain from the source chain within a time period.
|
||||
|
||||
### Per-Lane Rate Limits
|
||||
Rate limits specific to each source-destination chain pair (lane).
|
||||
|
||||
---
|
||||
|
||||
## Current Configuration
|
||||
|
||||
### Status: ⚠️ Unknown
|
||||
|
||||
Rate limit configuration cannot be verified from scripts without admin access or contract verification.
|
||||
|
||||
### Verification Methods
|
||||
|
||||
1. **Query Pool Contracts**:
|
||||
```bash
|
||||
cast call <pool_address> "getOutboundRateLimit()" --rpc-url <rpc_url>
|
||||
cast call <pool_address> "getInboundRateLimit()" --rpc-url <rpc_url>
|
||||
```
|
||||
|
||||
2. **Check TokenAdminRegistry**:
|
||||
```bash
|
||||
./scripts/verify-token-admin-registry.sh
|
||||
```
|
||||
|
||||
3. **Query Pool Configuration**:
|
||||
```bash
|
||||
./scripts/verify-token-pool-config.sh <pool_address>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rate Limit Configuration
|
||||
|
||||
### Recommended Settings
|
||||
|
||||
#### Outbound Rate Limits
|
||||
- **Per Lane**: Based on expected volume
|
||||
- **Time Window**: 24 hours
|
||||
- **Purpose**: Prevent excessive outbound transfers
|
||||
|
||||
#### Inbound Rate Limits
|
||||
- **Per Lane**: Based on expected volume
|
||||
- **Time Window**: 24 hours
|
||||
- **Purpose**: Prevent excessive inbound transfers
|
||||
|
||||
#### Global Limits
|
||||
- **Total Outbound**: Sum of all lane limits
|
||||
- **Total Inbound**: Sum of all lane limits
|
||||
- **Purpose**: Overall system protection
|
||||
|
||||
---
|
||||
|
||||
## Rate Limit Update Procedures
|
||||
|
||||
### Prerequisites
|
||||
1. Admin access to pool contracts
|
||||
2. Understanding of current usage patterns
|
||||
3. Risk assessment of proposed changes
|
||||
|
||||
### Update Steps
|
||||
|
||||
1. **Analyze Current Usage**:
|
||||
- Review historical transfer volumes
|
||||
- Identify peak usage periods
|
||||
- Calculate average and maximum rates
|
||||
|
||||
2. **Determine New Limits**:
|
||||
- Consider expected growth
|
||||
- Add safety margin
|
||||
- Balance usability and security
|
||||
|
||||
3. **Update Configuration**:
|
||||
```solidity
|
||||
pool.setOutboundRateLimit(chainSelector, newLimit);
|
||||
pool.setInboundRateLimit(chainSelector, newLimit);
|
||||
```
|
||||
|
||||
4. **Verify Changes**:
|
||||
```bash
|
||||
./scripts/verify-token-pool-config.sh <pool_address>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Monitoring
|
||||
|
||||
### Rate Limit Usage
|
||||
|
||||
Monitor current usage vs limits:
|
||||
- Current outbound usage
|
||||
- Current inbound usage
|
||||
- Time until limit reset
|
||||
- Approaching limits alerts
|
||||
|
||||
### Alerts
|
||||
|
||||
Set up alerts for:
|
||||
- Approaching rate limits (80% threshold)
|
||||
- Rate limit reached
|
||||
- Unusual rate limit activity
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Rate Limit Reached
|
||||
|
||||
**Symptoms**:
|
||||
- Transfers failing with rate limit error
|
||||
- High rate limit usage
|
||||
|
||||
**Solutions**:
|
||||
1. Wait for rate limit reset
|
||||
2. Request rate limit increase (if needed)
|
||||
3. Distribute transfers across time
|
||||
|
||||
### Rate Limit Too Low
|
||||
|
||||
**Symptoms**:
|
||||
- Frequent rate limit errors
|
||||
- Legitimate transfers blocked
|
||||
|
||||
**Solutions**:
|
||||
1. Analyze usage patterns
|
||||
2. Request rate limit increase
|
||||
3. Update rate limit configuration
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Set Appropriate Limits**:
|
||||
- Based on expected usage
|
||||
- Include safety margin
|
||||
- Review regularly
|
||||
|
||||
2. **Monitor Usage**:
|
||||
- Track rate limit usage
|
||||
- Set up alerts
|
||||
- Review trends
|
||||
|
||||
3. **Plan for Growth**:
|
||||
- Anticipate increased usage
|
||||
- Adjust limits proactively
|
||||
- Document changes
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Token Pool Architecture](./CCIP_TOKEN_POOL_ARCHITECTURE.md) (Task 25)
|
||||
- [CCIP Configuration Status](./CCIP_CONFIGURATION_STATUS.md)
|
||||
- [Complete Task Catalog](./CCIP_COMPLETE_TASK_CATALOG.md)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2025-01-12
|
||||
|
||||
Reference in New Issue
Block a user