Transactions

Multisig vs 多輸入交易簽名

  • February 4, 2015

假設我們有一個 2 之 2 的多重簽名地址,我們想從中花費,所以交易應該由兩個私鑰簽名。

現在假設我們有一個包含兩個輸入的交易,所以交易應該由輸入的兩個私鑰再次簽名。

那麼這兩者在實現上有何不同呢?即使在概念層面上?這些程序是否相同?

它們是完全不同的東西,代表著非常不同的案例。

想像一下,您是黨的計劃委員會的負責人,您有兩個工人(A 和 B)幫助您為黨購買物品。您將獲得 1 個比特幣來資助聚會。

你有兩個選擇。

  • 您可以在 A 和 B 之間分配資金。例如,您可以在兩個單獨的輸出中分別給 A 和 B 0.5 個比特幣。如果他們需要購買價值超過 0.5 個比特幣的東西,他們將需要將他們的輸出作為輸入組合到同一筆交易中。但是,對於少於 0.5 個比特幣的物品,A 和 B 將能夠獨立行動來購買物品(或竊取資金!)。
  • 您可以在 2 of 2 的多重簽名地址中共同給 A 和 B 1 個比特幣。現在,對於任何購買,他們都需要同意才能從黨委的資金中支出。

總結一下:

花費 2/2 的多重簽名輸出:

花費一個先前的 UTXO 並需要兩個密鑰來簽名。

花費多個輸入:

花費多個先前的 UTXO,並要求每個輸入單獨簽名。


關於簽署這些類型的交易,它們必須稍有不同。

當對花費 2/2 多重簽名輸出的輸入進行簽名時,交易由兩個密鑰簽名,並且它們被編碼為與scriptSig一個輸入相同的密鑰。只有當兩個密鑰都使用有效簽名進行簽名時,交易才會生效。

例如,假設前面 2/2 multisig 輸出的 scriptPubKey 是:

OP_2 {pubkey1} {pubkey2} OP_2 OP_CHECKMULTISIG

花費該輸出的 scriptSig 將是:

{pubkey1's signature} {pubkey2's signature}

注意它們是如何在同一個輸入的 scriptSig 中的。

在簽署兩個不同的輸入時,假設它們之前的 scriptPubKey 看起來像這樣:

{pubkey1} OP_CHECKSIG

{pubkey2} OP_CHECKSIG

然後兩個輸入將具有這種格式的 scripSigs(分別):

{pubkey1 signature}

{pubkey2 signature}

注意:我使用了簡單的 scriptPubKey 來嘗試清楚它通常是如何工作的,但是您可能應該使用 Pay-to-script-hash multisig address 和 pay-to-pubkey-hash 地址,而不是原始的 multisig 和 pay我在此範例中使用的 -to-pubkey scriptPubKeys。

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