Logo Aflos Aflos Documentation aflos.xyz
Dokumentasi/Whitepaper

Vesting e bloqueio

A arquitetura de um contrato por bloqueio.

O bloqueio usa o padrão de um contrato por bloqueio. Cada vez que você bloqueia algo, um contrato novo é emitido especificamente para aquele bloqueio — assim cada plano tem seu próprio endereço que qualquer pessoa pode inspecionar sem ler a lógica de um contrato grande.

Fábrica e cofre

AflosVestingFactory            fábrica, sem proprietário
   |
   +-- AflosVestingVault       um contrato novo por bloqueio
          parâmetros IMUTÁVEIS: token, tokenId, beneficiary,
                                creator, start, cliff, duration, mode
          release() -> SÓ pode enviar ao beneficiário
A fábrica podeA fábrica não pode
Emitir um cofre novoGuardar ativos, nem por um instante
Chamar sync() uma vez, logo após o aporteChamar sync() duas vezes
Acionar release(), que ainda envia ao beneficiárioSacar ativos de qualquer cofre
 Alterar um plano que já existe

Parâmetros do plano

ParâmetroSignificado
startQuando a contagem começa. 0 significa agora. Uma data passada é permitida.
cliffPeríodo de espera. Antes de start + cliff, 0% pode ser liberado.
durationDuração da liberação linear. 0 significa liberação total no fim do cliff.
modeAfterCliff: linear depois do cliff. Retroactive: linear contado a partir de start.
cliff 12 meses + duration 36 meses + AfterCliff
   -> 0% até o mês 12, depois linear, 100% no mês 48

cliff 12 meses + duration 48 meses + Retroactive
   -> 25% exatamente no mês 12, depois linear, 100% no mês 48

Liberando os ativos

// liberar um bloqueio
AflosVestingVault(vault).release();

// pela fábrica
factory.release(id);
factory.releaseBatch([0, 1, 2]);

// consultar
factory.vaultAt(id);           // o endereço do cofre
factory.vaultsOf(beneficiary); // todos os cofres de alguém

release() pode ser chamado por qualquer pessoa. Os ativos vão sempre para o beneficiary registrado, então acionar não dá nenhuma vantagem a quem chamou. Isso é proposital: se o destinatário estiver inativo, qualquer um pode ajudar a liberar os ativos.

🛑
Nunca envie ativos diretamente para o endereço de um cofre. Só o bloqueio pela fábrica fica registrado como plano. Ativos que chegam por um transfer comum não estão ligados a nenhum plano e nunca poderão ser retirados, porque o contrato deliberadamente não tem função de resgate.