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库提供了以下主要功能:
- 查询当前链是否为中继链或平行链
- 获取平行链的ID(ParaId)
- 获取链的名称和版本信息
- 管理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处理。