On this page
Technical Documentation
← API Usage | Deployment Guide →
Table of Contents
Contract Architecture
Diagram source
graph TB
%% Core Components
subgraph Core["Core Components"]
Factory["Factory"]
Registry["Registry"]
Config["Config"]
end
%% Pool Types
subgraph Pools["Pool Types"]
Structured["Structured"]
Cross["Cross"]
Passive["Passive"]
end
%% Risk Components
subgraph Risk["Risk Components"]
Calculator["Calculator"]
Validator["Validator"]
Monitor["Monitor"]
end
%% Oracle Network
subgraph Oracle["Oracle Network"]
Price["Price"]
RiskOracle["Risk"]
ValidatorOracle["Validator"]
end
%% Connections
Core --> Pools
Pools --> Risk
Risk --> Oracle
Core Interfaces
Pool System
interface IPoolBase {
enum PoolType { STRUCTURED, CROSS, PASSIVE_STRUCTURED, PASSIVE_CROSS }
struct PoolConfig {
uint256 poolId; // Unique identifier
uint256 capacity; // Maximum capacity
uint256 minParticipation; // Minimum participation
uint256 maxParticipation; // Maximum participation
bool isActive; // Active status
bytes extraData; // Additional config
}
}
Risk System
Diagram source
graph TB
%% Risk Components
subgraph RiskComponents["Risk Components"]
BR["Base Risk"] --> TR["Temporal Risk"]
TR --> NR["Network Risk"]
NR --> SR["Systemic Risk"]
end
%% Risk Flow
subgraph RiskFlow["Risk Flow"]
IN["Input"] --> PROC["Processing"]
PROC --> VAL["Validation"]
VAL --> OUT["Output"]
end
%% Connections
RiskComponents --> RiskFlow
Oracle Integration
Diagram source
sequenceDiagram
participant U as User
participant P as Pool
participant O as Oracle
participant R as Risk Engine
U->>P: Request Risk Assessment
P->>O: Query Market Data
O->>P: Return Price Data
P->>R: Calculate Risk Score
R->>P: Return Risk Metrics
P->>U: Provide Assessment
Risk System
Risk Calculation Flow
Diagram source
graph TB
%% Input Data
subgraph Input["Input Data"]
Market["Market Data"]
Pool["Pool Data"]
Risk["Risk Parameters"]
end
%% Processing
subgraph Process["Processing"]
Calculate["Calculate"]
Validate["Validate"]
Optimize["Optimize"]
end
%% Output
subgraph Output["Output"]
Score["Risk Score"]
Metrics["Metrics"]
Alerts["Alerts"]
end
%% Connections
Input --> Process
Process --> Output
Risk Propagation
interface IRiskPropagation {
enum PropagationType {
DIRECT,
BUNDLED,
FRACTIONAL,
PARAMETRIC,
SYNTHETIC,
CROSS_CHAIN
}
struct PropagationConfig {
uint256 sourceChainId;
uint256 targetChainId;
uint256 minAmount;
uint256 maxAmount;
uint256 validationThreshold;
uint256 timeoutPeriod;
bool isPaused;
}
}
Oracle System
Oracle Architecture
Diagram source
graph TB
%% External Sources
subgraph External["External Sources"]
API["API"]
Feed["Feed"]
Chain["Chain"]
end
%% Oracle Network
subgraph Network["Oracle Network"]
Node["Node"]
Aggregator["Aggregator"]
Router["Router"]
end
%% Validation
subgraph Validation["Validation"]
Verify["Verify"]
Check["Check"]
Monitor["Monitor"]
end
%% Connections
External --> Network
Network --> Validation
Oracle Implementation
interface IGNNPriceOracle {
struct RiskMetrics {
uint256 baseRisk;
uint256 temporalRisk;
uint256 correlationRisk;
uint256 concentrationRisk;
uint256 volatilityRisk;
uint256 modelRisk;
}
function calculateRisk(
uint256 poolId,
uint256 amount,
bytes calldata riskData
) external view returns (RiskMetrics memory);
}
Security Model
Access Control
Diagram source
graph TB
%% Roles
subgraph Roles["Roles"]
Admin["Admin"]
Operator["Operator"]
User["User"]
end
%% Permissions
subgraph Permissions["Permissions"]
Create["Create"]
Modify["Modify"]
View["View"]
end
%% Connections
Roles --> Permissions
Security Features
| Feature | Description | Implementation |
|---|---|---|
| Access Control | Role-based access control | OpenZeppelin AccessControl |
| Pausable | Emergency pause functionality | OpenZeppelin Pausable |
| Upgradeable | Contract upgradeability | OpenZeppelin Upgradeable |
| Reentrancy Protection | Guard against reentrancy | OpenZeppelin ReentrancyGuard |
| Oracle Security | Decentralized oracle network | Chainlink Integration |
Gas Optimization
Optimization Techniques
Diagram source
graph TB
%% Storage
subgraph Storage["Storage"]
PS["Packed Storage"]
MS["Minimal Storage"]
CS["Cached Storage"]
end
%% Computation
subgraph Computation["Computation"]
BC["Batch Calls"]
PC["Parallel Computation"]
LC["Local Computation"]
end
%% Connections
Storage --> Computation