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)
closeAndCalc(grossProfit, riskLevel, brokerId)— cierra ciclo y calcula splitssettleCycleForLPs(cycleId, [lpIds])— procesa LPs por batches de 50/100/200cashRequired(cycleId)[view] — devuelve USDC necesario del operatordepositAndDistribute(cycleId, cash)— operator deposita, contrato distribuyedistributeForCycle(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.
