- 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.
9.1 KiB
Decision Logic Tree Documentation
Overview
The configuration tool uses a comprehensive decision logic tree to prevent erroneous configurations and guide users through valid configuration paths.
Decision Trees
1. Validator Count Decision Tree
Validator Count
├── 1 validator
│ └── ⚠ Warning: Centralized network, not suitable for production
│ └── User confirmation required
├── 2 validators
│ └── ⚠ Warning: Risk of consensus deadlock
│ └── User confirmation required
├── 3 validators
│ └── ⚠ Warning: Can tolerate 1 failure, recommend 4+
│ └── User confirmation required
├── Even number (4, 6, 8, ...)
│ └── ⚠ Warning: Can cause consensus issues
│ └── User confirmation required
└── Odd number (5, 7, 9, ...)
└── ✅ Recommended for production
2. Network Architecture Decision Tree
Network Architecture
├── Sentries = 0
│ └── ⚠ Warning: Validators exposed directly
│ └── User confirmation required
├── Sentries < Validators
│ └── ⚠ Warning: May cause connectivity issues
│ └── Recommend: Sentries >= Validators
└── Sentries >= Validators
└── ✅ Recommended configuration
3. RPC Configuration Decision Tree
RPC Configuration
├── RPC Nodes = 0
│ └── ⚠ Warning: No public RPC access
│ └── User confirmation required
├── RPC Enabled on Validators
│ └── ⚠ Security Risk: Validators exposed
│ └── User confirmation required (not recommended)
├── P2P Enabled on RPC Nodes
│ └── ⚠ Security Risk: RPC nodes exposed to network
│ └── User confirmation required (not recommended)
└── RPC Enabled on RPC Nodes, P2P Disabled
└── ✅ Recommended configuration
4. Security Configuration Decision Tree
Security Configuration
├── CORS = '*'
│ └── ⚠ Security Risk: Allows all origins
│ └── User confirmation required (not recommended)
├── Host Allowlist = '0.0.0.0' or '*'
│ └── ⚠ Security Risk: Allows all hosts
│ └── User confirmation required (not recommended)
├── RPC Enabled without CORS or Host Restrictions
│ └── ⚠ Security Risk: Unrestricted access
│ └── Recommend: Add restrictions
└── CORS and Host Restrictions Configured
└── ✅ Recommended configuration
5. Deployment Type Decision Tree
Deployment Type
├── VM Deployment
│ ├── Individual VMs
│ │ └── ✅ Full control, manual scaling
│ ├── VM Scale Sets
│ │ └── ✅ Auto-scaling, load balancing
│ └── Large Deployment (>50 nodes)
│ └── ⚠ Warning: Consider VM Scale Sets for cost optimization
├── AKS Deployment
│ └── ✅ Kubernetes orchestration, auto-scaling
└── Both AKS and VM
└── ✅ Maximum flexibility, higher cost
6. Resource Allocation Decision Tree
Resource Allocation
├── JVM Memory > VM Size Capacity
│ └── ⚠ Warning: Memory exceeds VM capacity
│ └── Recommend: Increase VM size or reduce JVM memory
├── RPC VM Size < Validator VM Size
│ └── ⚠ Warning: RPC nodes need more resources
│ └── Recommend: RPC VM Size >= Validator VM Size
└── Resources Appropriate
└── ✅ Recommended configuration
7. Dependencies Decision Tree
Dependencies
├── Blockscout Enabled, RPC Disabled
│ └── ✗ Error: Blockscout requires RPC
│ └── Fix: Enable RPC or disable Blockscout
├── Monitoring Enabled, No Components Selected
│ └── ⚠ Warning: Monitoring enabled but no components
│ └── Recommend: Enable monitoring components
├── Validator Count Mismatch
│ └── ⚠ Warning: Genesis validators != Node validators
│ └── Fix: Align validator counts
└── Dependencies Satisfied
└── ✅ Recommended configuration
Validation Rules
Genesis Validation
-
Chain ID: Must be between 1 and 2147483647
- Reserved chain IDs (1, 3, 4, 5, 42): Warning
- Chain ID 138: ✅ Recommended
-
Block Period: Must be between 1 and 60 seconds
- < 2 seconds: Warning (may cause instability)
- 2+ seconds: ✅ Recommended
-
Epoch Length: Must be between 1000 and 1000000
- < 10000: Warning (frequent validator set changes)
- 10000+: ✅ Recommended
-
Request Timeout: Must be between 1 and 60 seconds
-
= Block Period: Warning (should be less)
- < Block Period: ✅ Recommended
-
-
Gas Limit: Must be valid hex, between 5000 and max
- Invalid format: Error
- Too low/high: Error
- Valid range: ✅ Recommended
-
Validators: At least 1 required
- < 4: Warning (recommend 4+)
- Even number: Warning (recommend odd)
- Odd number, >= 4: ✅ Recommended
Network Validation
-
Cluster Name: Must be valid Kubernetes name
- Invalid characters: Error
- Too long (>63 chars): Error
- Valid format: ✅ Recommended
-
Resource Group: Must be valid Azure name
- Invalid characters: Error
- Too long (>90 chars): Error
- Valid format: ✅ Recommended
-
VNet Address Space: Must be valid CIDR
- Invalid format: Error
- Valid CIDR: ✅ Recommended
-
Subnets: Must be within VNet, valid CIDR
- Not within VNet: Error
- Invalid CIDR: Error
- Valid configuration: ✅ Recommended
-
Node Counts: Must be >= 0
- Validators = 0: Error
- Sentries = 0: Warning
- RPC = 0: Warning
- All > 0: ✅ Recommended
Besu Configuration Validation
-
Ports: Must be unique, valid range (1-65535)
- Port conflicts: Error
- Privileged ports (<1024): Warning
- Valid ports: ✅ Recommended
-
RPC Configuration:
- Validators with RPC: Warning (security risk)
- RPC nodes without RPC: Error
- RPC nodes with P2P: Warning (security risk)
- Valid configuration: ✅ Recommended
-
CORS Configuration:
- Wildcard '*': Warning (security risk)
- Missing protocol: Warning
- Valid origins: ✅ Recommended
Deployment Validation
-
Deployment Type: Must be 'aks', 'vm', or 'both'
- Invalid type: Error
- Valid type: ✅ Recommended
-
VM Deployment:
- SSH key not found: Error
- Too many regions (>10): Warning
- Valid configuration: ✅ Recommended
-
Large Deployments:
-
50 nodes: Warning (consider VM Scale Sets)
-
100 nodes: Warning (verify necessity)
- Reasonable size: ✅ Recommended
-
Error Handling
Error Levels
-
Errors: Block configuration generation
- Invalid values
- Missing required fields
- Configuration conflicts
-
Warnings: Allow configuration but warn user
- Security risks
- Performance issues
- Best practice violations
-
Info: Informational messages
- Decision tree applied
- Configuration recommendations
Error Resolution
-
Automatic Fixes: Tool attempts to fix common issues
- Missing SSH keys: Generate key
- Validator count mismatch: Align counts
- Port conflicts: Suggest alternative ports
-
User Confirmation: Tool asks user to confirm risky configurations
- Security risks: User must confirm
- Performance issues: User must confirm
- Best practice violations: User must confirm
-
Manual Fixes: User must fix errors manually
- Invalid values: User must correct
- Configuration conflicts: User must resolve
- Missing dependencies: User must provide
Usage Examples
Example 1: Single Validator (Error Prevention)
User: Number of validators: 1
Tool: ⚠ Warning: Single validator - network will be centralized
Tool: Continue with single validator? [y/N]: n
User: Number of validators: 4
Tool: ✅ Configuration accepted
Example 2: RPC Security (Decision Tree)
User: Enable CORS? [y/N]: y
User: CORS origins: *
Tool: ⚠ Warning: CORS wildcard allows all origins
Tool: Continue with wildcard CORS? [y/N]: n
User: CORS origins: https://yourdomain.com
Tool: ✅ Configuration accepted
Example 3: Deployment Type (Decision Tree)
User: Deployment type: vm
User: Number of nodes: 60
Tool: ⚠ Warning: Large VM deployment - consider VM Scale Sets
Tool: Switch to VM Scale Sets? [Y/n]: y
Tool: ✅ Configuration updated to use VM Scale Sets
Best Practices
- Always Review Warnings: Warnings indicate potential issues
- Confirm Security Risks: Never ignore security warnings
- Validate Configuration: Run validation before deploying
- Test Configuration: Test in dev environment first
- Document Changes: Document any manual configuration changes