對於 100% 的隔離見證交易,一個區塊上可能的最大交易確認數是多少?
對於 100% 的隔離見證交易,一個區塊上可能的最大交易確認數是多少?
而且,一個充滿隔離見證交易的區塊可以更新多少個 utxo?
非常有趣的問題,讓我們看看我們可以建構的最小事務是什麼。為了使其最小化,它必須是單個輸入和單個輸出。非隔離見證部分看起來像這樣:
4字節版本
1 字節輸入計數
輸入
- 36 字節出點
- 1 字節 scriptSigLen (
0x00
)- 0 字節 scriptSig
- 4字節序列
1 字節輸出計數
- 8 字節值
- 1 字節腳本PubKeyLen
- 22 字節 scriptPubKey (
0x0014{20-byte keyhash}
)4 字節鎖定時間
非見證部分總計 82 個字節。因此,總的非見證區塊大小為 100 萬字節,我們最多可以獲得 12195 筆交易。假設所有花費的輸出都是 P2WPKH,每個交易的見證部分包括兩個推送:一個用於簽名,一個用於公鑰。它們大約有 72 個字節和 33 個字節長,每個都需要 1 個字節的長度前綴。此外還有 1 字節的見證版本。所以見證人的總大小是 108 字節。見證區塊中還剩下 3 MB 的空間,這使我們每個區塊大約有 27777 個見證。所以限制因素是區塊的非見證部分的空間,所以這是我們應該考慮的最終數字。
請注意,我對非隔離見證部分使用了非隔離見證序列化,因為這是非升級節點將執行的操作。還要注意這是一個極端的例子,因為大多數交易不是單輸入單輸出的。相應的非隔離見證事務的大小為 192 字節,再加上 1MB 的大小限制,每個區塊可以處理 5208 個事務,而每個區塊最多可以處理 12195 個隔離見證事務。
關於塊中最大 UTXO 的問題的第二部分相當簡單。我們想分攤交易結構的成本,並最大化輸入+輸出。由於輸入大於輸出,我們將簡單地使用單個輸入併計算適合塊中的最大輸出數,即 32256。由於輸出是非隔離見證數據,因此它與隔離見證啟動之前的變化也很小(只有來自一個輸入的簽名被移動到隔離見證部分)。因此,最大的 UTXO 流失是 1 個 UTXO 被刪除,32256 個被添加。作為比較,沒有隔離見證的最大添加數是 32252。請注意,可能還有其他一些我沒有考慮過的限制,但這絕對是上限,並且這些限制在 segwit 啟動期間不太可能發生變化。