Locktime

nSequence/檢查序列驗證如何工作?

  • September 23, 2021

相對時間鎖是如何工作的?我的意思是,我知道理論描述,但是如何具體使用 nSequence 呢?你能給我一個實際的例子嗎,其中有 2 個範例事務,其中一個被來自另一個的 nSequence 鎖定?

為了使用相對時間鎖,您需要提供scriptPubKey發送比特幣的要求。

例子

scriptPubKey對於 30 天超時的託管:

IF
   2 <Alice's pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIG
ELSE
   "30d" CHECKSEQUENCEVERIFY DROP
   <Alice's pubkey> CHECKSIG
ENDIF

然後,為了在 30 天之前使用它,scriptSig必須提供滿足第一個條件語句(multisig 腳本)的 ,即:

scriptSig:0 <signature1> <signature2>

或者 30 天后,愛麗絲可以提供:

scriptSig:<signature>

BIP112

順序

請注意,為了設置相對鎖定時間: tx 必須具有以下屬性:

  • 版本必須為 2 或更高版本
  • nSequence 不能設置第 32 位
  • nSequence 必須設置第 23 位 ( 0x400000) 如果它是鎖定時間類型,則未設置塊高度類型
  • 對於相對鎖定時間類型,每個位的粒度為 512 秒
  • 對於相對塊高度類型,每個位代表 1 個塊

30天,我相信會是這樣的:

30 * 24 * 60 * 60 = 2592000 seconds
2592000 / 512 = 5062.5 ~= 5063 or 0x13C7
sequence = 0x13C7 | 0x400000 = 0x4013C7 or 4199367
nSequence = 0xC7134000 (little endian)

該序列是交易​​的最後 4 個字節,請參閱<https://en.bitcoin.it/wiki/Transaction>

引用自:https://bitcoin.stackexchange.com/questions/83650