#metadata #substrate #parser #extrinsic #interface #blockchain #gekko

gekko-metadata

基于 substrate 的区块链元数据解析器

3 个版本

0.1.2 2021 年 8 月 17 日
0.1.1 2021 年 7 月 20 日
0.1.0 2021 年 7 月 20 日

#11 in #extrinsic


2 个 crate 中使用

MIT 许可证

13KB
288 代码行

gekko

⚠️ 此项目仍在开发中,尚未准备好用于生产 ⚠️

Gekko 提供了解析 substrate 元数据、生成相应的 Rust 接口、创建事务以及编码/解码这些事务的工具。

该项目分为多个 crate,尽管所有功能都可以通过仅使用 gekko 来暴露。

  • gekko - 包含与 Kusama、Polkadot 和 Westend 交互的运行时接口,包括创建事务。
  • gekko-metadata - 解析和处理 substrate 元数据的实用工具。
    • 可以通过在 gekko 中启用 "metadata" 功能来启用。
  • gekko-generator - 在编译时基于解析的 substrate 元数据生成 Rust 接口的宏。
    • 可以通过在 gekko 中启用 "generator" 功能来启用。

与运行时交互

Gekko 暴露了多个接口,用于与 Kusama/Polkadot 交互,例如 extrinsics、存储条目、事件、常量和错误。

关于类型的免责声明

此库不对参数类型做出假设,必须手动指定为泛型类型。每个字段都包含一个类型描述,可以作为运行时元数据提供的预期类型的提示。有关可以使用的一般类型,请参阅 [common] 模块。

Extrinsics。

可以使用 [transaction] 模块中的事务构建器来创建事务。事务格式是分版本的,反映了 Substrate 历史中的变化。除非您正在处理历史数据,否则您可能想要最新版本。

可以从 [runtime] 模块中选择 extrinsics 并相应地构建。请参阅包含创建事务实用工具的 [common] 模块。

示例

use gekko::common::*;
use gekko::transaction::*;
use gekko::runtime::polkadot::extrinsics::balances::TransferKeepAlive;

// In this example, a random key is generated. You probably want to *import* one.
let (keypair, _) = KeyPairBuilder::<Sr25519>::generate();
let currency = BalanceBuilder::new(Currency::Polkadot);

// The destination address.
let destination =
    AccountId::from_ss58_address("12eDex4amEwj39T7Wz4Rkppb68YGCDYKG9QHhEhHGtNdDy7D")
        .unwrap();

// Send 50 DOT to the destination.
let call = TransferKeepAlive {
    dest: destination,
    value: currency.balance(50),
};

// Transaction fee.
let payment = currency.balance_as_metric(Metric::Milli, 10).unwrap();

// Build the final transaction.
let transaction: PolkadotSignedExtrinsic<_> = SignedTransactionBuilder::new()
    .signer(keypair)
    .call(call)
    .nonce(0)
    .payment(payment)
    .network(Network::Polkadot)
    .spec_version(9080)
    .build()
    .unwrap();

解析元数据并生成接口

用于创建签名事务的构建器类型。

许可证:MIT

依赖

~2.8–4MB
~78K SLoC