Blockchain
為什麼比特幣儲存所有交易輸入和輸出,而不僅僅是一個“賬戶/餘額”分類賬?
據我所知,乙太坊區塊鏈只儲存賬戶和余額——為什麼最初的比特幣開發者選擇儲存所有交易進行驗證的方法,而不是只儲存賬戶餘額?似乎這會大大減少磁碟上的區塊鏈大小……
為了確保地址餘額正確,您需要檢查該地址上的所有交易是否有效。因此,為了生成您信任的地址和余額列表,您必須首先下載並驗證整個區塊鏈。
實際上,按照比特幣的工作方式,你真正需要的是未使用的交易輸出(UTXO) 列表。當你創建一個新的交易來花費硬幣時,你不只是藉記一個地址;您必須參考您之前花費的交易的一個或多個特定輸出。那些先前的輸出將變得無法使用,因此您無法再次使用它們。
Bitcoin Core 確實會生成所有 UTXO 的索引數據庫,並在檢查交易的有效性時引用它(因為這比直接通過區塊鏈搜尋要快得多)。這是與您提出的“分類帳”最接近的類比。
完成此操作後,您可以刪除區塊鏈本身並保留 UTXO 數據庫;這基本上就是該
-prune
選項的作用(請參閱如何在修剪模式下執行 bitcoind?)。但是,請記住,比特幣是一個點對點系統。所以你保留區塊鏈,以便新使用者可以從你那裡下載它。