什麼是MPT?Neo3的MPT有何不同?

買賣虛擬貨幣
今天的文章旨在介紹更多關於Merkle樹,Patricia Tries字首樹,生成state root所需的基本元件資訊,以及如何將它們用於輕客戶端的簡單支付驗證上。Neo軟體工程師張濤在上篇文章中分享了一個在修訂中的提案,並總結了當前正在開發的解決方案。根據初始提案的方案1可知,狀態將新增到PrepareRequest共識訊息中,並將簽名作為Commit訊息的一部分進行廣播。在每一輪共識後,將區塊以及state root資訊進行轉發並由網路上的節點進行解釋分析。張濤還概述了實現該特性所需的步驟,例如對P2P訊息進行修改,以及RPC節點需要新增額外的功能用於提供Merkle證明。這些證明是進行簡單支付驗證(SPV)所必需的,SPV最初由中本聰在比特幣白皮書中提出,用於允許輕客戶端在不維護整個區塊鏈副本的情況下進行交易驗證。實現State root所需的最重要模型是Merkle Patricia trie(MPT)。在RTN3系列的第一篇介紹state root的文章中,我們簡單介紹了MPTs,它是Patricia trie和Merkle樹的結合。Patricia trieTrie是由分支(邊)連線的多個頂點組成的資料結構,每條邊都用一個單獨的字元進行標記。沿著樹的路徑可以得到不同的值。基數樹是trie的壓縮版本;每條邊都用字串而不是單個字元進行標記,字串則作為後續頂點的公共字首。

Patricia trie是一種特殊的基數樹,又稱二叉基數樹。顧名思義,在二叉基數樹中,每個頂點最多有兩條邊。這意味著對於任意給定的頂點,最多隻有兩條路徑。具有相同字元的值儲存在共同字首的文件中。

上圖的例子說明了基數樹的效率。每條邊不再只儲存單一的字元(這將存在很多隻有一個子節點的頂點),而是用部分字串進行標記。

透過共享字首對儲存資料進行組織,最佳化了資料結構的儲存空間,提高了平均的查詢速度。這對於區塊鏈節點而言非常重要,因為節點需要儲存並計算大量的資料。

Merkle樹

Merkle樹是一種以多個資料塊開始的資料結構。對塊中的值進行雜湊處理則可得到樹中的第一行頂點。Merkle樹的每個後續頂點仍用雜湊表示,頂點的雜湊值可透過將父頂點的雜湊值相加並對相加的結果進行雜湊計算所得。

這些雜湊最終可計算得到一個公共的頂點,稱為Merkle根或者根雜湊。Merkle根節點可以被認為是樹中資料唯一且加密的指紋。儲存值的任意改變都將使得所連線的節點的雜湊值發生變化,從而產生不同的指紋。

Neo網路上的所有節點都會計算一個本地的狀態,並在每個新塊後確定一個state root。透過將該state root與由共識節點簽名的state root進行比較,節點即可驗證狀態與網路其他部分的一致性。

Merkle證明是這些樹的一個有趣特性,它提供了一種可用於驗證特定鍵值在樹中存在性的機制。當輕客戶端從RPC節點請求資料時,資料將附帶可說明特定值(如使用者的資產餘額)在樹中存在的Merkle證明。

這意味著輕客戶端可以以一種去信任的方式驗證來自RPC節點的資訊,其中只需要Merkle證明以及從P2P網路接收到的共識節點的最新狀態確認。

簡單支付驗證

以上面的Merkle證明圖為例。假設一個輕錢包使用者想要傳送一筆交易,但是在此之前需要驗證RPC節點是否提供了準確的資產餘額資訊。該餘額資訊儲存在資料塊c中。

由於輕錢包不會儲存區塊鏈資料,因此它會請求RPC節點提供Merkle證明。RPC節點會提供c中的餘額值以及“路徑證明”,即從c向上移動到state root所需的雜湊列表。在這種情況下,RPC節點將提供c中的餘額值以及hash(d) 與h(h(a) + h(b)))的值。

有了這些值,輕錢包就可以開始驗證了。首先,對c的餘額值進行雜湊處理得到h(c)。該雜湊值與hash(d)相加後,再次對結果進行雜湊處理從而獲得h(h(c) + h(d)))的值。

重複此過程,將計算所得的h(h(c) + h(d)))與RPC節點提供的h(h(a) + h(b)))相加,最後再進行一次雜湊計算得到Merkle根。此時就可以開始進行驗證了。

如果RPC節點提供的c塊中的資產餘額以及路徑證明是正確的,則此過程將獲得與共識節點在P2P網路上簽名和廣播的相同的Merkle根。如果餘額或者路徑證明不正確將產生一個不同的state root,即可證明RPC節點提供了與共識節點不一致的錯誤資訊。

輕錢包現在就可以在不儲存區塊鏈副本的情況下驗證餘額資料,確保RPC伺服器提供的資訊與共識節點一致。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;