2 个版本
0.1.1 | 2024 年 6 月 26 日 |
---|---|
0.1.0 | 2024 年 6 月 25 日 |
#6 in #mpt
217 每月下载量
用于 8 个 crate (2 直接)
54KB
1K SLoC
eth-trie-proofs
为 Ethereum trie 提供全面的证明处理程序。已测试各种 EIP,包括 Legacy、EIP-2930、EIP-1559 和 EIP-4844。此存储库公开了证明构建功能和一个 CLI 版本。
特性
-
交易 trie 处理器
- 使用目标区块号构建 trie
- 使用目标交易哈希构建 trie
- 按交易索引检索证明
- 验证证明
-
交易收据 trie 处理器
- 使用目标区块号构建 trie
- 使用目标交易哈希构建 trie
- 按交易索引检索证明
- 验证证明
CLI 工具
CLI 工具支持生成交易和收据的证明。根据您的需求使用以下命令
使用以下命令安装:cargo install --path ./
或者,不安装直接运行:cargo run --bin etp-cli
通过 CLI 生成证明
要为交易生成证明,请使用以下命令
etp-cli tx<TRANSACTION_HASH> [RPC_URL]
要生成收据证明
etp-cli receipt<TRANSACTION_HASH> [RPC_URL]
默认情况下,使用 https://ethereum-rpc.publicnode.com
作为 RPC 提供商。这可能会对最近的事务有效,但建议使用专用 RPC。
安装
将依赖项 eth-trie-proofs
添加到您的项目
eth-trie-proofs = { git = "https://github.com/HerodotusDev/eth-trie-proofs.git", branch = "main" }
示例
使用目标区块号或目标交易哈希构建交易 trie
let target_tx_hash = B256::from(hex!(
"1fcb1196d8a3bff0bcf13309d2d2bb1a23ae1ac13f5674c801be0ff9254d5ab5"
));
let mut txs_mpt_handler = TxsMptHandler::new(MAINNET_RPC_URL)?;
txs_mpt_handler
.build_tx_tree_from_block(4370000)
.await?;
let tx_index = txs_mpt_handler.tx_hash_to_tx_index(target_tx_hash)?;
let proof = txs_mpt_handler.get_proof(tx_index)?;
txs_mpt_handler
.verify_proof(tx_index, proof.clone())?;
// You can either build with target tx hash. Both roots match.
let mut txs_mpt_handler2 = TxsMptHandler::new(MAINNET_RPC_URL)?;
txs_mpt_handler2
.build_tx_tree_from_tx_hash(target_tx_hash)
.await?;
assert_eq!(
txs_mpt_handler.get_root().unwrap(),
txs_mpt_handler2.get_root().unwrap()
);
使用目标区块号构建交易收据 trie
// 4844 transaction
let target_tx_hash = B256::from(hex!(
"9c1fbda4f649ac806ab0faefbe94e1a60282eb374ead6aa01bac042f52b28a8c"
));
let mut tx_receipts_mpt_handler = TxReceiptsMptHandler::new(MAINNET_RPC_URL)?;
tx_receipts_mpt_handler
.build_tx_receipts_tree_from_block(19426589)
.await?;
let tx_index = tx_receipts_mpt_handler
.tx_hash_to_tx_index(target_tx_hash)
.await?;
let proof = tx_receipts_mpt_handler.get_proof(tx_index)?;
tx_receipts_mpt_handler
.verify_proof(tx_index, proof.clone())?;
致谢
对于 trie 实现,此项目依赖于 eth_trie。对于交易和交易收据类型,高度依赖于 alloy。
许可
eth-trie-proofs
根据 GNU 通用公共许可证 v3.0 许可。
Herodotus Dev Ltd - 2024
依赖项
~28–42MB
~823K SLoC