Files
smom-dbis-138/docs/architecture/SERVICES_ARCHITECTURE.md
defiQUG 1fb7266469 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.
2025-12-12 14:57:48 -08:00

252 lines
6.7 KiB
Markdown

# Services Architecture
**Last Updated**: 2025-01-27
**Status**: Active
This document describes the architecture of off-chain services that support the DeFi Oracle Meta Mainnet.
## Table of Contents
- [Overview](#overview)
- [Oracle Publisher Service](#oracle-publisher-service)
- [CCIP Monitor Service](#ccip-monitor-service)
- [Financial Tokenization Service](#financial-tokenization-service)
- [Service Deployment](#service-deployment)
- [Service Monitoring](#service-monitoring)
## Overview
The network includes several off-chain services that provide critical functionality:
1. **Oracle Publisher** - Fetches and publishes oracle data
2. **CCIP Monitor** - Monitors CCIP cross-chain messages
3. **Financial Tokenization** - Tokenization service for financial assets
## Oracle Publisher Service
### Purpose
The Oracle Publisher service fetches price data from multiple sources, aggregates it, and publishes updates to the blockchain oracle aggregator contract.
### Architecture
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Data Source │────▶│ Oracle │────▶│ Aggregator │
│ 1 │ │ Publisher │ │ Contract │
└─────────────┘ └─────────────┘ └─────────────┘
┌─────────────┐ │
│ Data Source │───────────┘
│ 2 │
└─────────────┘
```
### Components
- **Data Fetcher**: Fetches data from multiple sources
- **Aggregator**: Calculates median from sources
- **Publisher**: Publishes updates to blockchain
- **Metrics**: Prometheus metrics for monitoring
### Configuration
**Environment Variables**:
- `RPC_URL` - Blockchain RPC endpoint
- `AGGREGATOR_ADDRESS` - Oracle aggregator contract address
- `PRIVATE_KEY` - Private key for signing transactions
- `HEARTBEAT` - Update frequency (seconds)
- `DEVIATION_THRESHOLD` - Price deviation threshold (%)
### Deployment
```bash
# Deploy oracle publisher
kubectl apply -f services/oracle-publisher/k8s/deployment.yaml
# Verify deployment
kubectl get pods -l app=oracle-publisher -n besu-network
```
### Monitoring
- **Metrics**: Available on port 8000
- **Logs**: Available via kubectl logs
- **Health**: HTTP health endpoint
## CCIP Monitor Service
### Purpose
The CCIP Monitor service monitors cross-chain messages sent via Chainlink CCIP, tracks message status, and provides alerts for failed messages.
### Architecture
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ CCIP Router│────▶│ CCIP │────▶│ Alerting │
│ Contract │ │ Monitor │ │ System │
└─────────────┘ └─────────────┘ └─────────────┘
```
### Features
- Message tracking
- Status monitoring
- Failure detection
- Alert generation
- Metrics collection
### Deployment
```bash
# Deploy CCIP monitor
kubectl apply -f services/ccip-monitor/k8s/deployment.yaml
```
## Financial Tokenization Service
### Purpose
The Financial Tokenization service provides tokenization capabilities for financial assets, integrating with Firefly and Cacti for cross-chain operations.
### Architecture
```
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Financial │────▶│ Firefly │────▶│ Blockchain │
│ Assets │ │ (Tokenize) │ │ (ChainID │
└─────────────┘ └─────────────┘ │ 138) │
└─────────────┘
```
### Features
- Asset tokenization
- ISO-20022 support
- SWIFT FIN integration
- Cross-chain bridging via Cacti
## Service Deployment
### Prerequisites
- Kubernetes cluster running
- RPC endpoint accessible
- Private keys configured
- Environment variables set
### Deployment Steps
1. **Configure Environment**
```bash
# Set environment variables
export RPC_URL="https://rpc.d-bis.org"
export AGGREGATOR_ADDRESS="0x..."
export PRIVATE_KEY="0x..."
```
2. **Deploy Services**
```bash
# Deploy all services
kubectl apply -f services/oracle-publisher/k8s/
kubectl apply -f services/ccip-monitor/k8s/
kubectl apply -f services/financial-tokenization/k8s/
```
3. **Verify Deployment**
```bash
# Check service status
kubectl get pods -n besu-network -l app=oracle-publisher
kubectl get pods -n besu-network -l app=ccip-monitor
```
## Service Monitoring
### Metrics
All services expose Prometheus metrics:
- **Oracle Publisher**: `oracle_updates_sent_total`, `oracle_update_errors_total`
- **CCIP Monitor**: `ccip_messages_tracked`, `ccip_message_failures`
- **Financial Tokenization**: `tokenization_requests`, `tokenization_success`
### Logs
View service logs:
```bash
# Oracle Publisher logs
kubectl logs -l app=oracle-publisher -n besu-network -f
# CCIP Monitor logs
kubectl logs -l app=ccip-monitor -n besu-network -f
```
### Health Checks
All services include health check endpoints:
```bash
# Check service health
kubectl exec -n besu-network <pod-name> -- curl http://localhost:8080/health
```
## Service Configuration
### Oracle Publisher Configuration
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: oracle-config
namespace: besu-network
data:
RPC_URL: "https://rpc.d-bis.org"
AGGREGATOR_ADDRESS: "0x..."
HEARTBEAT: "60"
DEVIATION_THRESHOLD: "0.5"
```
### CCIP Monitor Configuration
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ccip-monitor-config
namespace: besu-network
data:
RPC_URL: "https://rpc.d-bis.org"
CCIP_ROUTER_ADDRESS: "0x..."
MONITORING_INTERVAL: "30"
```
## Troubleshooting
### Service Not Starting
1. Check pod status: `kubectl get pods -n besu-network`
2. Check logs: `kubectl logs <pod-name> -n besu-network`
3. Check events: `kubectl get events -n besu-network`
4. Verify configuration: `kubectl get configmap -n besu-network`
### Service Not Updating
1. Check RPC connectivity
2. Verify contract addresses
3. Check private key access
4. Review service logs
## Related Documentation
- [Architecture Documentation](ARCHITECTURE.md)
- [Oracle Operations Runbook](../../runbooks/oracle-operations.md)
- [CCIP Operations Runbook](../../runbooks/ccip-operations.md)
- [Monitoring Setup Guide](../operations/MONITORING_SETUP_GUIDE.md)
---
**Last Updated**: 2025-01-27