Bitcoind

測試網的灰塵門檻值

  • May 9, 2022

我想在這個答案之後找到一個灰塵門檻值:https ://bitcoin.stackexchange.com/a/86069/134293

實際上,我有一個來自 listssinceblock 的交易列表,其中有 34 位的 Testnet 公鑰雜湊地址(如 mzzg8fvHXydKs8j9D2a8t7KpSXpGgAnk4n)和 35 位的 Testnet 腳本雜湊地址(如 2N1SP7r92ZZJvYKG2oNtzPwYnzw62up7mTo)-> https://en.bitcoin.it/ wiki/List_of_address_prefixes

如何找到兩者的灰塵門檻值?也許我只需要知道我有多少輸入才能應用公式:(

$$ input bytes $$+$$ 34 or 35 $$)*3

灰塵門檻值定義為(output_weight+input_weight)×discard_feeratediscard_feerate定義為 3 s/vB 。因此,您需要知道input_weight計算輸出的灰塵門檻值。

這在 P2PKH 輸出的情況下很容易,因為輸入具有固定的權重。然而,在 P2SH、P2WSH 和 P2TR 輸出的情況下,這是不可能的,因為您無法從地址中得知收件人在其地址中編碼的條件腳本以稍後使用輸出。它可能是傳統的多重簽名、封裝的隔離見證或一些自定義構造。在 P2TR 的情況下,它可能會花費每一個keypathscriptpath這將導致不同的輸入權重。

因此,比特幣核心程式碼只使用了兩種不同的灰塵門檻值: 通過https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cppGetDustThreshold(…) 的螢幕截圖

對於所有原生 segwit 輸出,它使用實際輸出的權重加上 P2WPKH 輸入的權重。請注意,雖然

nSize += (32 + 4 + 1 + (107 / WITNESS_SCALE_FACTOR) + 4);

應該評估為 67.75 vB,因為nSize是 a size_t,它實際上是 67 vB。

這意味著對於 P2WPKH,輸出為 31 vB,總輸出為 31 vB + 67 vB = 98 vB。這意味著 P2WPKH 灰塵門檻值為294 satoshis。對於 P2WSH 和 P2TR,輸出為 43 vB,灰塵門檻值為330 satoshis

P2PKH 輸出為 34 vB,輸入為 148 vB,因此它們的往返總和為 34 vB + 148 vB = 182 vB,因此 P2PKH 灰塵門檻值為546 satoshis。由於 P2SH 輸出對於打包的 segwit 和所有其他 P2SH 輸出只有 32 vB,因此它們的灰塵門檻值為540 satoshi


您可以在此表中查找地址前綴: https ://en.bitcoin.it/wiki/List_of_address_prefixes

  • m…是一個測試網 P2PKH 地址
  • 2…是一個測試網 P2SH 地址

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