11个开源merkle树实现

Posted 跨链技术践行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11个开源merkle树实现相关的知识,希望对你有一定的参考价值。

Merkle树是一种可以有效验证部分数据存在于指定数据集并且未被篡改的 高效的哈希树结构,作为一种底层技术广泛应用在各种区块链的实现当中, 对于商品溯源、知识产权确认、区块链公证等区块链应用起着重要的作用。 本文介绍11个主流的merkle树开源实现,你可以在自己的项目中应用。

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树实现的主要内容,如果未能解决你的问题,请参考以下文章

128个数据块的哈希树(Merkle Tree)错误定位问题

用Merkle-Patricia树实现交易的实时审计

使用Merkle树检测数据不一致(翻译)

区块链学习笔记难度整定,区块形成,区块体,Merkle树,Merkle Proof默克尔证明

get value 函数如何在稀疏 merkle 树中工作?

6个P2P流媒体开源项目介绍