Locktime
nSequence/檢查序列驗證如何工作?
相對時間鎖是如何工作的?我的意思是,我知道理論描述,但是如何具體使用 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>
順序
請注意,為了設置相對鎖定時間: 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>