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

汇智网原创,转载请标明出处