11个版本
0.4.2 | 2024年7月30日 |
---|---|
0.4.1 | 2024年3月24日 |
0.3.5 | 2024年3月27日 |
0.3.2 | 2023年8月4日 |
0.1.0 | 2023年1月24日 |
#467 in 魔法豆
每月120次下载
530KB
6K SLoC
Substreams
for Antelope
此库包含Antelope块的生成protobuf以及从块数据中提取和解析的辅助方法。
📖 文档
https://docs.rs/substreams-antelope
其他资源
安装
$ cargo add substreams-antelope
用法
请参考Docs.rs以获取从Antelope块中提取动作和事务迭代器的Block
辅助方法。
Cargo.toml
[dependencies]
substreams = "0.5"
substreams-antelope = "0.4"
src/lib.rs
use substreams::prelude::*;
use substreams::errors::Error;
use substreams_antelope::{Block, ActionTraces};
#[substreams::handlers::map]
fn map_action_traces(block: Block) -> Result<ActionTraces, Error> {
let mut action_traces = vec![];
for trx in block.transaction_traces() {
for trace in trx.action_traces {
action_traces.push(trace);
}
}
Ok(ActionTraces { action_traces })
}
或者,使用actions()
辅助方法从myaccount
账户中过滤出所有Statelog
类型的动作。作为参数,您可以指定一个包含要包含动作的合约账户名的列表,如果要从任何合约账户中获取此签名下的动作,则该列表可以为空。
src/lib.rs
#[substreams::handlers::map]
fn map_actions(param_account: String, block: substreams_antelope::Block) -> Result<Actions, substreams::errors::Error> {
Ok(Actions {
transfers: block.actions::<abi::contract::actions::Transfer>(&["eosio.token"])
.map(|(action, trace)| Transfer {
// set action fields
})
.collect(),
})
}
使用Abigen
要为您的智能合约生成ABI绑定,可以将包含智能合约ABI的abi/contract.abi.json
文件以及以下build.rs
文件添加到项目的根目录。这将确保包含您的智能合约Rust绑定的src/abi/contract.rs
模块始终在您的项目中生成。
build.rs
fn main() {
substreams_antelope::Abigen::new("Contract", "abi/gems.blend.abi.json")
.expect("failed to load abi")
.generate()
.expect("failed to generate contract")
.write_to_file("src/abi/gems.blend.abi.rs")
.expect("failed to write contract");
}
发布
- 在Cargo.toml工作区中提升版本
- 提交更改
- 标记发布
- 按照以下顺序发布包:
core
,abigen
,substreams-antelope
。
依赖项
~5–8MB
~139K SLoC