Storage-Footprint
壓縮的 UTXO 集如何儲存在 4GB 中?
根據 S. Delgado-Segura、C. Pérez-Sola、G. Navarro-Arribas、J. Herrera-Joancomartí,“比特幣 UTXO 集分析”,金融密碼學和數據安全,第 78-91 頁,2019 年,截至 2017 年的 UTXO 集的分佈是:
No of UTXO 52,543,649 100% Size Pay-to-PubkeyHash (P2PKH) 43,079,604 81.99% 147-179 bytes Pay-to-ScriptHash(P2SH) 8,987,799 17.11% 40 - ? bytes Pay-to-Pubkey(P2PK) 66,759 0.1% 113 bytes Others 409,487 0.8% 114-1483 bytes
2020年4月有6660萬個UTXO。假設分佈相同,UTXO集合的大小應該約為:
No of UTXO: 66.6 million = 100% Pay-to-PubkeyHash (P2PKH) 81.99% 147-179 bytes 7.475712318GB Pay-to-ScriptHash(P2SH) 17.11% 40 - ? bytes 0.424506515GB Pay-to-Pubkey(P2PK) 0.1% 113 bytes 0.007008947GB Others 0.8% 114-1483bytes 0.056567788GB Total 7.963795569GB
根據statoshi.info,截至 2020 年 4 月,序列化的 UTXO 集為 4GB。
我了解 UTXO 數據沒有很多前導零。序列化的 UTXO 集如何壓縮到 4GB?
您提供的尺寸與紙張不符。我什至找不到您在論文中給出的尺寸。這些尺寸是非常錯誤的,而且太大了。它們似乎用於輸入大小,而不是輸出大小。輸入大小與 UTXO 集無關。
P2PKH 是 21 字節,P2SH 是 21 字節,P2PK 是 33 字節,其他都是它們的實際腳本大小。
- P2PKH = 1.147 GB
- P2SH = 0.2393 GB
我決定省略其他輸出類型,因為它們太少了,以至於它們的大小可以忽略不計。
數量最多為 0.5328 GB。然而,數量被壓縮,所以實際上應該更小。
輸出點(txid 和輸出索引)最多為 2.398 GB。
因此,序列化的 UTXO 集總共約為 4.3171 GB,與我們實際觀察到的接近。
由於省略了腳本和 LevelDB 的成本,還有更多字節,但應該不會太多(當然不會有幾個 GB)。此外,數量和輸出索引被壓縮,這顯著減少了序列化大小。因此,總共約為 4 GB。我的節點報告 3.9 GB。