Multi-Signature

bip65 託管範例中的 ScriptSig

  • March 18, 2018

在 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 可以隨時消費。

你去 - 智能合約很容易:-)

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