CAPA 3: INDICE NACIONAL
┌─────────────────────────────────────────────────────┐
│ VZ_ECONOMIA = Σ (peso_cat × Indice_Categoria) │
└─────────────────────────────────────────────────────┘
▲ ▲ ▲ ▲
│ │ │ │
CAPA 2: INDICES DE CATEGORIA
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ IDX_AGRI │ │ IDX_PESC │ │ IDX_MIN │ │ IDX_ENER │ ...
│Σ(w×inst) │ │Σ(w×inst) │ │Σ(w×inst) │ │Σ(w×inst) │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
▲ ▲ ▲ ▲
│ │ │ │
CAPA 1: INSTRUMENTOS INDIVIDUALES
MANGO_g BOCACHICO_g ORO_g PETROLEO_g POLLO_g CASABE_g ...
Cada instrumento es un CommodityToken (extiende GoldTokenBase):
pricePair (bytes32) en el OracleNo cambia nada aqui. Los instrumentos ya funcionan.
Un indice de categoria es un token ERC20 (IndexToken) cuyo precio refleja el promedio ponderado de los precios de sus instrumentos componentes.
Precio_Indice_Categoria = Σ (peso_i × Precio_Instrumento_i)
Cada categoria tiene un CategoryIndex que define:
struct Component {
address token; // direccion del InstrumentToken
bytes32 pricePair; // par en el Oracle (ej: "MANGO/USD")
uint256 weightBps; // peso en basis points (10000 = 100%)
bool active; // se puede desactivar sin recompilar
}
struct CategoryIndex {
string name; // "Indice Agricola Venezolano"
string symbol; // "IDX_AGRI"
bytes32 indexPair; // par sintetico en Oracle (ej: "IDX_AGRI/USD")
Component[] components;
uint256 totalWeightBps; // suma de pesos (debe ser 10000)
uint256 rebalancePeriod; // segundos entre rebalanceos
uint256 lastRebalance; // timestamp del ultimo rebalanceo
}
El precio del indice NO se calcula on-chain en tiempo real (gas costoso).
En cambio:
1. Oracle Centralizado (API PHP) calcula el valor del indice off-chain
2. Push al Oracle on-chain: oracle.updatePrice("IDX_AGRI/USD", valor)
3. IndexToken lee el precio del Oracle igual que cualquier CommodityToken
Esto reutiliza la infraestructura existente sin nuevos patrones.
El usuario deposita BNB en el IndexToken y recibe tokens del indice:
precio_indice del Oracletokens_a_mintear = (BNB_depositado × (1 - fee)) / precio_indiceEl tenedor del indice NO posee los instrumentos individuales — posee un token que refleja el valor ponderado de la canasta. Es un derivado sintetico con respaldo en BNB.
Los pesos se ajustan periodicamente segun cambios en la produccion real:
Evento de rebalanceo:
1. Oracle API recalcula pesos basado en datos de produccion actualizados
2. Owner llama a rebalance(nuevos_pesos) en el contrato
3. El contrato actualiza weightBps de cada componente
4. Se emite evento Rebalanced(nuevos_pesos, timestamp)
Frecuencia sugerida: trimestral (cada 90 dias).
El indice nacional es un IndexToken cuyos componentes son indices de categoria (no instrumentos individuales).
Precio_Indice_Nacional = Σ (peso_cat × Precio_Indice_Categoria)
struct NationalIndex {
string name; // "Indice de Economia Venezolana"
string symbol; // "VZ_ECON"
bytes32 indexPair; // "VZ_ECON/USD"
CategoryComponent[] categories;
}
struct CategoryComponent {
address indexToken; // direccion del IndexToken de categoria
bytes32 categoryPair; // "IDX_AGRI/USD"
uint256 weightBps; // peso de la categoria en la economia nacional
bool active;
}
Basada en la contribucion al PIB real de Venezuela (aproximada):
Total: 100% (10000 bps)
Principio: El sistema solo trabaja con BNB (activo puente) y derivados
creados por el ecosistema. Criptos externas (BTC, ETH, SOL, USDT, etc.) y
tokens de terceros (XAUT) quedan excluidos — son ruido especulativo, no
economia real.
Estos pesos se actualizan cuando cambian las condiciones economicas reales.
Para un indice con N componentes:
Valor_Indice = Σ(i=1..N) [ peso_i × precio_i ]
donde:
peso_i = weightBps_i / 10000
precio_i = Oracle.getPrice(pricePair_i).price
Precio IDX_AGRI/USD = $2.64
Precio VZ_ECON/USD = $351.14
1. Debe existir como token activo en BSC (CommodityToken desplegado)
2. Debe tener precio en el Oracle (pricePair registrado y valido)
3. Debe tener volumen de produccion real documentado
4. No puede tener peso > 25% del indice (diversificacion obligatoria)
5. Minimo 3 componentes por indice de categoria
1. Debe tener su IndexToken desplegado y activo
2. Debe tener precio en el Oracle (indexPair registrado)
3. No puede tener peso > 35% del indice nacional
4. Minimo 3 categorias en el indice nacional
OFF-CHAIN ON-CHAIN
───────── ────────
API Oracle Centralizado (PHP)
├── rates.php → precios FIAT/crypto
├── commodities.php → precios commodities
├── indices.php (NUEVO)→ calcula valor de cada indice
│ ├── Lee precios de componentes
│ ├── Aplica pesos del manifest
│ ├── Calcula valor ponderado
│ └── Retorna JSON: { "IDX_AGRI/USD": 264, "VZ_ECON/USD": 29333 }
│
└── Push al Oracle on-chain
├── oracle.updatePrice("IDX_AGRI/USD", 264000000) // 6 decimales
└── oracle.updatePrice("VZ_ECON/USD", 29333000000)
Oracle.sol (BSC)
├── prices["MANGO/USD"] = 1200000 ($1.20)
├── prices["IDX_AGRI/USD"] = 2640000 ($2.64)
└── prices["VZ_ECON/USD"] = 293330000 ($293.33)
IndexToken.sol (BSC)
├── Lee precio de su indexPair del Oracle
├── Mintea tokens proporcional al BNB depositado
└── Fee 1% → Vault → GOLDVE
Define la estructura de componentes y metodos comunes.
Extiende GoldTokenBase. Es un ERC20 normal cuyo pricePair es el par sintetico del indice. No necesita logica especial — reutiliza todo el sistema existente.
Despliega IndexToken para cada categoria, registrando sus componentes y pesos.
Despliega el IndexToken nacional, registrando los indices de categoria como componentes.
Registro on-chain de todos los indices y sus componentes para auditoria.
/api/indices.php — calcula y retorna el valor de todos los indices:
{
"status": "success",
"data": [
{
"symbol": "IDX_AGRI",
"name": "Indice Agricola Venezolano",
"pair": "IDX_AGRI/USD",
"value": 2.64,
"components": [
{"symbol": "MAIZ", "weight": 0.20, "price": 5.50, "contribution": 1.10},
{"symbol": "ARROZ", "weight": 0.15, "price": 0.80, "contribution": 0.12}
],
"lastRebalance": "2026-03-31"
},
{
"symbol": "VZ_ECON",
"name": "Indice de Economia Venezolana",
"pair": "VZ_ECON/USD",
"value": 293.33,
"categories": [
{"symbol": "IDX_ENER", "weight": 0.30, "value": 75.00, "contribution": 22.50},
{"symbol": "IDX_MIN", "weight": 0.15, "value": 1800.00, "contribution": 270.00}
]
}
]
}
1. Reutiliza infraestructura existente: IndexToken es un GoldTokenBase mas
2. Calculo off-chain: el Oracle API hace el trabajo pesado, on-chain solo almacena
3. Auditable: los componentes y pesos estan en el contrato, verificables
4. Rebalanceable: el owner ajusta pesos sin recompilar
5. Componible: el indice nacional es un indice de indices
6. Transparente: cualquier puede verificar como se calcula el valor
7. Gas eficiente: una sola llamada al Oracle por indice
INDICE_MANIFEST.json con composicion de todas las categoriasIIndex.sol + IndexToken.solCategoryIndexFactory.solNationalIndexFactory.solapi/indices.php (calculo off-chain)Metodo v1.0 — Ecosistema Criptoinversiones
El indice nacional es el termometro de la economia real venezolana tokenizada.