يشمل Timelock كلا من nLockTime وOP_CHECKLOCKTIMEVERIFY (CLTV/BIP65) وnSequence النسبي وفق BIP68 وOP_CHECKSEQUENCEVERIFY (CSV/BIP112). تحدد حقول المعاملة شروط الصلاحية الزمنية، ويمكن لـ Script فرض إعدادها. تستخدم الأنواع الزمنية Median Time Past (MTP)، لا ساعة المحفظة. استيفاء القيد لا يضمن القبول أو التأكيد.
يشكل nLockTime وCLTV الزوج المطلق، ويشكل BIP68 وCSV الزوج النسبي. يقيد nLockTime معاملة محددة كاملة، لكنه وحده لا يمنع معاملة أخرى بإعدادات مختلفة من إنفاق UTXO. يفرض CLTV أو CSV في فرع السكربت المنفذ الحقول الموافقة في معاملة الإنفاق. وقد تكون لفرع آخر مسموح شروط مختلفة. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [BIP 68 — Relative lock-time] [BIP 112 — CHECKSEQUENCEVERIFY]
nLockTime حقل غير موقّع من 32 بت؛ تعطل القيمة صفر الشرط الزمني المطلق. إذا استخدمت جميع المدخلات SEQUENCE_FINAL بالقيمة 0xffffffff، يجري تجاهل nLockTime غير المستوفى. يتطلب القيد المطلق الفعال مدخلا واحدا على الأقل بقيمة nSequence مختلفة. التقييم يخص هذه المعاملة المحددة، وليس تجميدا دائما لمدخلاتها. [Bitcoin Core v31.0 — Transaction finality] [Bitcoin Core v31.0 — Sequence constants]
قيمة LOCKTIME_THRESHOLD هي 500000000. تعني قيمة nLockTime الأقل ارتفاع كتلة، والمساوية أو الأعلى Unix timestamp. عند تفعيل الفحص المطلق، يجب أن تكون nLockTime أصغر تماما من ارتفاع الكتلة المرشحة أو MTP المعني. المساواة لا تكفي؛ ليس هذا مبلغا أو متوسط ارتفاع أو تاريخ تفعيل للبروتوكول. [Bitcoin Core v31.0 — Transaction finality] [Bitcoin Core v31.0 — Locktime threshold]
يستخدم BIP113 قيمة MTP للكتلة السابقة للتحقق من النهائية الزمنية: وسيط الطوابع الزمنية لآخر 11 كتلة تنتهي بتلك الكتلة. ليس متوسطا حسابيا أو وقت المستخدم الحالي أو طابع الكتلة المرشحة. يستخدم Bitcoin Core الدالة GetMedianTimePast؛ بلوغ موعد تقويمي وحده لا يضمن استيفاء القيد. [BIP 113 — Median time-past]
يتطلب OP_CHECKLOCKTIMEVERIFY معاملا غير سالب، من نوع الارتفاع أو الوقت نفسه الذي تستخدمه nLockTime، وقيمته لا تتجاوز nLockTime. يجب ألا تكون nSequence لمدخل الإنفاق المعني هي 0xffffffff. لا يقرأ opcode الساعة أو ارتفاع السلسلة مباشرة؛ تفحص إعدادات المعاملة بشكل منفصل عند تقييم صلاحيتها الزمنية. وتبقى بقية شروط Script لازمة. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v31.0 — Script interpreter]
في المعاملات ذات الإصدار 2 أو أعلى، يفعّل BIP68 شرطا نسبيا للمدخلات التي لم يضبط فيها البت 31. تحدد البتات الـ16 الدنيا مدة التأخير؛ يختار البت 22 وحدات من 512 ثانية، وإلا فالقياس بالكتل. يبدأ تأخير الكتل من ارتفاع تأكيد المخرج المنفق. أما التأخير الزمني فمن MTP الكتلة السابقة لتأكيده إلى MTP الكتلة السابقة للكتلة المرشحة. ليس زمنا منذ إنشاء المعاملة في المحفظة. [BIP 68 — Relative lock-time] [Bitcoin Core v31.0 — Transaction finality]
يتطلب OP_CHECKSEQUENCEVERIFY ذو المعامل الفعال غير السالب إصدارا لا يقل عن 2، وعدم ضبط disable flag للمدخل، وتطابق نوع التأخير، وقيمة nSequence كافية بعد تطبيق القناع. يفرض BIP68 العمر الفعلي بشكل منفصل. يتيح CSV فرع استرداد مؤجلا. في مخرج Lightning المسمى to_local، يقيد to_self_delay مالك commitment transaction؛ ويمكن للطرف الآخر ذي مفتاح الإبطال الصحيح استخدام فرع العقوبة دون هذا التأخير. [BIP 112 — CHECKSEQUENCEVERIFY] [BOLT 3 — Commitment transaction outputs]
البت 31 هو SEQUENCE_LOCKTIME_DISABLE_FLAG ويعطل تفسير BIP68 النسبي لهذا المدخل وحده. تحتوي القيمة 0xfffffffe عليه لكنها ليست SEQUENCE_FINAL، لذلك تسمح بفعالية nLockTime وCLTV. القيمة 0xffffffff هي final. يتصرف معامل CSV غير السالب ذو disable flag المضبوط كتعليمة NOP؛ لكن ضبط العلم في المدخل لا يستوفي متطلب CSV الفعال. يجب عدم الخلط بين الحالتين. [BIP 112 — CHECKSEQUENCEVERIFY] [Bitcoin Core v31.0 — Sequence constants]
يضع القيد الزمني شرط أهلية، وليس جدولا للإرسال. يجب أن تحتفظ المحفظة بالمعاملة أو تنشئها، وتوفر التوقيعات والبيانات الأخرى، وتستوفي جميع الشروط وتؤمن الرسم والنشر. تؤثر السياسة المحلية واختيار المعدّن أيضا في التأكيد. قد تغير إعادة التنظيم ارتفاع تأكيد المدخل وعمره النسبي؛ مرور الزمن لا يضمن نتيجة غير قابلة للعكس. [BIP 68 — Relative lock-time] [Bitcoin Core v31.0 — Transaction finality]
يعرض RPC المسمى decoderawtransaction في Core 31 الحقول version وlocktime وsequence لكل مدخل. لتحليل CLTV/CSV، افحص Script المستخدم فعليا والمخرج المنفق؛ فك الترميز وحده ليس دليلا على الصلاحية. يختبر RPC المسمى testmempoolaccept مرشحا موقّعا أمام السلسلة الحالية وفحوص الإجماع والسياسة المحلية، دون قبوله في mempool ودون بثه. افحص allowed وسبب الرفض؛ النجاح ليس وعدا بتأكيد مستقبلي. [Bitcoin Core 31.0 — decoderawtransaction RPC] [Bitcoin Core 31.0 — testmempoolaccept RPC] [Bitcoin Core v31.0 — Mempool RPC implementation]
للحصول على صورة أوضح، اقرأ هذا المدخل مع CHECKLOCKTIMEVERIFY, CHECKSEQUENCEVERIFY, Lightning Network, Payment Channel, المعاملة, Bitcoin Script. تشير إلى هذا المدخل أيضًا تأكيد, Bitcoin Script, HTLC, CHECKLOCKTIMEVERIFY.