- 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.
8.0 KiB
8.0 KiB
36-Region Global Deployment Blueprint
Overview
This document defines the latency-aware and balanced 36-region global deployment blueprint for the DeFi Oracle Meta Mainnet (ChainID 138).
Design Principles:
- Latency-aware: Regions grouped into low-latency "rings" for consensus optimization
- Balanced: Even geographic distribution across all continents
- Quota-optimized: All regions within 10 vCPU per region limit
- Practical: All regions are non-US commercial Azure regions
🌍 36-Region Workload Set (Non-US Commercial)
Geographic Distribution
Europe (14 regions)
- West Europe (
westeurope) - Primary - North Europe (
northeurope) - Primary - UK South (
uksouth) - Primary - UK West (
ukwest) - France Central (
francecentral) - Primary - Germany West Central (
germanywestcentral) - Primary - Switzerland North (
switzerlandnorth) - Primary - Sweden Central (
swedencentral) - Norway East (
norwayeast) - Poland Central (
polandcentral) - Spain Central (
spaincentral) - Italy North (
italynorth) - Austria East (
austriaeast) - Belgium Central (
belgiumcentral)
Asia Pacific incl. India (13 regions)
- East Asia (
eastasia) - Primary - Southeast Asia (
southeastasia) - Primary - Japan East (
japaneast) - Primary - Japan West (
japanwest) - Korea Central (
koreacentral) - Korea South (
koreasouth) - Australia East (
australiaeast) - Primary - Australia Southeast (
australiasoutheast) - New Zealand North (
newzealandnorth) - Central India (
centralindia) - Primary - West India (
westindia) - Indonesia Central (
indonesiacentral) - Malaysia West (
malaysiawest)
Middle East (3 regions)
- UAE North (
uaenorth) - Qatar Central (
qatarcentral) - Israel Central (
israelcentral)
Americas (Non-US) (5 regions)
- Canada Central (
canadacentral) - Primary - Canada East (
canadaeast) - Brazil South (
brazilsouth) - Chile Central (
chilecentral) - Mexico Central (
mexicocentral)
Africa (1 region)
- South Africa North (
southafricanorth)
Total: 14 + 13 + 3 + 5 + 1 = 36 regions ✅
🎯 Latency-Aware Architecture
The 36 regions are organized into four low-latency rings:
Ring 1: Europe (14 regions)
- Very tight RTT between NL, IE, DE, FR, UK, etc.
- Primary regions: West Europe, North Europe, France Central, Germany West Central, UK South, Switzerland North
- Suitable for fast consensus rounds
Ring 2: Asia Pacific (13 regions)
- Japan–Korea–SE Asia–India–Australia cluster
- Primary regions: East Asia, Southeast Asia, Japan East, Australia East, Central India
- Optimized for APAC region performance
Ring 3: Middle East + Africa (4 regions)
- UAE, Qatar, Israel, South Africa
- Provides regional coverage and backup validators
Ring 4: Americas Non-US (5 regions)
- Canada, Brazil, Chile, Mexico
- Primary region: Canada Central
- Western hemisphere coverage
Consensus Strategy
- 60-70% of producing validators in Europe + Asia rings (lower latency)
- 30-40% geo-distributed backup validators across all rings
- Block times: 2-4s (QBFT/IBFT2) with geo-aware committee selection
📋 Node Distribution Blueprint
Design Rules
- Each node = 2 vCPUs
- Each region must stay ≤ 10 vCPUs
- Even, supportable patterns across all regions
Allocation Strategy
Every region: 2 System Nodes
- 2 × 2 vCPUs = 4 vCPUs per region
Validators:
- 12 "primary" regions: 2 Validators each (4 vCPUs)
- Remaining 24 regions: 1 Validator each (2 vCPUs)
Per-Region Totals
Primary 12 regions:
- 2 System + 2 Validators = 4 VMs, 8 vCPUs ✅
Other 24 regions:
- 2 System + 1 Validator = 3 VMs, 6 vCPUs ✅
📊 Primary Regions (2 Validators Each - 8 vCPUs)
| Region | Geography | System Nodes | Validator Nodes | Total VMs | Total vCPUs |
|---|---|---|---|---|---|
| West Europe | Europe | 2 | 2 | 4 | 8 |
| North Europe | Europe | 2 | 2 | 4 | 8 |
| France Central | Europe | 2 | 2 | 4 | 8 |
| Germany West Central | Europe | 2 | 2 | 4 | 8 |
| UK South | Europe | 2 | 2 | 4 | 8 |
| Switzerland North | Europe | 2 | 2 | 4 | 8 |
| East Asia | APAC | 2 | 2 | 4 | 8 |
| Southeast Asia | APAC | 2 | 2 | 4 | 8 |
| Japan East | APAC | 2 | 2 | 4 | 8 |
| Australia East | APAC | 2 | 2 | 4 | 8 |
| Central India | APAC | 2 | 2 | 4 | 8 |
| Canada Central | Americas | 2 | 2 | 4 | 8 |
Subtotal (Primary 12):
- System Nodes: 12 × 2 = 24
- Validator Nodes: 12 × 2 = 24
- Total VMs: 12 × 4 = 48
- Total vCPUs: 48 × 2 = 96
📊 Remaining Regions (1 Validator Each - 6 vCPUs)
All of these get: 2 System, 1 Validator → 3 VMs, 6 vCPUs.
| Region | Geography | System Nodes | Validator Nodes | Total VMs | Total vCPUs |
|---|---|---|---|---|---|
| UK West | Europe | 2 | 1 | 3 | 6 |
| Sweden Central | Europe | 2 | 1 | 3 | 6 |
| Norway East | Europe | 2 | 1 | 3 | 6 |
| Poland Central | Europe | 2 | 1 | 3 | 6 |
| Spain Central | Europe | 2 | 1 | 3 | 6 |
| Italy North | Europe | 2 | 1 | 3 | 6 |
| Austria East | Europe | 2 | 1 | 3 | 6 |
| Belgium Central | Europe | 2 | 1 | 3 | 6 |
| Japan West | APAC | 2 | 1 | 3 | 6 |
| Korea Central | APAC | 2 | 1 | 3 | 6 |
| Korea South | APAC | 2 | 1 | 3 | 6 |
| Australia Southeast | APAC | 2 | 1 | 3 | 6 |
| New Zealand North | APAC | 2 | 1 | 3 | 6 |
| West India | APAC | 2 | 1 | 3 | 6 |
| Indonesia Central | APAC | 2 | 1 | 3 | 6 |
| Malaysia West | APAC | 2 | 1 | 3 | 6 |
| UAE North | Middle East | 2 | 1 | 3 | 6 |
| Qatar Central | Middle East | 2 | 1 | 3 | 6 |
| Israel Central | Middle East | 2 | 1 | 3 | 6 |
| Canada East | Americas | 2 | 1 | 3 | 6 |
| Brazil South | Americas | 2 | 1 | 3 | 6 |
| Chile Central | Americas | 2 | 1 | 3 | 6 |
| Mexico Central | Americas | 2 | 1 | 3 | 6 |
| South Africa North | Africa | 2 | 1 | 3 | 6 |
Subtotal (Remaining 24):
- System Nodes: 24 × 2 = 48
- Validator Nodes: 24 × 1 = 24
- Total VMs: 24 × 3 = 72
- Total vCPUs: 72 × 2 = 144
🔚 Global Totals (36 Regions)
- System Nodes: 24 + 48 = 72 ✅
- Validator Nodes: 24 + 24 = 48 ✅
- Total VMs: 48 + 72 = 120 ✅
- Total vCPUs: 96 + 144 = 240 ✅
- All regions ≤ 8 vCPUs (< 10 quota limit) ✅
⚙️ West Europe Admin-Only Variant
If West Europe should be purely for admin/control plane (no workload nodes):
Re-allocation Strategy
- Set West Europe to 0/0 (no System/Validator nodes)
- Re-assign its nodes:
- +1 System +1 Validator → North Europe (8 → 10 vCPUs)
- +1 System +1 Validator → Belgium Central (6 → 10 vCPUs)
Updated Totals (Admin Variant)
| Region | System Nodes | Validator Nodes | Total vCPUs |
|---|---|---|---|
| West Europe | 0 | 0 | 0 (admin only) |
| North Europe | 3 | 3 | 12 ❌ (exceeds quota) |
| Belgium Central | 3 | 2 | 10 ✅ |
Note: North Europe would exceed 10 vCPU limit. Alternative allocation needed.
Better Re-allocation:
- +1 System +1 Validator → Belgium Central (6 → 10 vCPUs)
- +1 System +1 Validator → Netherlands (if available) or split:
- +1 System → Sweden Central (6 → 8 vCPUs)
- +1 Validator → Poland Central (6 → 8 vCPUs)
🎯 Next Steps
- Map Kubernetes clusters & pod densities onto this 36-region layout
- Define QBFT/IBFT2 geo-aware committee configuration:
- Primary regions (60-70% producing validators)
- Secondary regions (30-40% backup validators)
- Latency-optimized consensus rounds
- Create Terraform configuration for all 36 regions
- Generate deployment scripts with region-specific configurations
- Implement geo-aware validator selection logic