Transactions

區塊鏈中的舊交易

  • January 10, 2014

經過網上的大量研究,我仍然可以弄清楚以下想法是否相關:

我知道(或者至少我認為我知道)每筆交易都會消耗輸入地址中存在的所有比特幣。因此,如果比特幣地址在交易的輸入中,您不必查看比該地址更早的所有交易即可知道該地址有多少比特幣。這意味著我們可以通過 Merkle 剪枝技巧從只保留雜湊值的塊中刪除所有這些較舊的交易。隨著時間的推移,每個舊區塊中的默克爾樹會變得越來越小,以便騰出空間。

我知道這將永遠刪除交易的一部分,但每個比特幣地址的比特幣數量將保持正確,也許這是保持可管理區塊鏈的代價。

在這個方向上已經有一些工作了嗎?這是一個愚蠢的想法嗎?

謝謝您的幫助

一筆交易消耗所有用於連接交易輸出的硬幣。但是一個比特幣地址可以有多個交易。因此,即使消費了一筆交易,這並不意味著該地址沒有任何其他硬幣。

不過,您的總體想法是正確的。一旦交易的所有輸出都用完,您就可以刪除交易(交易可以有多個輸出,因此您必須跟踪每個輸出)。這已經在備用比特幣客戶端中進行了討論甚至實施。我不知道它是否或何時可以在參考客戶端(bitcoind/bitcoin-qt)中實現。

我有一個使用 SQL 數據庫的實現。到目前為止,它已經處理了截至 2013 年 8 月的區塊鏈,並且有 2,000,000 筆交易未使用輸出。數據庫本身目前約為 1.2GB,因此與整個區塊鏈(我的系統上為 15.1GB)相比,它是一個顯著的節省。缺點是您無法向其他節點提供完整的區塊鏈(我只保留最後 30 天)。因此,您仍然需要完整的節點來提供區塊鍊或下載站點/種子以允許新節點跟上速度。

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