首頁>Club>
13
回覆列表
  • 1 # 小鴿子看世界

    要我投票的話,我覺得最酷的資料結構是 Merkle樹。要理解 Merkle樹,我們首先要了解雜湊指標,這是Merkle樹的概念基礎。

    雜湊指標就是一對值:

    雜湊指標=(指標,雜湊值)

    這個指標具體指一個記憶體地址。這和連結串列和樹形圖的指標沒有區別。

    有趣的一點是,雜湊值域包含各種內容的雜湊,卻被指向。

    如下圖所示:

    紅色箭頭表示儲存記憶體地址的指標,H()暗示雜湊值的儲存。

    當我們採用常規資料結構,並用雜湊指標取代指標時,雜湊指標的作用是很明顯的。舉個例子,當你做一個連結串列,但是使用的是雜湊指標,而不是常規指標時,你會得到一個叫“資料區塊鏈”的資料結構:

    資料區塊鏈的神奇之處在於,它提供篡改檢測。如果有人試圖改變某一節點的資料,那麼雜湊值就會改變,那麼就會與雜湊指標上報告的雜湊值不符。

    資料區塊鏈最著名的應用就是比特幣,這是一種新型網路貨幣,它每十分鐘被區塊收集一次。因為資料區塊鏈提供篡改檢測,並可以記錄最後一個擁有雜湊指標的人,也就是說,它可以記錄整個交易過程,即使是比特幣的交易也能做到。

    這就帶我們來到了最後一個環節——Merkle樹。Merkle樹是一種二進位制樹,它的指標也被換成了雜湊指標,而資料儲存在“樹葉”中。舉個例子:

    和資料區塊鏈差不多,Merkle樹也是防篡改的,因為它也依靠雜湊指標。最後一個使用者只需要在指令碼上儲存最後一次的雜湊指標就可以。

    Merkle樹的酷就酷在它能有效證明身份。如果有人告訴你一個儲存在Merkle樹“樹葉”裡的具體區塊,nn位元組,你可以讓他們直接告訴你從指令碼到“樹葉”lognlogn位元組。如果雜湊指標有效,這意味著每一個雜湊指標都儲存著正確的資訊,那麼身份就得以證明了。另一方面,如果想用區塊證明身份,需要提供現在至一千個區塊以前,這段範圍的所有區塊。

    Merkle樹有無數應用,包括GIT版本控制、比特幣區塊儲存,還有很多其他的應用,它們會自己證明自己的價值。

  • 中秋節和大豐收的關聯?
  • 如何評價《失戀巧克力職人》中紗繪子的戀愛觀?