Bitcoin-Core

提供 Merkle Path 的機制是什麼?

  • March 19, 2022

在比特幣中,SPV 節點可以查詢它的交易是否包含到完整節點的特定塊中,該完整節點提供具有超快速計算的默克爾路徑。

就全節點而言,它們有全賬本和由交易樹組成的默克爾樹。所以他們可以找到 SPV 節點(輕節點)查詢的一些交易,但我的問題是他們如何有效地找到它?

如果他們必須進行排序搜尋,他們可能不喜歡計算來查找交易,因為他們正忙於尋找塊的雜湊值來獲得塊獎勵。

對不起我的英語不好。

如果他們必須進行序列搜尋,他們可能不喜歡計算來查找交易,因為他們正忙於尋找塊的雜湊值來獲得塊獎勵

您將探勘與節點操作混淆了。

它是網路上的一個完整節點,會將有關相關 merkle 路徑的資訊返回到 SPV 錢包。

探勘是由專門的硬體單獨完成的,該硬體的建構在雜湊查找新塊時非常有效。挖礦硬體將連接到一個全節點,以便獲取相關資訊來建構新的區塊模板。但是這兩個計算是在單獨的硬體上並行完成的。

因此,即使礦工的節點是提供 merkle 路徑資訊的節點,也不會佔用他們的採礦時間。

首先我不知道實現細節,所以也許我有一些誤解。但是我仍然認為我可以提供幫助。如果我錯了,請糾正我:-D。

BIP37協議允許全節點通過布隆過濾器從區塊鏈賬本中找出相關交易,這樣輕量級客戶端就不必下載完整的區塊。但是,它仍然非常低效。它的效率遠低於 ElectrumX、Electrs 等全索引伺服器。全節點仍然需要掃描區塊鏈,這需要密集讀取硬碟驅動器。

請注意,Electrum 協議(本質上)要求輕量級客戶端直接發送其地址,因此其隱私性不好。

BIP157 / 158(又名 Neutrino)協議讓全節點提前建立區塊過濾索引,輕量級客戶端只需先下載區塊過濾索引即可。有了這樣的塊過濾器索引,輕量級客戶端可以掃描過濾器以找出哪些塊可能是相關的,然後它可以下載那些可能相關的塊以從中掃描出相關的交易。

Neutrino 協議仍然不如 Electrum 伺服器(或線上區塊瀏覽器)等全索引伺服器高效,但它的效率足以讓普通筆記型電腦在 1-2 分鐘內掃描整個區塊鏈,這幾乎是比直接掃描區塊鏈本身效率高兩個數量級。與完全索引的伺服器相比,塊過濾器索引佔用的磁碟空間也少得多。頻寬消耗明顯更高,因為塊過濾器索引目前需要大約 5GB,但是一旦完全下載,就可以自由重複使用。

但是,bitcoinj和Android比特幣錢包的維護者 Andreas Schildbach認為 Neutrino 仍然存在一些限制/問題,因此它並不是 BIP37 的真正替代品。


順便說一句,默克爾證明能做的比很多人想像的要有限得多。

**Merkle 路徑僅證明交易數據本身的存在,本質上只是一個時間戳。**這一事實本質上使中本聰白皮書中提到的“回收磁碟空間”變得不切實際

SPV輕客戶端也面臨著類似的問題,甚至中本聰本人也提到SPV“可能被攻擊者偽造的交易所愚弄”,而不幸的是,中本聰認為的對策(現在又稱為“欺詐證明”)似乎不可能(或總是不完整)現實。

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