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作為後端存儲層。
7、cbergoon/merkletree - go語言實作的merkle樹
merkletree是一個采用golang實作的merkle樹,它沒有使用資料庫等持久化機制,完全在記憶體中實作,非常适合了解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等工具在浏覽器環境中使用。
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樹,沒有後端存儲機制,适合原理性學習。
原文連結:
11個開源merkle樹實作 — 彙智網