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
原文鏈接:11個開源merkle樹實現 — 匯智網