- 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.
7.0 KiB
7.0 KiB
Validator and RPC Node Deployment Strategy
Core Requirements
Validator Nodes
- Deployment: ALL non-US Commercial Azure regions (42 regions)
- VM Size:
Standard_D4_v2(4 vCPUs) - MUST be the SAME across ALL regions - VM Family: Dv2 Family
- Count: 1 validator per region (minimum for consensus)
- Purpose: Consensus and block validation
- Critical: All validator nodes must use identical VM specifications
RPC Nodes (Core Backbone)
- Deployment: ALL non-US Commercial Azure regions (42 regions)
- VM Size:
Standard_D8s_v6(8 vCPUs) - MUST be the SAME across ALL regions - VM Family: Dsv6 Family
- Count: 1 RPC node per region (core backbone)
- Purpose: Internal networking, core backbone infrastructure
- Critical: RPC nodes are the internally networked backbone - must be in ALL regions
System Nodes
- Deployment: ALL regions (required for AKS)
- VM Size:
Standard_D2_v2(2 vCPUs) - VM Family: Dv2 Family
- Count: 1 system node per region
- Purpose: AKS system pool
Sentry Nodes
- Deployment: Distributed as needed based on quotas
- VM Size:
Standard_D4_v2(4 vCPUs) - VM Family: Dv2 Family
- Count: 0-1 per region (distributed)
- Purpose: P2P connectivity
- Note: Can be distributed based on quota availability
All 42 Non-US Commercial Azure Regions
| # | Region | Code | Validator | RPC | System | Sentry |
|---|---|---|---|---|---|---|
| 1 | Belgium Central | bc | ✅ | ✅ | ✅ | ⚪ |
| 2 | Brazil South | bs | ✅ | ✅ | ✅ | ⚪ |
| 3 | Brazil Southeast | bse | ✅ | ✅ | ✅ | ⚪ |
| 4 | Canada Central | cc | ✅ | ✅ | ✅ | ⚪ |
| 5 | Canada East | ce | ✅ | ✅ | ✅ | ⚪ |
| 6 | Central India | ci | ✅ | ✅ | ✅ | ⚪ |
| 7 | Chile Central | chc | ✅ | ✅ | ✅ | ⚪ |
| 8 | East Asia | ea | ✅ | ✅ | ✅ | ⚪ |
| 9 | France Central | fc | ✅ | ✅ | ✅ | ⚪ |
| 10 | France South | fs | ✅ | ✅ | ✅ | ⚪ |
| 11 | Germany North | gn | ✅ | ✅ | ✅ | ⚪ |
| 12 | Germany West Central | gwc | ✅ | ✅ | ✅ | ⚪ |
| 13 | Indonesia Central | ic | ✅ | ✅ | ✅ | ⚪ |
| 14 | Israel Central | ilc | ✅ | ✅ | ✅ | ⚪ |
| 15 | Italy North | in | ✅ | ✅ | ✅ | ⚪ |
| 16 | Japan East | je | ✅ | ✅ | ✅ | ⚪ |
| 17 | Japan West | jw | ✅ | ✅ | ✅ | ⚪ |
| 18 | Jio India Central | jic | ✅ | ✅ | ✅ | ⚪ |
| 19 | Jio India West | jiw | ✅ | ✅ | ✅ | ⚪ |
| 20 | Korea Central | kc | ✅ | ✅ | ✅ | ⚪ |
| 21 | Korea South | ks | ✅ | ✅ | ✅ | ⚪ |
| 22 | Malaysia West | mw | ✅ | ✅ | ✅ | ⚪ |
| 23 | Mexico Central | mc | ✅ | ✅ | ✅ | ⚪ |
| 24 | New Zealand North | nzn | ✅ | ✅ | ✅ | ⚪ |
| 25 | North Europe | ne | ✅ | ✅ | ✅ | ⚪ |
| 26 | Norway East | no | ✅ | ✅ | ✅ | ⚪ |
| 27 | Norway West | nw | ✅ | ✅ | ✅ | ⚪ |
| 28 | Poland Central | pc | ✅ | ✅ | ✅ | ⚪ |
| 29 | Qatar Central | qc | ✅ | ✅ | ✅ | ⚪ |
| 30 | South Africa North | san | ✅ | ✅ | ✅ | ⚪ |
| 31 | South Africa West | saw | ✅ | ✅ | ✅ | ⚪ |
| 32 | Southeast Asia | sea | ✅ | ✅ | ✅ | ⚪ |
| 33 | South India | si | ✅ | ✅ | ✅ | ⚪ |
| 34 | Spain Central | sc | ✅ | ✅ | ✅ | ⚪ |
| 35 | Sweden Central | swc | ✅ | ✅ | ✅ | ⚪ |
| 36 | Switzerland North | sn | ✅ | ✅ | ✅ | ⚪ |
| 37 | Switzerland West | sw | ✅ | ✅ | ✅ | ⚪ |
| 38 | UAE Central | uac | ✅ | ✅ | ✅ | ⚪ |
| 39 | UAE North | uan | ✅ | ✅ | ✅ | ⚪ |
| 40 | UK South | uks | ✅ | ✅ | ✅ | ⚪ |
| 41 | UK West | ukw | ✅ | ✅ | ✅ | ⚪ |
| 42 | West Europe | we | ✅ | ✅ | ✅ | ⚪ |
| 43 | West India | wi | ✅ | ✅ | ✅ | ⚪ |
Legend: ✅ = Required, ⚪ = Optional (distributed)
Per-Region Configuration
Standard Configuration
node_count = {
system = 1 # Required for AKS
validators = 1 # Required in ALL regions (SAME VM size)
sentries = 0 # Optional, distributed as needed
rpc = 1 # Required in ALL regions (core backbone)
}
vm_families = {
system = "Standard_D2_v2" # 2 vCPUs - Dv2 Family
validators = "Standard_D4_v2" # 4 vCPUs - Dv2 Family (SAME across ALL)
sentries = "Standard_D4_v2" # 4 vCPUs - Dv2 Family (distributed)
rpc = "Standard_D8s_v6" # 8 vCPUs - Dsv6 Family (SAME across ALL)
}
Quota Requirements Per Region
- Dv2 Family: 6 vCPUs (system: 2, validators: 4, sentries: 0)
- Dsv6 Family: 8 vCPUs (RPC: 8)
- Total: 14 vCPUs per region (minimum)
With sentries:
- Dv2 Family: 10 vCPUs (system: 2, validators: 4, sentries: 4)
- Dsv6 Family: 8 vCPUs (RPC: 8)
- Total: 18 vCPUs per region (with sentries)
Total Deployment Summary
Global Resources
- Total Regions: 42 (all non-US Commercial Azure)
- Total Validator Nodes: 42 (1 per region, SAME VM size)
- Total RPC Nodes: 42 (1 per region, core backbone)
- Total System Nodes: 42 (1 per region, AKS)
- Total Sentry Nodes: 0-42 (distributed as needed)
- Total Nodes: 126-168 nodes
Total vCPUs
Minimum (without sentries):
- Dv2 Family: 252 vCPUs (6 per region × 42)
- Dsv6 Family: 336 vCPUs (8 per region × 42)
- Total: 588 vCPUs
Maximum (with sentries):
- Dv2 Family: 420 vCPUs (10 per region × 42)
- Dsv6 Family: 336 vCPUs (8 per region × 42)
- Total: 756 vCPUs
Key Design Principles
1. Validator Consistency
- Same VM size (
Standard_D4_v2) across ALL 42 regions - Ensures consistent performance and behavior
- Simplifies monitoring and management
- Critical for consensus reliability
2. RPC Backbone
- RPC nodes in ALL 42 regions for core backbone
- Internally networked for high availability
- Critical infrastructure component
- Same VM size (
Standard_D8s_v6) across all regions
3. Flexible Distribution
- System nodes: Required in all regions (AKS)
- Sentry nodes: Distributed based on quotas and needs
- Allows optimization per region
Deployment Configuration
The configuration is defined in terraform/multi-region-global.tf:
- Uses
local.standard_validator_vm_size = "Standard_D4_v2"for all validators - Uses
local.standard_rpc_vm_size = "Standard_D8s_v6"for all RPC nodes - Automatically generates configuration for all 42 regions
- Ensures consistency across all regions
Monitoring
Validator Monitoring
- Monitor all 42 validator nodes
- Ensure all use
Standard_D4_v2 - Track consensus health across regions
- Alert on any validator VM size deviations
RPC Backbone Monitoring
- Monitor all 42 RPC nodes
- Ensure all use
Standard_D8s_v6 - Track internal networking health
- Monitor cross-region connectivity
Benefits
- Consistent Validators: Same VM size ensures uniform behavior
- Resilient Backbone: RPC nodes in all regions for redundancy
- Global Coverage: 42 regions provide worldwide presence
- Flexible Scaling: System/sentry nodes can be adjusted per region
- High Availability: Geographic redundancy across all regions