roadmap
Topics 區塊鏈Current Page

什麼是默克爾樹? 默克爾樹在區塊鏈中扮演怎樣的角色?

    中級
    區塊鏈
    Dec 9, 2022
    閱讀時間 15 分鐘
    0

    AI 概要

    展開

    僅需 30 秒,即可快速掌握文章內容並判斷市場情緒!

    詳細概要

    默克爾樹在計算機科學應用中用作數據驗證和同步的數據結構。默克爾樹還用於更安全、更高效地加密比特幣和其他加密貨幣中的區塊鏈數據。 

    使用加密貨幣時,默克爾樹數據庫用於安全拆分區塊數據,確保數據不會丟失、損壞或更改。這種數據管理方法無需下載整個 TB 大小的區塊鏈,即可驗證特定交易。這是一種運行區塊鏈的可靠、安全且加密的方法。

    由於中央交易所 (CEX) 巨頭 FTX 的垮臺,許多 CEX 已建立並實施默克爾樹作爲準備金證明 (PoR),以確保用戶資金安全。在本文中,我們將討論什麼是默克爾樹,它們在區塊鏈中的作用,以及用戶如何使用默克爾樹驗證資金。

    默克爾樹的創始人是誰?

    Ralph Merkle 是一位以公鑰加密技術而聞名的計算機科學家,他在 1987 年發表的論文「基於傳統加密功能的數字簽名」中提出了默克爾樹。加密哈希也由默克爾發明。

    什麼是默克爾樹?

    默克爾樹是一種基於哈希值的數學數據結構,用於編譯區塊中所有交易的摘要。這是一種以去中心化方式快速檢查數據準確性的方法。由於其功能,默克爾樹能夠更有效地安全地用於加密區塊鏈數據。 

    默克爾樹通常用於點對點 (P2P) 網絡,因爲需要共享信息並進行獨立驗證。讓我們詳細瞭解默克爾樹及其運作方式。

    默克爾樹結構

    默克爾樹也稱爲哈希樹,具有二叉樹結構,底行交易數據的哈希值稱爲「葉節點」,中間哈希值稱爲「非葉節點」,頂部哈希值稱爲「根」。儘管大多數哈希樹實現是二進制的(每個節點都有兩個子節點),但它們也可以有更多的子節點。

    查看默克爾樹的結構時,所有交易均成對分組。每個交易對都有一個直接存儲在父節點中的計算哈希值。這些節點也被分組爲對,其哈希值存儲在下一級。這一過程一直持續到默克爾樹的根源。

    下面我們來瞭解一下每個節點:

    葉節點

    這些是區塊中每筆加密貨幣交易的哈希值,也稱爲交易 ID (TXID)。當您在區塊瀏覽器上搜索交易時,您會看到交易哈希值。

    非葉節點

    然後,爲了在葉節點上方創建一層非葉節點,這些葉節點成對哈希在一起。它們被稱爲非葉節點,因爲與葉節點相比,它們僅存儲其表示的兩個葉節點的哈希值,並且不包含交易ID(或哈希值)。因此,葉節點上方的非葉節點層中存在的哈希(或節點)將是葉節點層中的哈希(或節點)的一半。隨着樹在上升過程中變窄,這些非葉節點層繼續成對哈希,導致每層節點數量減少一半。最終非葉節點層將有兩個節點。這創建了默克爾根,是默克爾樹中最後一次哈希的位置。

    默克爾根

    使用比特幣時,所有交易的哈希值將合併爲單個哈希值,並存儲在區塊標頭中。默克爾根,也稱爲根哈希,就是這種特殊的哈希。Merkle 樹根底部的葉節點(交易 ID/哈希值)可以使用此 Merkle 根進行驗證。當用於加密貨幣時,默克爾根確保數據塊保持不變、未損壞且完整。

    默克爾樹是二元樹,這意味着不同葉節點的總數必須相等,才能正確構建樹。當葉節點數量異常時,將複製之前的哈希值,以提供偶數節點。

    默克爾樹如何運作?

    默克爾樹本質上旨在將大量數據分解爲小得多的區塊,從而確保所有交易都能得到及時驗證。該樹透過創建一組特定交易的小指紋來總結每筆交易,使用戶能夠更輕鬆地驗證區塊中交易的可用性。 

    默克爾樹是透過對不同的節點對進行哈希處理而形成的,直到僅剩一個哈希值,稱爲默克爾根。這些樹是從下而上構建的,每筆交易都由哈希組成。每個葉節點都是一個單一的數據哈希值。至於非葉節點,這些是之前哈希的哈希值。

    假設默克爾樹由四筆交易組成,分別標記爲 D0, D1, D2 和 D3。每筆交易都會在哈希直接存儲在葉節點上之前進行哈希處理。出現這種情況時,將創建哈希值 N0, N1, N2 和 N3。隨後,任何連續的葉節點對都將透過哈希值 N0 和哈希值 N1 的哈希值在父節點中進行彙總,從而導致哈希值 N4。如果哈希 N2 和哈希 N3 一起哈希,則會創建哈希 N5。爲了創建默克爾根,N4 和 N5 這兩個哈希值都將再次哈希。

    該流程可與大量數據集配合使用。Merkle 根目錄負責彙總特定交易中存在的數據,所有數據均直接存儲在區塊標頭中。該技術可正確維護數據完整性。如果某個時間點交易中的一個詳情發生變化,默克爾根將隨之自動更改。

    默克爾樹的優勢

    使用默克爾樹驗證交易時,區塊鏈技術和加密貨幣平台具有諸多優勢,包括從高效驗證到輕鬆篡改檢測。

    高效的數據驗證流程

    交易完整性幾乎無需任何時間即可得到驗證。由於數據的結構,在驗證過程中幾乎不需要使用內存,所需的計算能力也大幅降低。 

    由於區塊鏈通常由數十萬個區塊組成,每個區塊最多可包含數千筆交易,因此驗證數據會帶來兩大挑戰:內存空間和計算能力。如果默克爾樹不是區塊鏈中的概念,則網絡上的每個節點都需要保留區塊鏈上發生的每一筆交易的完整副本。節點在驗證交易時必須逐行比較每條輸入行,以確保其記錄與網絡記錄完全一致。如果記錄之間存在任何差異,可能會危及網絡的安全性。因此,爲了比較記錄以確保沒有變化,用於驗證數據的計算機需要更高的處理能力。 

    另一方面,默克爾樹透過大幅減少因驗證需求而必須保留的數據量,爲這一問題提供了一種解決方案。它們對賬本中的每個條目進行哈希處理,將數據本身與支持數據的證據有效分開。無需瞭解區塊中的每個 TXID,即可使用 Merkle 根與 Merkle 樹一起檢查 TXID。默克爾樹本質上是一種證明數據集中存在某些內容的好方法,無需下載整個數據集。因此,驗證交易所需的計算能力較低。

    更快的處理速度

    由於驗證者之間區塊上的交易分配,每個驗證者同時處理不同的交易。與每筆交易逐次驗證的方法相比,這要有效得多。

    加密貨幣錢包的使用

    默克爾樹支持簡單的支付驗證 (SPV),讓您無需下載整個區塊或區塊鏈即可確認交易。這使得輕客戶端節點能夠使用更正式地稱爲加密貨幣錢包來發送和接收交易。

    檢測任何篡改

    透過哈希結構,礦工可以輕鬆識別交易是否遭到篡改。 

    每個區塊使用默克爾根生成一個不同的哈希值。該區塊透過在區塊鏈中加入前一區塊的哈希值,將一個區塊鏈接到另一個區塊。每當修改交易時,任何交易的哈希值都會發生變化。該區塊因本次更改而失效,因爲它會級聯到默克爾根並更改其值。這樣會導致以下區塊的哈希值發生變化,導致區塊鏈的其餘部分無效。因此,默克爾樹創建了區塊交易的不可變記錄。

    因此,還可避免雙倍支出。如果個人試圖將數字貨幣加倍支出,則會爲該交易生成哈希值。如果哈希值與區塊鏈上的現有記錄一致,則該交易將被拒絕。

    爲什麼默克爾樹在區塊鏈中很重要?

    事實證明,默克爾樹對區塊鏈技術至關重要,因爲它們能夠以其他技術無法實現的方式快速輕鬆地進行驗證。這些默克爾樹使開發人員能夠壓縮超大數據集,消除所有不必要的數據,並將剩餘的數據轉化爲哈希值。默克爾樹提供的各種功能包括:

    • 結構輕巧
    • 有效可擴展性
    • 燃油效率
    • 驗證交易是否包含在特定區塊中
    • 基本支付認證

    默克爾樹預留證明 (PoR)

    正如一開始提到的,FTX 下跌後,用戶一直擔心自己的資金是否在 CEX 中得到保障。因此,多個 CEX 紛紛推出默克爾樹準備金證明機制。在本節中,我們將介紹默克爾證明以及用戶如何驗證資金。

    默克爾證明

    默克爾樹證明是從默克爾樹中切出來的,而不是實際樹。並表示爲數組或序列(下圖中的橙色部分所示)。

    所有葉節點和公司特定單用戶的餘額信息均由圖上一級節點表示。假設圖中的粉色用戶代表證明的預期接收者,我們會逐級提取圖中的橙色部分,並按高度順序向用戶展示證明文件。值得注意的是,默克爾證明有兩個主要組成部分

    1. 不會提取此用戶的直接父節點(即 B 和 D)。
    2. 提供根節點,即默克爾根節點。

    以 1,000 萬用戶爲例,根據數學公式,樹的高度可計算爲 Log2(10,000,000) = 23.2534966642,即樹的高度爲 24 級。因此,圖表中故意未提供給用戶的節點數量爲 24 - 2 = 22。

    默克爾樹是一棵完整的二叉樹,透過瞭解左右節點,我們可以計算其父節點的所有信息。完整信息由兩部分組成:餘額數據和哈希數據。

    1. 餘額數據:父節點數據可以且只能拆分爲左下節點和右下節點。
    2. 哈希數據:每個節點僅顯示餘額數據、樹層次數據和子節點哈希數據(每個節點將左右節點的摘要數據保留在其下方)。

    默克爾樹的驗證透過推導 B 和 D 並驗證

    1. 餘額符合拆分原則;以及
    2. 哈希是合法的

    透過利用哈希彙總功能,默克爾樹使用戶能夠確定自己是否是整棵樹的一部分,而無需瞭解圖表中的每個紫色節點。Merkle 證明僅面向該用戶。例如,24 級默克爾樹需要由 23 個元素組成的數組來驗證用戶的餘額信息,並且該數組只能確認用戶的餘額證明準確無誤。

    用戶無法根據其碎片信息重建整個樹,只要其獲取的用戶數量不超過總用戶的一半。因此,默克爾樹既保護了用戶的隱私,又保護了公司防止公司整體資產信息泄露的能力。

    正在驗證您的 Bybit 賬戶

    有兩種方法可用於驗證 Bybit 賬戶並檢查資金的有效性。

    平台驗證工具

    該方法是整個網絡中的第一個也是唯一一個,它將在公司平台上以直觀的圖形方式顯示默克爾樹驗證的節點衍生過程。

    自我驗證工具

    該公司的默克爾樹生成源代碼和驗證碼在github上公開提供,可幫助用戶對自己的驗證進行編程。默克爾樹計算過程涉及大量的用戶計算,通常由大數據和Java實現。 

    *開放的 Java 代碼意味着它面向用戶開放,不會拖延任何信息。

    Bybit 已開放以下代碼供專業用戶驗證自己的默克爾樹證明文件,方法是透過「複製數據」按鈕將其從準備金證明頁面複製到自己的系統「粘性」版本,並將其存儲爲名爲 myProof.json 的文件並存儲到本地磁盤。

    默克爾樹在區塊鏈中的應用

    默克爾樹和默克爾根結構已被廣泛應用於許多不同的區塊鏈和加密貨幣平台。下面詳細介紹了三種此類應用。

    比特幣

    比特幣以多種方式使用默克爾樹,這使得這些樹成爲整個比特幣平台不可或缺的一部分。事實上,這些樹存在於每個比特幣區塊標頭中。區塊內可用的每筆交易的哈希值都放在標題中。在比特幣方面,默克爾根對挖礦和驗證至關重要。

    挖礦

    比特幣區塊由包含元數據的標頭以及豐富的交易列表組成。此列表通常大於區塊的頁眉。礦工哈希數據可創建符合特定條件的輸出,這是驗證區塊時所必需的。礦工可以在找到有效區塊之前進行數萬億次單獨嘗試。每次嘗試都需要更改區塊標題中的數字。儘管區塊中可能存在數千筆單獨的交易,但每筆交易都必須進行哈希處理。

    Merkle 根源使礦工能夠更高效地完成這一過程。挖礦過程開始時,只需將交易輸入默克爾樹,即可將根哈希值放入區塊標頭。此時,礦工只需對區塊的標頭進行哈希處理,而不是對整個區塊進行哈希處理。

    驗證

    與比特幣一起使用的默克爾根的另一個方面是槓桿,其重點是輕型客戶。當節點在資源有限的相對較弱的設備上運行時,用戶將無法下載和哈希單個區塊內的每筆交易。相反,可以要求提供默克爾證明,即確認交易存在於區塊中。透過減少驗證過程中需要執行的哈希次數,無需使用盡可能多的計算資源即可進行驗證。

    以太坊

    以太坊基於默克爾樹的修改版本,因此被稱爲默克爾帕特里夏樹。以太坊區塊鏈中的每個區塊都由三棵默克爾樹組成,而不是一棵二叉樹,這就是比特幣區塊中發生的情況。這三個根都有自己的目的。

    初始根被視爲每筆交易的根。至於第二根,它顯示了交易狀態。最後的根是交易收據。用戶可查看默克爾根目錄,確定特定區塊上是否存在交易,並確定賬戶餘額。

    Hyperledger 面料

    具體來說,Hyperledger Fabric 平台 是使用默克爾樹計算區塊數據作爲哈希值。哈希值表示默克爾樹的寬度。Hyperledger Fabric 平台 平台上的默克爾樹與比特幣平台的默克爾樹一樣運作。

    結語

    事實證明,默克爾樹對加密貨幣平台非常有用,這些平台希望確保其交易驗證過程儘可能簡單高效。如果沒有這種結構,驗證將是一個耗時的過程,因爲數據需要在整個網絡中傳輸以進行驗證。使用默克爾樹的平台受益於更低的帶寬和計算能力要求。

    獲取屬於您的每日加密貨幣和交易信息

    沒有垃圾郵件。 加密空間中只有大量的乾貨和行業更新

    立即訂閱