54 / 691TIME

Timelock

Kunci waktu

Timelock menetapkan waktu paling awal ketika konsensus mengizinkan transaksi dimasukkan ke blok atau jalur pembelanjaan tertentu digunakan. Kunci absolut mengacu pada tinggi atau waktu rantai; kunci relatif pada usia output yang dibelanjakan.

Timelock mencakup nLockTime, OP_CHECKLOCKTIMEVERIFY (CLTV/BIP65), nSequence relatif menurut BIP68, dan OP_CHECKSEQUENCEVERIFY (CSV/BIP112). Field transaksi menetapkan syarat validitas terkait waktu; Script dapat mewajibkan pengaturannya. Varian berbasis waktu memakai Median Time Past (MTP), bukan jam dompet. Memenuhi kunci tidak menjamin penerimaan atau konfirmasi.

nLockTime dan CLTV membentuk pasangan absolut; BIP68 dan CSV membentuk pasangan relatif. nLockTime membatasi satu transaksi tertentu secara keseluruhan; dengan sendirinya ia tidak mengunci UTXO terhadap transaksi lain dengan pengaturan berbeda. CLTV atau CSV pada cabang skrip yang dijalankan mewajibkan field terkait dalam transaksi pembelanjaan. Cabang lain yang diizinkan dapat memiliki syarat berbeda. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [BIP 68 — Relative lock-time] [BIP 112 — CHECKSEQUENCEVERIFY]

nLockTime adalah field 32-bit tanpa tanda; nol menonaktifkan syarat waktu absolut. Jika semua input memakai SEQUENCE_FINAL dengan nilai 0xffffffff, nLockTime yang belum terpenuhi diabaikan. Kunci absolut yang efektif memerlukan setidaknya satu input dengan nSequence berbeda. Yang dievaluasi adalah transaksi tertentu itu, bukan pembekuan permanen inputnya. [Bitcoin Core v31.0 — Transaction finality] [Bitcoin Core v31.0 — Sequence constants]

LOCKTIME_THRESHOLD bernilai 500000000. nLockTime lebih rendah berarti tinggi blok; nilai sama atau lebih tinggi berarti Unix timestamp. Saat pemeriksaan absolut aktif, nLockTime harus benar-benar lebih kecil daripada tinggi blok kandidat atau MTP yang relevan. Nilai sama tidak cukup; ini bukan jumlah uang, tinggi rata-rata, atau tanggal aktivasi protokol. [Bitcoin Core v31.0 — Transaction finality] [Bitcoin Core v31.0 — Locktime threshold]

BIP113 memakai MTP blok sebelumnya untuk finalitas berbasis waktu: median timestamp 11 blok terakhir yang berakhir pada blok tersebut. Ini bukan rata-rata aritmetika, waktu pengguna saat ini, atau timestamp blok kandidat. Bitcoin Core memakai GetMedianTimePast; tiba pada tenggat kalender saja tidak menjamin kunci terpenuhi. [BIP 113 — Median time-past]

OP_CHECKLOCKTIMEVERIFY mewajibkan operand tidak negatif, jenis tinggi/waktu yang sama dengan nLockTime, dan nilai operand tidak melebihi nLockTime. Input pembelanjaan terkait tidak boleh memiliki nSequence 0xffffffff. Opcode tidak membaca jam atau tinggi rantai secara langsung; pengaturan transaksi diperiksa terpisah ketika menilai validitas waktunya. Syarat Script lainnya tetap wajib. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v31.0 — Script interpreter]

Untuk transaksi versi 2 atau lebih tinggi, BIP68 mengaktifkan syarat relatif pada input tanpa bit 31 yang disetel. Sebanyak 16 bit terbawah menentukan jeda; bit 22 memilih satuan 512 detik, jika tidak maka satuannya blok. Jeda blok dihitung dari tinggi konfirmasi output yang dibelanjakan. Jeda waktu dihitung dari MTP blok sebelum konfirmasi tersebut hingga MTP sebelum blok kandidat. Ini bukan waktu sejak transaksi dibuat di dompet. [BIP 68 — Relative lock-time] [Bitcoin Core v31.0 — Transaction finality]

OP_CHECKSEQUENCEVERIFY dengan operand aktif yang tidak negatif mewajibkan versi setidaknya 2, disable flag input tidak disetel, jenis jeda sama, dan nSequence setelah masking yang mencukupi. Usia sebenarnya ditegakkan terpisah oleh BIP68. CSV memungkinkan cabang pemulihan tertunda. Pada output Lightning to_local, to_self_delay membatasi pemilik commitment transaction; pihak lain dengan kunci pencabutan yang benar dapat memakai cabang penalti tanpa jeda itu. [BIP 112 — CHECKSEQUENCEVERIFY] [BOLT 3 — Commitment transaction outputs]

Bit 31 adalah SEQUENCE_LOCKTIME_DISABLE_FLAG dan menonaktifkan interpretasi relatif BIP68 hanya untuk input itu. Nilai 0xfffffffe memuat bit tersebut tetapi bukan SEQUENCE_FINAL: nLockTime dan CLTV tetap dapat berlaku efektif. Nilai 0xffffffff adalah final. Operand CSV tidak negatif dengan disable flag disetel berperilaku sebagai NOP; namun flag itu pada input tidak memenuhi persyaratan CSV yang aktif. Kedua kasus ini tidak boleh tertukar. [BIP 112 — CHECKSEQUENCEVERIFY] [Bitcoin Core v31.0 — Sequence constants]

Kunci waktu menetapkan syarat kelayakan, bukan jadwal pengiriman. Dompet harus menyimpan atau membuat transaksi, menyediakan tanda tangan dan data lain, memenuhi semua syarat, serta mengatur biaya dan penyebaran. Kebijakan lokal dan pilihan penambang juga memengaruhi konfirmasi. Reorganisasi dapat mengubah tinggi konfirmasi input dan usia relatifnya; waktu yang berlalu tidak menjamin hasil yang tak dapat dibalik. [BIP 68 — Relative lock-time] [Bitcoin Core v31.0 — Transaction finality]

RPC decoderawtransaction pada Core 31 menampilkan version, locktime, dan sequence setiap input. Untuk CLTV/CSV, periksa Script yang benar-benar digunakan serta output yang dibelanjakan; decoding saja bukan bukti validitas. RPC testmempoolaccept menguji kandidat bertanda tangan terhadap rantai saat ini dan pemeriksaan konsensus serta kebijakan lokal, tanpa menerima ke mempool atau menyiarkannya. Periksa allowed dan alasan penolakan; keberhasilan bukan janji konfirmasi mendatang. [Bitcoin Core 31.0 — decoderawtransaction RPC] [Bitcoin Core 31.0 — testmempoolaccept RPC] [Bitcoin Core v31.0 — Mempool RPC implementation]

Untuk gambaran yang lebih utuh, baca entri ini bersama CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Lightning Network, Payment Channel, Transaksi, Bitcoin Script. Entri ini juga dirujuk dari Konfirmasi, Bitcoin Script, HTLC, CHECKLOCKTIMEVERIFY.

DOC · 001BIP 65 — OP_CHECKLOCKTIMEVERIFYSpesifikasi ↗DOC · 002BIP 68 — Relative lock-timeSpesifikasi ↗DOC · 003BIP 112 — CHECKSEQUENCEVERIFYSpesifikasi ↗DOC · 004BIP 113 — Median time-pastSpesifikasi ↗DOC · 005Bitcoin Core v31.0 — Transaction finalityDokumentasi ↗DOC · 006Bitcoin Core v31.0 — Script interpreterDokumentasi ↗DOC · 007Bitcoin Core v31.0 — Sequence constantsDokumentasi ↗DOC · 008Bitcoin Core v31.0 — Locktime thresholdDokumentasi ↗DOC · 009BOLT 3 — Commitment transaction outputsSpesifikasi ↗DOC · 010Bitcoin Core 31.0 — decoderawtransaction RPCDokumentasi ↗DOC · 011Bitcoin Core 31.0 — testmempoolaccept RPCDokumentasi ↗DOC · 012Bitcoin Core v31.0 — Mempool RPC implementationDokumentasi ↗
Utamakan sumber · Bukan nasihat investasi