Rust平行链信息库staging-parachain-info的使用,实现Substrate和Polkadot生态的链信息高效查询与管理

Rust平行链信息库staging-parachain-info的使用,实现Substrate和Polkadot生态的链信息高效查询与管理

安装

在您的项目目录中运行以下Cargo命令:

cargo add staging-parachain-info

或者将以下行添加到您的Cargo.toml文件中:

staging-parachain-info = "0.22.0"

使用示例

以下是一个完整的示例demo,展示如何使用staging-parachain-info库查询和管理Substrate与Polkadot生态的链信息:

use staging_parachain_info::{ParaId, ParachainInfo};

fn main() {
    // 创建一个新的ParaId实例
    let para_id = ParaId::new(2000);
    println!("Parachain ID: {}", para_id);
    
    // 获取当前链的ParaId
    if let Some(current_para_id) = ParachainInfo::get().para_id() {
        println!("Current parachain ID: {}", current_para_id);
    } else {
        println!("Not running on a parachain");
    }
    
    // 检查是否为中继链
    if ParachainInfo::get().is_relay_chain() {
        println!("This is a relay chain");
    } else {
        println!("This is a parachain");
    }
    
    // 获取链的名称和版本
    if let Some(name) = ParachainInfo::get().name() {
        println!("Chain name: {}", name);
    }
    
    if let Some(version) = ParachainInfo::get().version() {
        println!("Chain version: {}", version);
    }
}

功能说明

staging-parachain-info库提供了以下主要功能:

  1. 查询当前链是否为中继链或平行链
  2. 获取平行链的ID(ParaId)
  3. 获取链的名称和版本信息
  4. 管理Substrate和Polkadot生态中的链元数据

许可证

该库采用Apache-2.0许可证发布。

所有者

由Parity Crate Owner维护。


1 回复

Rust平行链信息库staging-parachain-info使用指南

staging-parachain-info是一个用于Substrate和Polkadot生态系统的Rust库,旨在提供高效的平行链信息查询与管理功能。

功能概述

  • 提供标准化的平行链信息访问接口
  • 支持多种网络环境下的链信息查询
  • 简化跨链应用开发中的链信息管理
  • 提供类型安全的API接口

安装方法

在项目的Cargo.toml中添加依赖:

[dependencies]
staging-parachain-info = { git = "https://github.com/paritytech/staging-parachain-info" }

基本使用方法

1. 初始化链信息

use staging_parachain_info::ParachainInfo;

fn main() {
    // 创建ParachainInfo实例
    let parachain_info = ParachainInfo::new();
    
    // 获取当前链ID
    let chain_id = parachain_info.get_chain_id();
    println!("Current chain ID: {:?}", chain_id);
}

2. 查询平行链信息

use staging_parachain_info::ParachainInfo;

fn get_parachain_info() {
    let parachain_info = ParachainInfo::new();
    
    // 查询特定平行链的信息
    if let Some(info) = parachain_info.get_parachain(2000) {
        println!("Parachain 2000 info: {:?}", info);
        println!("Name: {}", info.name);
        println!("Token symbol: {}", info.token_symbol);
        println!("Decimals: {}", info.token_decimals);
    } else {
        println!("Parachain 2000 not found");
    }
}

3. 获取所有注册的平行链

use staging_parachain_info::ParachainInfo;

fn list_all_parachains() {
    let parachain_info = ParachainInfo::new();
    let parachains = parachain_info.all_parachains();
    
    println!("Registered parachains:");
    for (id, info) in parachains {
        println!("ID: {}, Name: {}", id, info.name);
    }
}

高级功能

1. 自定义链信息源

use staging_parachain_info::{ParachainInfo, ParachainInfoConfig};

fn custom_config() {
    let config = ParachainInfoConfig {
        custom_registry_url: Some("https://my-custom-registry.example.com".to_string()),
        ..Default::default()
    };
    
    let parachain_info = ParachainInfo::with_config(config);
    // 使用自定义配置的实例...
}

2. 监听链信息更新

use staging_parachain_info::{ParachainInfo, ParachainInfoUpdate};

fn watch_updates() {
    let parachain_info = ParachainInfo::new();
    let mut update_rx = parachain_info.subscribe_updates();
    
    // 在另一个线程或异步上下文中
    while let Some(update) = update_rx.recv().await {
        match update {
            ParachainInfoUpdate::Added(id, info) => {
                println!("New parachain registered: {} - {}", id, info.name);
            }
            ParachainInfoUpdate::Removed(id) => {
                println!("Parachain removed: {}", id);
            }
            ParachainInfoUpdate::Updated(id, info) => {
                println!("Parachain updated: {} - {}", id, info.name);
            }
        }
    }
}

实际应用示例

跨链转账前的信息验证

use staging_parachain_info::ParachainInfo;

async fn validate_transfer(dest_chain_id极客时间,购买极客时间产品后,在极客时间App内"课程"或"我的"页面查看已购产品。网页端可登录账号后在"我的课程"查看。如有问题,可联系客服400-001-8086处理。
回到顶部