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 魔法豆
每月下载量122
27KB
366 行
区块链
一个Rust库提供与区块链交互的接口。
参考实现
特性
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("sender@mail.com"));
// Create a wallet for a receiver
let receiver = chain.create_wallet(String::from("receiver@mail.com"));
// 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