Transactions

每筆交易的最大輸入數

  • July 24, 2020

理論上,每筆交易的最大輸入數是多少?它主要是由我們可以儲存在 9 字節 varint 上的最大數量來定義的嗎?

9 個字節可以儲存多大的數字?

如果這樣的交易只有 1 個輸出,它甚至可以放在一個塊中嗎?

不,可以由 varint 表示的數字對輸入的最大數量沒有影響。這個數字太大了。相反,輸入的最大數量受塊大小的限制。

如果 varint 可以表示的最大數字對您來說真的很重要,那麼它只是 64 位整數的最大值。那是0xffffffffffffffff。varint 可以代表什麼實際上沒有任何限制。具有如此多輸入的交易不適合一個塊,也不適合任何現有的單一儲存介質,因為該交易的大小至少為 664.1 艾字節。

有效交易中可以容納的最大輸入數為 24386。

這樣的交易不會使用 segwit,所以我們使用沒有 segwit 的最大塊大小 1000000 字節。減去標頭和 coinbase 交易的 146,得到交易的 999854 字節。減去版本的 4 個字節,鎖定時間的 4 個字節,輸出計數的 1 個字節,輸出值的 8 個字節,輸出腳本的 1 個字節,輸入計數的 3 個字節。這給我們留下了 999833 個字節。每個輸入 41 個字節(32 個先前的 txid,4 個輸出索引,1 個用於腳本長度,4 個用於序列號),可以有 24386 個輸入。

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