Logo Aflos Aflos Documentation aflos.xyz
Dokumentasi/Whitepaper

Vesting y bloqueo

La arquitectura de un contrato por bloqueo.

El bloqueo usa el patrón de un contrato por bloqueo. Cada vez que bloqueas algo, se emite un contrato nuevo específicamente para ese bloqueo — así cada plan tiene su propia dirección que cualquiera puede inspeccionar sin leer la lógica de un contrato grande.

Fábrica y bóveda

AflosVestingFactory            fábrica, sin propietario
   |
   +-- AflosVestingVault       un contrato nuevo por bloqueo
          parámetros INMUTABLES: token, tokenId, beneficiary,
                                 creator, start, cliff, duration, mode
          release() -> SOLO puede enviar al beneficiario
La fábrica puedeLa fábrica no puede
Emitir una bóveda nuevaRetener activos, ni un instante
Llamar a sync() una vez, justo tras el fondeoLlamar a sync() dos veces
Activar release(), que aun así envía al beneficiarioRetirar activos de ninguna bóveda
 Cambiar un plan que ya existe

Parámetros del plan

ParámetroSignificado
startCuándo empieza a contar. 0 significa ahora. Se permite una fecha pasada.
cliffPeriodo de espera. Antes de start + cliff, se puede liberar el 0%.
durationDuración de la liberación lineal. 0 significa liberación total al terminar el cliff.
modeAfterCliff: lineal tras el cliff. Retroactive: lineal contado desde start.
cliff 12 meses + duration 36 meses + AfterCliff
   -> 0% hasta el mes 12, luego lineal, 100% en el mes 48

cliff 12 meses + duration 48 meses + Retroactive
   -> 25% justo en el mes 12, luego lineal, 100% en el mes 48

Liberar los activos

// liberar un bloqueo
AflosVestingVault(vault).release();

// a través de la fábrica
factory.release(id);
factory.releaseBatch([0, 1, 2]);

// consultar
factory.vaultAt(id);           // la dirección de la bóveda
factory.vaultsOf(beneficiary); // todas las bóvedas de alguien

release() puede llamarlo cualquiera. Los activos se envían siempre al beneficiary registrado, así que activarlo no aporta ninguna ventaja a quien lo llama. Es deliberado: si el receptor está inactivo, cualquiera puede ayudar a liberar los activos.

🛑
Nunca envíes activos directamente a la dirección de una bóveda. Solo el bloqueo a través de la fábrica queda registrado como plan. Los activos que llegan por un transfer normal no están ligados a ningún plan y nunca podrán sacarse, porque el contrato carece deliberadamente de función de rescate.