02.26 11個開源Merkle樹實現

Merkle樹是一種可以有效驗證部分數據存在於指定數據集並且未被篡改的 高效的哈希樹結構,作為一種底層技術廣泛應用在各種區塊鏈的實現當中, 對於商品溯源、知識產權確認、區塊鏈公證等區塊鏈應用起著重要的作用。 本文介紹11個主流的merkle樹開源實現,你可以在自己的項目中應用。

區塊鏈開發教程鏈接:以太坊 | 比特幣 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple

1、ethereumjs/merkle-patricia-tree - 以太坊官方merkle樹實現

merkle-patricia-tree是以太坊黃皮書中的改進merkle patricia樹的實現。 目前僅支持leveldb作為存儲後端。

  • 開發語言:TypeScript/JavaScript
  • 源碼下載:https://github.com/ethereumjs/merkle-patricia-tree

2、google/Trillian - 大規模可驗證數據存儲

Trillian是google提供的一個透明的、高度可伸縮的密碼學可驗證數據存儲庫,它 採用MySQL或MariaDB作為後端存儲層,可以支持非常大規模的merkle樹。Trillian 通過gRPC提供服務接口。

  • 開發語言:Golang
  • 源碼下載:https://github.com/google/trillian

3、greglook/merkle-db - 用於分析數據集的merkle存儲

merkle-db是一個高度可伸縮的基於不可變merkle樹的分析數據庫,主要 用於存儲和訪問採用混合列結構的大規模數據集。merkle-db採用Clojure開發。

  • 開發語言:Clojure
  • 源碼下載:https://github.com/greglook/merkle-db

4、nomic-io/merk - Rust高性能鍵/值庫

merk是一個採用Rust開發的高性能鍵/值庫,採用RocksDB作為存儲後端, 採用Merkle+AVL作為算法基礎數據結構。merk的主要設計場景是應用於 區塊鏈中。

  • 開發語言:Rust
  • 源碼下載:https://github.com/nomic-io/merk

5、ProximaDB - 支持merkle證據的可驗證數據庫

ProximaDB是一個支持merkle證據的可驗證數據庫,主要包括數據存儲、交易 管理和查詢操作這三部分實現。

  • 開發語言:JavaScript
  • 源碼下載: https://github.com/proxima-one/ProximaDB

6、tendermint/iavl - tendermint官方多版本merkle樹庫實現

iavl是tendermint官方提供的多版本merkle+avl樹實現,採用leveldb作為 後端存儲層。

  • 開發語言:Golang
  • 源碼下載: https://github.com/tendermint/iavl

7、cbergoon/merkletree - go語言實現的merkle樹

merkletree是一個採用golang實現的merkle樹,它沒有使用數據庫等持久化 機制,完全在內存中實現,非常適合理解merkletree的算法,並在此基礎上 根據自己的需求加以調整。

  • 開發語言:Golang
  • 源碼下載: https://github.com/cbergoon/merkletree

8、miguelmota/merkletreejs - js實現的merkle樹

merlketreejs是JavaScript實現的merkle樹生成與驗證庫,同樣沒有 後端持久化機制,完全在內存中實現,在單一javascript文件中實現 全部代碼,可以用於瀏覽器環境,非常適合學習理解merkletree的運作機制。

  • 開發語言:JavaScript/TypeScript
  • 源碼下載:https://github.com/miguelmota/merkletreejs

9、c-geek/merkle - nodejs版本的merkle樹

c-geek/merkle是一個nodejs版本的merkle樹實現,支持 sha512, sha256, ripemd160, whirlpool, sha1, md5 等多種數據指紋算法,也支持數據不經 哈希直接生成merkle樹。該項目同樣沒有後端持久化機制,完全在內存中實現。

c-geek/merkle採用CommonJS封裝,主要針對node.js環境,也可以 藉助於webpack等工具在瀏覽器環境中使用。

  • 開發語言:JavaScript
  • 源碼下載:https://github.com/c-geek/merkle

10、quux00/merkle-tree - Java實現的merkle樹

quux00/merkle-tree是採用Java實現的merkle樹,作者主要將其用於檢測 事件序列中的失序事件。項目實現了merkle樹的序列化/反序列化,因此為其 增加持久化機制變得非常簡單。

  • 開發語言:Java
  • 源碼下載:https://github.com/quux00/merkle-tree

11、SpinResearch/merkle.rs - Rust實現的merkle樹

merkle.rs是採用Rust實現的Merkle樹,沒有後端存儲機制,適合原理性學習。

  • 開發語言:Rust
  • 源碼下載:https://github.com/SpinResearch/merkle.rs

匯智網原文鏈接:http://blog.hubwiz.com/2020/02/26/merkle-projects/


分享到:


相關文章: