#区块链 #加密 #cli #电子邮件

blockchain-cli

一个Rust库提供与区块链交互的接口

31个版本 (稳定)

1.0.25 2024年7月31日
1.0.22 2024年2月18日
1.0.19 2023年12月4日
1.0.18 2023年11月15日
0.1.6 2023年9月3日

#993 in 魔法豆

Download history 2/week @ 2024-06-03 122/week @ 2024-07-29

每月下载量122

MIT许可证

27KB
366

区块链

一个Rust库提供与区块链交互的接口。

参考实现

test release docs crate downloads codecov

Features

特性

  • new(difficulty, reward, fee):使用指定的参数初始化一个新的区块链。
  • get_transactions(page, size):使用分页详情获取区块链中当前事务的列表。
  • get_transaction(hash):通过其哈希值获取事务。
  • add_transaction(from, to, amount):将新事务添加到区块链中。
  • validate_transaction(from, amount):验证添加到区块链的新事务。
  • create_wallet(email):创建一个新的钱包,具有唯一的电子邮件地址和初始余额。
  • get_wallet_balance(address):根据地址获取钱包余额。
  • get_wallet_transactions(address, page, size):根据地址和分页详情获取钱包的交易历史。
  • get_last_hash(): 获取区块链中最后一个块的哈希值。
  • update_difficulty(difficulty): 更新区块链的挖矿难度。
  • update_reward(reward): 更新区块奖励。
  • update_fee(fee): 更新交易费用。
  • generate_new_block(): 生成一个新的区块并将其附加到区块链上。
  • get_merkle(transactions): 为一系列交易计算Merkle根哈希。
  • proof_of_work(header): 执行工作量证明过程以挖取区块。
  • hash(item): 计算可序列化项的SHA-256哈希。

选项

选项 数据类型 描述
difficulty f64 网络的初始挖矿难度级别。
reward f64 矿工的初始区块奖励。
fee f64 交易费用。

安全

该crate使用#![forbid(unsafe_code)]确保所有内容都使用100%安全的Rust实现。

文档

有关更深入的信息,请参阅完整的文档

如果您在文档中遇到任何问题或有问题,请提交问题

示例

通过一系列示例探索此区块链实现的各项功能

用法

use blockchain::Chain;

fn main() {
  // Initialise a new blockchain
  let mut chain = Chain::new(2, 100.0, 0.01);

  // Create a wallet for a sender
  let sender = chain.create_wallet(String::from("[email protected]"));
  
  // Create a wallet for a receiver
  let receiver = chain.create_wallet(String::from("[email protected]"));

  // Add a transaction
  chain.add_transaction(sender, receiver, 1.25);

  // Get a transaction
  let transaction = chain.get_transaction(
    String::from("6e8c5dc01145016e5a979683ba7e13bafaf85e765490aa33c0bba1f41cf581ed")
  );

  match transaction {
    Some(trx) => println!("📦 Transaction: {:?}", trx),
    None => println!("❌ Transaction was not found"),
  }

  // Get all transactions
  let transactions = chain.get_transactions();
  println!("📦 Transactions: {:?}", transactions);

  // Others
}

贡献

构建应用程序

cargo build

测试应用程序

cargo test

运行应用程序

cargo run

运行clippy

cargo clippy --all-targets --all-features -- -D warnings

运行lint

cargo fmt

以HTML格式生成文档

cargo doc --open

依赖关系

~2.3–3.5MB
~69K SLoC