Docs/Technical reference
On this page

Technical Documentation

← API Usage | Deployment Guide →

Table of Contents

Contract Architecture

System diagram
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

System diagram
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

System diagram
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

System diagram
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

System diagram
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

System diagram
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

System diagram
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

Next Steps


Need help? Join our Discord | Read our Documentation

Search concepts, APIs, pools, and integration guides.