Multi-Signature

P2SH 和 P2SH-P2WSH 之間的 2-of-3 多重簽名輸入的權重有多大不同?

  • January 23, 2021

我正在嘗試計算2-of-3 多重簽名 P2SH-P2WSH 輸入的*權重。*我找到了相關的問題Predict multi signature transaction size,我在m=2, n=3這裡計算過:

pubkeySize=33
sigSize=72

SizeOfRedeemScript = 1+n*(1+pubkeySize)+1+1
// 2-of-3: SizeOfRedeemScript = 1+3*(1+33)+1+1 = 105

SizeOfScriptSig = 1+m*(1+sigSize)+SizeOfPushDataFor(RedeemScript)+SizeOfRedeemScript
// 2-of-3: SizeOfScriptSig = 1+2*(1+72)+2+105 = 1 + 146 + 2 + 105 = 254

sizeOf(input) = 32+4+SizeOfCsuintFor(SizeOfScriptSig) + SizeOfScriptSig + 4
// 2-of-3: sizeOf(input) = 32+4+3+254+4 = 297

P2SH 中 2-of-3 輸入的大小為 293 到 297 個字節1。因此,這將對應於297*4 bytes = 1188 wu

如何計算 2-of-3 多重簽名 P2SH-P2WSH 輸入的相應權重?


1請注意,如果兩個簽名都是 71 個字節,則 scriptSig 是 252 個字節,長度可以編碼為 1 個字節,但在最壞的情況下,兩個簽名都是 72 個字節,而 scriptSig 的長度需要 3 個字節。

要計算塊權重,您需要知道非見證數據的大小(以字節為單位)和見證數據的大小(以字節為單位)。

使用 P2SH-P2WSH 輸入,您的 scriptSig 將始終為 35 個字節。這使得輸入的字節大小為36 + 35 + 4 = 75。見證人包含您的簽名和腳本,因此該輸入的見證人將是1+m*(1 + sigSize) + SizeOfVarIntFor(RedeemScript) + SizeOfRedeemScript. 對於 2-of-3 多簽名輸入,您將因此擁有1 + 2*(1 + 72) + 2 + 105 = 254見證的字節大小。

塊權重的計算公式是base size * 3 + total size。基本大小是所有非見證數據的大小,因此您的基本大小是 75 字節。總大小是包括見證人在內的所有數據的大小,因此您的總大小將為75 + 254 = 329. 將其代入公式得到75 * 3 + 329 = 554. 因此 P2SH-P2WSH 2-of-3 多重簽名的權重為 554。

*請注意,SizeOfVarIntFor(RedeemScript)實際上是兩個字節,因為您需要使用 OP_PUSHDATA1,因為兌換腳本的長度超過 75 個字節。

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