8 个版本
0.1.7 | 2024 年 4 月 14 日 |
---|---|
0.1.6 | 2024 年 4 月 14 日 |
#694 在 加密
36 每月下载量
10KB
182 行
Rust Merkle
这是 Merkle 树的 Rust 实现。
入门指南
以下步骤将帮助您在本地机器上创建项目副本并运行开发与测试。
先决条件
您需要安装哪些软件以及如何安装它们
- Rust:您可以从这里安装
安装
一系列逐步示例,告诉您如何获取开发环境运行
git clone [email protected]:keohanoi/rust-merkle.git
cd rust-merkle
cargo build
运行测试 解释如何运行此系统的自动化测试
cargo test
示例
找到 Merkle 树的根
use rust_merkle::merkle::{MerkleTreeKeccak, MerkleTreeSha256};
fn main() {
// Example usage:
let hashes = vec![vec![0; 32], vec![1; 32], vec![2; 32], vec![3; 32]];
let tree_keccak = MerkleTreeKeccak::new(hashes.clone());
let tree_sha256 = MerkleTreeSha256::new(hashes.clone());
println!("Root (Keccak): {:?}", tree_keccak.tree.root());
println!("Root (SHA256): {:?}", tree_sha256.tree.root());
}
使用特定结构构建
use rust_merkle::merkle::MerkleTreeKeccak;
pub struct TestStruct {
pub field1: String,
pub field2: u64,
}
fn main() {
// Example usage:
let vals: Vec<TestStruct> = vec![
TestStruct {
field1: "test1".to_string(),
field2: 1,
},
TestStruct {
field1: "test2".to_string(),
field2: 2,
},
TestStruct {
field1: "test3".to_string(),
field2: 3,
}
];
let mut hashes: Vec<Vec<u8>> = vec![];
for i in 0..vals.len() {
let bytes = [vals[i].field1.as_bytes(), &vals[i].field2.to_string().as_bytes()].concat();
let hash = MerkleTreeKeccak::keccak256(&bytes);
hashes.push(hash);
}
let tree_keccak = MerkleTreeKeccak::new(hashes.clone());
println!("Root (Keccak): {:?}", tree_keccak.tree.root());
}
依赖项
~1.5MB
~12K SLoC