P2SH 和 P2SH-P2WSH 之間的 2-of-3 多重簽名輸入的權重有多大不同?
我正在嘗試計算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 個字節。