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("[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