Multi-Signature

2of2 多重簽名 - 需要兌換腳本

  • December 6, 2018

通常,簽署多重簽名交易的人還需要贖回腳本或用於創建贖回腳本的所有公鑰,以及他們自己的私鑰。

不,我在想,這是否也是 2of2 多重簽名地址所必需的。假設兩方是 Alice 和 Bob。Alice 和 Bob 都生成一個密鑰對。Bob 將他的公鑰發送給 Alice,然後她創建兌換腳本。現在 Alice 知道兩個公鑰,但 Bob 只知道他的公鑰。愛麗絲現在創建了一個花費資金的交易,並用她的私鑰對其進行簽名。她將這個原始的半簽名交易發送給 Bob。到目前為止一切正常。但通常這裡 Bob 需要贖回腳本或兩個公鑰來自己生成贖回腳本。我現在想知道:在簽署交易時,愛麗絲將她的簽名和她的公鑰添加到交易中,以便可以驗證簽名。所以 Bob 可以從他剛剛收到的原始交易中提取 Alice 的公鑰,並使用它自己生成贖回腳本?

所以我的問題是:這是真的嗎?如果是,這是否意味著無論是 2of2 還是 4of4,最後一個簽名者總是可以從收到的原始交易中重新創建贖回腳本?

是的,但必須考慮一些因素。

有兩種創建多重簽名交易的方法:Pay-to-multisig或封裝 Pay-to-multisig 的Pay-to-script-hash。對於您如何提出問題,我猜您指的是後者。但是,為了以防萬一,我會給你兩個答案。

支付腳本雜湊 (P2SH)

封裝在 P2SH 交易中的 2-3 多重簽名的腳本如下所示:

ScriptSig: OP_0 [Sig 1] [Sig 2] OP_2 [PK 1][PK 2][PK 3] OP_3 OP_CHECKMULTISIG

ScriptPubKey: OP_HASH160 <ScriptHash> OP_EQUAL

正如您所提到的,Bob 將能夠重新創建腳本,因為 ScriptPubKey 只需要生成的 scriptSig 的雜湊值,並且他將擁有所有資訊。但是,順序很重要。在這種情況下(2-3 多重簽名)Alice 可以用六種不同的方式建構腳本:

  • 腳本簽名:… OP_2 [PK 1] [PK 2] [PK 3] OP_3 OP_CHECKMULTISIG
  • 腳本簽名:… OP_2 [PK 1] [PK 3] [PK 2] OP_3 OP_CHECKMULTISIG
  • 腳本簽名:… OP_2 [PK 2] [PK 1] [PK 3] OP_3 OP_CHECKMULTISIG
  • 腳本簽名:… OP_2 [PK 2] [PK 3] [PK 1] OP_3 OP_CHECKMULTISIG
  • 腳本簽名:… OP_2 [PK 3] [PK 1] [PK 2] OP_3 OP_CHECKMULTISIG
  • 腳本簽名:… OP_2 [PK 3] [PK 2] [PK 1] OP_3 OP_CHECKMULTISIG

這有兩個後果,最直接的就是如果腳本不是以相同的方式建構的,那麼雜湊值就會不同。此外,提供密鑰的順序表示應該如何提供簽名,即必須以相同的順序提供簽名和密鑰。

例如:

ScriptSig: OP_0 [Sig 2] [Sig 1] OP_2 [PK 2][PK 3][PK 1] OP_3 OP_CHECKMULTISIG

然後,在 nm 多重簽名中,Alice 將有n!安排公鑰的方法。如果沒有以正確的順序提供,腳本的評估將失敗,使交易無效。

支付到多重簽名

在 Pay-to-multisig 的情況下,由於每個腳本儲存的資訊,該解決方案更加直接。使用相同的 2-3 多重簽名範例,生成的腳本將是:

ScriptSig: OP_0 [Sig 1] [Sig 2]

ScriptPubKey: OP_2 [PK 1][PK 2][PK 3] OP_3 OP_CHECKMULTISIG 

在這種情況下,不僅是後者,所有相關方都將知道如何建構 ScriptSig,因為可以從之前的交易中訪問 ScripPubKey 的建構方式。

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