#merkle-tree #proof #contracts #verification #integrate #seamlessly #open-zeppelin

oz_merkle_rs

一个轻量级的Merkle树实现,旨在与OpenZeppelin合约无缝集成以进行证明验证

4个版本

0.1.3 2024年4月10日
0.1.2 2024年4月9日
0.1.1 2024年4月9日
0.1.0 2024年2月9日

#22 in #integrate

Download history 1/week @ 2024-05-15 8/week @ 2024-05-22

每月 137 次下载

MIT 许可证

14KB
181

OZ Merkle-rs

介绍

OZ Merkle-rs是一个轻量级的、高效的Merkle树实现,用Rust编写,旨在与OpenZeppelin合约无缝集成以进行证明验证。

特性

  • 轻量级设计:针对最小内存占用和最大性能进行优化。
  • 无缝集成:与OpenZeppelin合约即插即用,便于将其集成到您的区块链项目中。
  • Rust实现:利用Rust的安全性和并发特性,确保安全高效的操作。
  • Keccak256:支持Keccak256哈希。

入门指南

先决条件

  • Rust(推荐使用最新稳定版)
  • Cargo(Rust的包管理器)

安装

oz_merkle_rs添加到您的Cargo.toml文件

[dependencies]
oz_merkle_rs = "0.1.1"

基本用法

use oz_merkle_rs::MerkleTree;
use std::str::FromStr;

fn main() {
    let data = vec![
    (Address::from_str("0x1111111111111111111111111111111111111111").unwrap(),
        U256::from_dec_str("1840233889215604334017").unwrap()),
    (Address::from_str("0x00393d62f17b07e64f7cdcdf9bdc2fd925b20bba").unwrap(),
        U256::from_dec_str("7840233889215604334017").unwrap()),
    ];

    // Create a new Merkle tree from the data
    let merkle_tree = MerkleTree::new(data);
}

示例

let data = vec![
    (Address::from_str("0x1111111111111111111111111111111111111111").unwrap(),
        U256::from_dec_str("1840233889215604334017").unwrap()),
    (Address::from_str("0x00393d62f17b07e64f7cdcdf9bdc2fd925b20bba").unwrap(),
        U256::from_dec_str("7840233889215604334017").unwrap()),
    ];
        let tree = MerkleTree::new(data);
        let node = MerkleTree::hash_node(data[0]);
        let proof = tree.get_proof(node).unwrap();
        let result = tree.verify_proof(node, proof, tree.get_root().unwrap());

许可证

OZ Merkle-rs是开源的,可在MIT许可证下使用。

依赖关系

~24–41MB
~768K SLoC