Multi-Signature
bip65 託管範例中的 ScriptSig
在 bip65 中有一個範例,它如何與多重簽名結合用於託管。請參閱:https ://github.com/bitcoin/bips/blob/master/bip-0065.mediawiki#Escrow
它聲稱可以使用以下 scriptSig 來使用資金:
0 <Alice's signature> <Bob's signature> 0
但是在處理範例時,它似乎總是0
一對多。我知道從堆棧中彈出一個項目太多的錯誤,這就是為什麼多重簽名腳本通常首先有一個 0,但為什麼這個最後也有一個?
scriptSig 部分首先在堆棧上,所以會有:
0 <Alice's signature> <Bob's signature> 0
這用於支付到 CLTV 分支:
0 <Alice/Bob's signature> <Lenny's signature> 1
在 sig 部分之後是 pubkey 腳本,第一個操作碼“IF”。此“IF”驗證堆棧上的值(之前來自 sciptSig 的“0”或“1”),並相應地分支:
IF <now + 3 months> CHECKLOCKTIMEVERIFY DROP <Lenny's pubkey> CHECKSIGVERIFY 1 ELSE 2 ENDIF <Alice's pubkey> <Bob's pubkey> 2 CHECKMULTISIG
假設選擇了第一個分支,那麼 if 子句中的最後一項是“1”,然後是“ENDIF”之後的行,所以這變成了 1-of-2 multisig,其中只有一個人需要簽名。但是這個人必須等待時間鎖定(通過 CSV 參數)。在此範例中:Lenny 可以在達到超時後花費。
如果 IF 子句之前的堆棧上有一個“0”,則執行第二部分,這成為一個“2-of-2”的多重簽名,這意味著 Alice 和 Bob 可以隨時消費。
你去 - 智能合約很容易:-)