#substreams #firehose #antelope #thegraph #pinax #api-bindings

substreams-antelope

Antelope链的Substreams开发工具包,包含Firehose Block模型和辅助工具

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 魔法豆

Download history 120/week @ 2024-07-29

每月120次下载

MIT/Apache

530KB
6K SLoC

Substreams for Antelope

github crates.io docs.rs GitHub Workflow Status

此库包含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工作区中提升版本
  • 提交更改
  • 标记发布
  • 按照以下顺序发布包:coreabigensubstreams-antelope

依赖项

~5–8MB
~139K SLoC