Logo Aflos Aflos Documentation aflos.xyz
Dokumentasi/Whitepaper

Vesting & penguncian

Arsitektur satu kontrak per kunci.

Penguncian memakai pola satu kontrak per kunci. Setiap kali Anda mengunci, sebuah kontrak baru diterbitkan khusus untuk kunci itu — jadi setiap jadwal punya alamatnya sendiri yang bisa diperiksa siapa saja tanpa perlu membaca logika kontrak besar.

Pabrik dan gudang

AflosVestingFactory            pabrik, tanpa owner
   |
   +-- AflosVestingVault       satu kontrak baru per kunci
          parameter IMMUTABLE: token, tokenId, beneficiary,
                               creator, start, cliff, duration, mode
          release() -> HANYA bisa kirim ke beneficiary
Pabrik bolehPabrik tidak boleh
Menerbitkan gudang baruMenyimpan aset, walau sesaat
Memanggil sync() sekali, tepat setelah pengisianMemanggil sync() dua kali
Memicu release() yang tetap mengirim ke beneficiaryMenarik aset dari gudang mana pun
 Mengubah jadwal yang sudah jadi

Parameter jadwal

ParameterArti
startKapan hitungan mulai. 0 berarti sekarang. Boleh di masa lalu.
cliffMasa tunggu. Sebelum start + cliff, 0% bisa ditarik.
durationLama pelepasan linear. 0 berarti terbuka penuh di akhir cliff.
modeAfterCliff: linear setelah cliff. Retroactive: linear dihitung dari start.
cliff 12 bulan + duration 36 bulan + AfterCliff
   -> 0% sampai bulan 12, lalu linear, 100% di bulan 48

cliff 12 bulan + duration 48 bulan + Retroactive
   -> 25% tepat di bulan 12, lalu linear, 100% di bulan 48

Menarik aset

// menarik satu kunci
AflosVestingVault(vault).release();

// lewat pabrik
factory.release(id);
factory.releaseBatch([0, 1, 2]);

// membaca
factory.vaultAt(id);          // alamat gudang
factory.vaultsOf(beneficiary); // semua gudang milik seseorang

release() boleh dipanggil siapa saja. Asetnya selalu dikirim ke beneficiary yang tercatat, jadi memicunya tidak memberi keuntungan apa pun bagi pemanggil. Ini disengaja: kalau penerima sedang tidak aktif, siapa pun bisa membantu melepas.

🛑
Jangan kirim aset langsung ke alamat gudang. Hanya penguncian lewat pabrik yang tercatat sebagai jadwal. Aset yang masuk lewat transfer biasa tidak terikat jadwal dan tidak bisa dikeluarkan lagi, karena kontraknya memang tidak punya fungsi rescue.