Volver a Docs

Arquitectura

Cómo se conectan los contratos del protocolo

Diagrama de alto nivel


┌──────────────┐
│   Usuario    │ deposita USDC + abre AxKey
└──────┬───────┘
       │
       ▼
┌──────────────┐     ┌──────────────┐
│    Vault     │◄────┤   Trading    │ ciclos 30d
│  (LP, S-s)   │     │ (broker ops) │
└──────┬───────┘     └──────┬───────┘
       │                    │
       │  cycle close       │ distribute
       └────────┬───────────┘
                ▼
        ┌──────────────┐
        │   Treasury   │ pull pattern
        │ (rewards)    │
        └──────┬───────┘
               │  claim
               ▼
        ┌──────────────┐
        │ Usuario USDC │
        └──────────────┘

AxKey (NFT)  ────►  define tier + elegibilidad cascada L1-L6
POI          ────►  gate de claim/withdraw
FoundersContract ►  pools tier extra para Founders
AdminManager ────►  lost cascades + perfFee + budget

Vault — acumulador V2.4

Cada LP acumula share-seconds (capital × tiempo) durante el ciclo. Al cierre, el accumulator pattern hace el reparto en O(1) sin iterar todos los LPs. Fix V2.4 desde V2.3 que era O(n) en gas.

Trading — orchestración del ciclo (5 pasos)

  1. closeAndCalc(grossProfit, riskLevel, brokerId) — cierra ciclo y calcula splits
  2. settleCycleForLPs(cycleId, [lpIds]) — procesa LPs por batches de 50/100/200
  3. cashRequired(cycleId) [view] — devuelve USDC necesario del operator
  4. depositAndDistribute(cycleId, cash) — operator deposita, contrato distribuye
  5. distributeForCycle(cycleId) — settle final, marca ciclo como distribuido

Treasury — pull pattern

Los rewards quedan acumulados en pendingByTokenId[id]. El usuario llama claim(to) o claimByTokenId(id) cuando quiere. Sin transferencias automáticas → cero superficie de reentrancia.

Cascada L1-L6

Distribuye 55% del fee de apertura/upgrade entre 6 uplines del comprador:

L1
20%
L2
15%
L3
10%
L4
5%
L5
3%
L6
2%

Si upline no califica → AdminManager (lost cascades).

POI — gating de operaciones

POI define un requiredLevel global (None/Basic/KYC/Banking). Operaciones gateadas: Treasury.claim, Vault.removeLP, FoundersContract.claim. Modo "abierto" (level 0) desactiva el gate.

Repo público: AxinFy1/axinfy-v2-smartcontracts(tag v2.4). Direcciones desplegadas en /docs/contracts.