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 boleh | Pabrik tidak boleh |
|---|---|
| Menerbitkan gudang baru | Menyimpan aset, walau sesaat |
Memanggil sync() sekali, tepat setelah pengisian | Memanggil sync() dua kali |
Memicu release() yang tetap mengirim ke beneficiary | Menarik aset dari gudang mana pun |
| Mengubah jadwal yang sudah jadi |
Parameter jadwal
| Parameter | Arti |
|---|---|
start | Kapan hitungan mulai. 0 berarti sekarang. Boleh di masa lalu. |
cliff | Masa tunggu. Sebelum start + cliff, 0% bisa ditarik. |
duration | Lama pelepasan linear. 0 berarti terbuka penuh di akhir cliff. |
mode | AfterCliff: 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.
Apakah halaman ini membantu?