
Time lock: koin yang tidak bisa dipindahkan sampai waktu tertentu
Sebagian besar keamanan kripto berkaitan dengan siapa yang bisa membelanjakan: kunci yang mana, berapa banyak tanda tangan. Time lock menambahkan dimensi kedua: kapan. Koin yang terkena time lock tidak bisa dibelanjakan sebelum tanggal atau ketinggian blok yang ditetapkan, siapa pun yang memegang kuncinya.
Kedengarannya seperti fitur khusus, tetapi time lock diam-diam menopang banyak hal di dunia kripto: kanal pembayaran, jadwal vesting, rencana warisan, dan penundaan tata kelola. Memahaminya juga menjelaskan sebuah pilihan desain yang akan Anda temui di sebagian besar dompet.
Dua jenis waktu
Blockchain mengukur waktu dengan dua cara, dan time lock memakai keduanya:
- Waktu absolut. "Tidak sebelum 1 Januari 2030" atau "tidak sebelum blok 1.000.000". Koin terkunci sampai saat itu, lalu berperilaku seperti biasa.
- Waktu relatif. "Tidak sebelum 1.000 blok setelah koin ini diterima." Jam mulai berjalan saat koin dibuat, sehingga setiap setoran memiliki hitung mundurnya sendiri.
Kunci absolut cocok untuk tanggal tetap, seperti cliff pada vesting. Kunci relatif cocok untuk aturan seperti "jika tidak ada orang lain yang bertindak dalam 30 hari, kunci lain ini boleh membelanjakan", pola yang muncul dalam desain pemulihan dan warisan.
Cara Bitcoin melakukannya
Bitcoin memiliki time lock di dua tingkat:
- Tingkat transaksi. Setiap transaksi memiliki kolom
nLockTime. Jika diatur ke waktu atau blok di masa depan, jaringan tidak akan menerima transaksi tersebut sampai saat itu. Ini mengunci transaksinya, bukan koinnya: siapa pun yang memegang kunci masih bisa menandatangani transaksi lain tanpa kunci waktu. - Tingkat skrip. Dua opcode,
OP_CHECKLOCKTIMEVERIFY(absolut) danOP_CHECKSEQUENCEVERIFY(relatif), memungkinkan aturan pembelanjaan sebuah alamat mensyaratkan bahwa waktu tertentu telah berlalu. Keduanya mengunci koinnya: tidak ada transaksi yang dapat membelanjakannya lebih awal, siapa pun yang menandatangani.
Versi tingkat skrip inilah yang benar-benar kuat. Dengannya Anda bisa membuat alamat dengan beberapa jalur pembelanjaan, seperti "2 dari 3 kunci ini kapan saja, atau satu kunci cadangan ini setelah satu tahun".
Cara chain kontrak pintar melakukannya
Di Ethereum dan chain serupa, time lock hanyalah logika kontrak: kontrak membandingkan waktu blok saat ini dengan tenggat yang tersimpan dan menolak bertindak sebelum tenggat itu. Hal ini membuat time lock fleksibel: kontrak vesting yang melepaskan token setiap bulan, sistem tata kelola yang mewajibkan masa tunggu antara lolosnya pemungutan suara dan pelaksanaannya, serta kontrak yang dapat ditingkatkan yang mengumumkan perubahan beberapa hari sebelumnya agar pengguna bisa bereaksi.
Penggunaan terakhir ini penting bagi keamanan. Jeda antara "sebuah kunci admin memutuskan sesuatu" dan "hal itu terjadi" memberi semua orang waktu untuk menyadari perubahan yang berbahaya; ini salah satu pertanyaan yang patut diajukan tentang wewenang peningkatan pada kontrak mana pun.
Kegunaan time lock
- Warisan dan akses darurat. Jalur cadangan yang baru terbuka setelah periode tidak aktif yang lama memungkinkan ahli waris memulihkan dana tanpa bisa menyentuhnya selama Anda masih aktif. Merencanakan warisan sering kali bermuara pada aturan semacam ini.
- Kunci pemulihan. Kunci pemulihan yang bisa bertindak sendiri, tetapi hanya setelah penundaan, jauh lebih tidak berbahaya jika dicuri: pemiliknya punya waktu untuk memindahkan dana lebih dulu.
- Kanal pembayaran. Lightning Network mengandalkan time lock relatif untuk memberi setiap pihak jendela waktu guna menggugat upaya kecurangan.
- Vesting dan komitmen. Mengunci token hingga tanggal tertentu membuat sebuah janji ditegakkan oleh chain, bukan oleh kepercayaan.
Kompromi yang harus diterima
Time lock bukannya tanpa biaya:
- Anda pun ikut terkunci. Sebuah kunci tidak bisa membedakan penyerang dari keadaan darurat. Jika Anda membutuhkan uangnya sebelum tanggal tersebut, uang itu tetap terkunci.
- Kerumitan ada harganya. Skrip dengan beberapa jalur lebih sulit dibuat, diaudit, dan dipulihkan. Kesalahan dalam skrip ber-time lock dapat membuat dana tidak bisa dibelanjakan, dan kesalahan itu mungkin baru terlihat bertahun-tahun kemudian, saat kuncinya berakhir.
- Kunci relatif butuh perawatan. Skema "setelah setahun tidak aktif" biasanya mengharuskan pemilik menyegarkan koinnya secara berkala untuk memulai ulang jam.
- Dukungan dompet tidak merata. Alamat ber-time lock hanya berguna jika perangkat lunak yang nantinya Anda pakai untuk pemulihan memahaminya.
Time lock dan SSP
Saat ini, vault SSP adalah multisig murni: sekumpulan kunci M-dari-N tanpa syarat pembelanjaan berbasis waktu. Vault 2-dari-2 Anda bisa dibelanjakan kapan saja ketika kedua kunci setuju, dan tidak pernah dalam kondisi lain. Itu adalah kompromi yang disengaja: skrip sederhana mudah diverifikasi, mudah dipulihkan dengan alat standar, dan tidak memiliki jam yang bisa mengejutkan Anda bertahun-tahun kemudian.
Pemulihan di SSP bekerja melalui kunci Anda dan cadangannya, bukan melalui jalur dengan penundaan waktu. Perbandingan berbagai konfigurasi multisig membahas pilihan yang penting bagi kebanyakan orang, dan untuk tim, vault SSP Enterprise memungkinkan Anda memilih berapa banyak penanda tangan yang harus menyetujui.
Ringkasan yang jujur
Time lock memungkinkan chain menegakkan kapan koin boleh berpindah, bukan hanya siapa yang boleh memindahkannya. Time lock memungkinkan rencana warisan, kunci pemulihan, dan kanal pembayaran tanpa harus memercayai siapa pun untuk menunggu.
Namun time lock juga menambah kerumitan dan bisa mengunci pemiliknya sendiri sama kuatnya dengan mengunci penyerang. Bila digunakan dengan hati-hati, time lock termasuk alat paling berguna di dunia kripto, dan skrip yang paling sederhana sering kali tetap yang paling aman.


