Bitcoind

修剪區塊鏈,它刪除了什麼?

  • January 3, 2021

我正在嘗試確定是否要修剪,但我正在嘗試弄清楚它是否會干擾任何事情。

它會干擾 rpc 呼叫以顯示交易/塊的資訊嗎?一個完整的探索者?

它會干擾顯示交易歷史嗎?

我終於下載了完整的區塊鏈,這需要很長時間,所以我想確定一下。我不需要額外的空間。

修剪區塊鏈,它刪除了什麼?

什麼

超過給定高度的塊的原始塊數據。

如果我們查看<https://bitcoincore.org/en/releases/0.11.0/>,它會說

此版本支持執行完全驗證節點,而無需在磁碟上維護原始塊的副本和撤消數據。回顧一下,比特幣系統中有四種與區塊鏈相關的數據:通過網路接收的原始塊(blk???.dat)、撤消數據(rev???.dat)、塊索引和 UTXO 集(都是 LevelDB 數據庫)。數據庫是根據原始數據建構的。

塊修剪允許比特幣核心刪除原始塊並在數據經過驗證並用於建構數據庫後撤消數據。此時,原始數據僅用於將塊中繼到其他節點、處理重組、查找舊交易(如果啟用了 -txindex 或通過 RPC/REST 介面)或重新掃描錢包。區塊索引繼續保存有關區塊鏈中所有區塊的元數據。

因此,如果刪除原始塊數據和撤消數據,大概會留下塊索引和 UTXO 集作為不受剪枝影響的“四種數據”中的兩種。

修改後的 RPC 呼叫:

getblockchaininfo現在包括我們是否處於修剪模式。

getblock將檢查塊的數據是否已被修剪,如果是,則返回錯誤。

getrawtransaction將不再能夠找到具有 UTXO 但其塊文件已被修剪的事務。

因此,一些 RPC 呼叫會為修剪後的數據返回錯誤。

什麼時候

然而,最近的 288 個區塊被保留(大約 2 天),無論它們的所有交易輸出是否都已用完。

關於刪除包含多個單獨標記為刪除的塊的文件的時間,還有一些其他詳細資訊。我認為這不會顯著影響這個答案,但它可能是你應該研究的東西 - 取決於你想要達到的目標。


它會干擾 rpc 呼叫以顯示交易/塊的資訊嗎?

顯然,如果該塊已被修剪,它將妨礙節點報告它的能力。如上所述,如果塊已被修剪,某些 RPC 呼叫將返回錯誤。

一個完整的探險家?

同上。


它會干擾顯示交易歷史嗎?

它可能會干擾顯示任意交易的歷史記錄,但您仍然應該能夠查看由此錢包/節點創建的所有交易。

我認為您不會總是能夠立即通過先前的交易檢索交易輸入來源的完整詳細資訊,一直到創建目前由修剪節點控制的貨幣的“coinbase”交易。

所以這可能取決於你所說的歷史是什麼意思?

  • 該節點之前創建的交易
  • 自己的“實時”交易直接或間接提及的歷史交易。

我認為修剪節點的目的是它應該作為*個人錢包完全發揮作用*,但需要更少的磁碟儲存空間。**

如果您將其用作個人錢包以外的其他東西,您可能會發現必須明確解決一些重大缺點。我想這取決於預期用途的確切細節。


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