MSTR Cat

Blockchain/Tahap IV · Kedalaman protokol/4.1 Script/Pelajaran 4

Timelocks: CLTV dan CSV

Jam yang tidak boleh diputar balik, dan median yang memastikannya jujur

BahanPeneroka blok dengan paparan butiran transaksi (contohnya, mempool.space atau blockchain.com)Kalkulator yang boleh mengendalikan cap masa UnixDokumen spesifikasi BIP65, BIP68, dan BIP113

Ingin tahu

  1. Mengapakah wujud medan transaksi untuk menangguhkan perbelanjaan jika transaksi baharu sentiasa boleh memintasnya?
  2. Bagaimanakah seorang pelombong boleh berbohong mengenai masa tanpa merosakkan konsensus bagi yang lain?
  3. Apa perbezaan antara menunggu sehingga tahun tertentu dan menunggu dua tahun dari sekarang?

Teroka

  1. Setiap transaksi Bitcoin membawa medan nLockTime, iaitu nilai empat bait yang menghalang transaksi daripada dilombong sebelum titik tertentu. Jika nilainya di bawah 500,000,000, ia mewakili ketinggian blok; jika sama dengan atau melebihi ambang itu, ia ialah cap masa Unix. Namun, mekanisme ini hanya terpakai pada transaksi khusus itu. Pengguna sentiasa boleh mencipta transaksi baharu dengan input yang sama dan locktime sifar, lalu membelanjakan syiling serta-merta. nLockTime sahaja tidak memberikan sebarang jaminan keselamatan bagi syarat masa depan kerana ia tidak mengikat output itu sendiri.
  2. OP_CHECKLOCKTIMEVERIFY (CLTV), yang dicadangkan oleh Peter Todd dalam BIP65 dan diaktifkan pada Disember 2015, mengubah keadaan ini. CLTV ialah opcode skrip yang membandingkan nLockTime transaksi dengan nilai di atas tindanan. Jika locktime kurang daripada nilai yang diperlukan, pelaksanaan gagal. Oleh sebab semakan ini berlaku dalam skrip penguncian output, setiap percubaan untuk membelanjakan Unspent Transaction Output (UTXO) tersebut mesti memenuhi syarat itu. Ini mewujudkan timelock mutlak: syiling tidak boleh dibelanjakan sehingga titik masa atau ketinggian blok konsensus global dicapai.
  3. Timelock relatif berfungsi secara berbeza dengan mengukur tempoh dan bukannya titik mutlak. BIP68 mentafsir semula medan nSequence dalam input transaksi, yang sebelum ini tidak digunakan untuk tujuan ini, bagi mengekod tangguhan relatif. OP_CHECKSEQUENCEVERIFY (CSV), yang ditakrifkan dalam BIP112 dan diaktifkan bersama BIP68 pada Julai 2016, membandingkan nilai jujukan input dengan tempoh yang diperlukan. Ini membolehkan skrip menguatkuasakan syarat seperti 'output ini tidak boleh dibelanjakan sehingga 144 blok selepas ia disahkan.' Tangguhan itu adalah relatif kepada pengesahan khusus UTXO tersebut, menjadikannya sesuai untuk laluan pemulihan berasaskan masa atau tamat tempoh saluran pembayaran.
  4. Kunci berasaskan masa juga memberi pelombong insentif untuk memanipulasi cap masa. Pelombong boleh menetapkan cap masa blok sehingga dua jam ke hadapan untuk memasukkan lebih banyak transaksi bertimelock lebih awal daripada yang dimaksudkan. BIP113, yang diaktifkan serentak dengan timelock relatif pada Julai 2016, memperkenalkan Median Time Past (MTP). Semakan timelock kini dibandingkan dengan median cap masa sebelas blok sebelumnya, bukannya cap masa blok itu sendiri. Ini memastikan tiada seorang pelombong pun dapat mempengaruhi jam secara ketara; MTP biasanya ketinggalan kira-kira satu jam di belakang waktu sebenar, sekali gus menyediakan rujukan yang stabil dan boleh disahkan untuk semua pengiraan timelock.
  5. Mekanisme ini menjadi asas kepada aplikasi kompleks seperti saluran pembayaran dan protokol pewarisan. Dalam saluran Lightning, pembayaran yang sedang dalam perjalanan menggunakan timelock mutlak (CLTV) supaya pembayaran yang tidak dituntut boleh dikembalikan selepas tarikh akhir, manakala tangguhan relatif (CSV) pada output milik sesuatu pihak memberi pihak satu lagi masa untuk menghukum keadaan saluran yang sudah lapuk. Bagi pewarisan, skrip boleh menggabungkan syarat multisignature dengan timelock: contohnya dua kunci diperlukan untuk akses harian, tetapi selepas setahun tidak aktif, kunci ketiga (waris) menyertai kuorum melalui syarat CSV. Parameter ini ditetapkan semasa dompet dicipta dan tidak boleh diubah sebaik sahaja dana dikunci.
  6. Timelock ialah kekangan kekal; ia terbuka pada masa yang ditetapkan tetapi tidak menyediakan mekanisme untuk mengunci semula atau memanjangkan tangguhan selepas diaktifkan. Jika sesuatu skrip mengekod nilai jujukan 100 blok, syiling menjadi boleh dibelanjakan tepat apabila ketinggian relatif itu dicapai dari saat pengesahan. Kesilapan pengekodan boleh menyebabkan dana tidak dapat diakses lebih lama daripada yang dimaksudkan atau, sebaliknya, terbuka terlalu awal. Untuk pengesahan secara praktikal, buka mana-mana transaksi terkini pada peneroka blok dan periksa medan nLockTime. Kebanyakan dompet menetapkannya kepada ketinggian blok semasa, supaya transaksi itu tidak boleh dimasukkan ke dalam blok pada ketinggian yang lebih awal; ini menghapuskan satu insentif bagi pelombong untuk menulis semula blok terkini demi mengutip yurannya ('fee sniping').

Fakta utama

  • Nilai nLockTime di bawah 500,000,000 ditafsirkan sebagai ketinggian blok; nilai yang sama dengan atau melebihinya ialah cap masa Unix.
  • OP_CHECKLOCKTIMEVERIFY (BIP65) diaktifkan pada Disember 2015 dan menguatkuasakan timelock mutlak di peringkat skrip.
  • OP_CHECKSEQUENCEVERIFY (BIP112) dan BIP68 diaktifkan pada Julai 2016, membolehkan timelock relatif melalui medan nSequence.
  • Median Time Past (MTP), yang diperkenalkan oleh BIP113, menggunakan median sebelas blok sebelumnya untuk menghalang manipulasi masa oleh pelombong.
  • Tangguhan CSV diukur secara relatif kepada ketinggian atau masa pengesahan UTXO khusus yang dibelanjakan.
  • Dompet biasanya menetapkan nLockTime kepada ketinggian blok semasa untuk mengurangkan risiko fee sniping.

Latihan sembilan, enam, tiga, satu

9KumpulSenaraikan 9 kegunaan timelock yang anda temui huraiannya (Lightning, vault, pewarisan, escrow, atomic swap dan lain-lain), dengan mencatatkan sama ada setiap satu menggunakan kunci mutlak atau relatif.
6KelompokkanKumpulkan 9 itu kepada 6 mengikut tujuan: bayaran balik, tempoh penalti, pewarisan, kunci simpanan, tarikh akhir kontrak, atau lain-lain.
3SaringKurangkan 6 itu kepada 3 sebab mengapa timelock mesti berada dalam skrip output dan bukan hanya dalam transaksi perbelanjaan.
1KristalkanTulis 1 ayat yang menerangkan bagaimana MTP mengubah timelock daripada model yang bergantung pada kepercayaan terhadap pelombong kepada peraturan konsensus yang deterministik.

Semakan fakta

Tarikh, angka dan dakwaan telah disemak berbanding dengan sumber yang diterbitkan yang disenaraikan di bawah.

Buka dalam akademi interaktif →

EN PT ES ZH JA KO RU DE FR