Transactions

中本聰的比特幣客戶端是否實現了修剪交易歷史?

  • April 25, 2017

最初的比特幣論文提出了一種丟棄舊交易的方法。應該計算整個交易歷史的默克爾樹,並只儲存樹的一部分。

但是,我沒有註意到實現了這個方法。BuildMerkleTree僅將其儲存在記憶體中,並且似乎假設您持有所有交易歷史記錄,並且序列化方法儲存實際交易而不儲存 Merkle 樹。

實施了嗎?你能給我參考一下它在程式碼中的位置嗎?

如果沒有,是否計劃在未來發布特定版本?

從比特幣核心 v0.8.0 開始,驗證數據庫(“鏈狀態”或“UTXO 集”,或“賬戶資產負債表”)與區塊鏈分離。當一個新塊進入時,它的效果(刪除花費的輸入和添加輸出)將應用於數據庫。這意味著塊仍然像以前一樣被下載和驗證,但之後它們不再用於驗證。塊仍然儲存在磁碟上,以便將它們發送到正在同步的其他節點,或重新掃描舊事務。

從 Bitcoin Core v0.11.0 開始,它也可以在真正的修剪模式下執行,在這種模式下,磁碟上的塊實際上會在一段時間後被刪除。從 v0.12 開始,可以在修剪模式下執行時使用錢包。從 v0.14 開始,可以手動修剪(通過發出 RPC 命令而不是讓應用程序決定)。

請注意,這些機制都不依賴於比特幣白皮書中描述的機制。

由於 Pieter 提到的問題,我認為這沒有實現。擁有一個只儲存區塊鏈的修剪版本的客戶端對其他沒有實現此修剪功能的客戶端不友好,因為它將無法檢索原始區塊鏈。

由於各種客戶仍在開發中,因此其他客戶可以選擇如何處理他們的區塊鏈數據,從而實現新的創新。例如,它允許分析比特幣在一段時間內的表現。即使你沒有從一開始就記錄下來。

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