Transaction-Input

輸入使用多少重量單位?

  • December 25, 2018

投入的重量單位成本是多少?當您向 tx 添加更多輸入時,您可以批量/聚合輸入還是線性增長?

投入的重量單位成本是多少?

有 2 件事會影響 tx 的權重、總字節數和總字節數減去見證數據。

Transaction Weight = Base transaction size * 3 + Total transaction size, 在哪裡

基本交易大小是剝離見證數據後序列化的交易大小。

總交易大小是按BIP144中所述序列化的交易大小(以字節為單位) ,包括基礎數據和見證數據。

BIP141

您可以批量/聚合輸入,還是在向 tx 添加更多輸入時線性增長?

您不能批量輸入,但您可以將它們組合起來,然後先將它們大量發送回您自己,但這需要額外的交易。你現在能做的最好的可能就是使用隔離見證地址來接收資金,所以當你去花費輸入時,見證數據會降低每個輸入的權重。

交易中單個輸入的權重始終使用:

  • 32引用 outpoint id 的字節數(散列)
  • 4引用 outpoint 索引的字節數

然後,如果輸出點是非隔離見證 p2pkh 輸出,則 scriptSig 使用:

  • 1表示 scriptSig 大小的字節
  • 1字節表示簽名大小
  • 71簽名的字節數(平均)
  • 1表示公鑰大小的字節
  • 33公鑰的字節

總的來說,這使得143字節(平均)在您的支出交易中引用非隔離見證 p2pkh 輸出。

對於 segwit p2sh 嵌套 p2pkh 輸出,scriptSig 改為使用:

  • 1表示 scriptSig 大小的字節
  • 1表示見證版本的字節 (0x00)
  • 1字節表示公鑰雜湊大小
  • 20公鑰雜湊的字節

此外,witnessScript 將使用與 scriptSig 相同數量的字節來花費非見證 p2pkh 外點。但是,witnessScript 僅佔總權重的四分之一。

因此,segwit p2sh 嵌套輸入的平均權重貢獻為59字節 + ( 107)/4 字節 =86字節。

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