#bindings #cyber #routes #query #energy #blockchain #thought

cyber-std

为Cyber提供CustomMsg和CustomQuery的绑定

4个版本

0.2.2 2022年8月27日
0.2.1 2022年6月2日
0.2.0 2022年4月26日
0.1.0 2022年3月1日

#5 in #cyber


用于cyber-std-test

Apache-2.0

29KB
815

CosmWasm的Cyber绑定

Crates.io Crates.io

此crate提供Cyber特定绑定,使您的CosmWasm智能合约可以通过公开可从合约内部发出和使用的消息和查询器与Cyber区块链交互。

绑定

目前,Cyber绑定包括

  • 对以下内容的查询支持
      • 粒子数量
      • Cyberlinks数量
    • 带宽
      • 带宽价格
      • 带宽负载
      • 总带宽
      • 神经元带宽
    • 排名
      • 粒子排名
    • 能源
      • 源路由
      • 源路由能源
      • 目的路由能源
      • 路由
    • DMN
      • 思想
      • 思想统计
      • 最低手续费思想
    • 流动性
      • 池参数
      • 池流动性
      • 池供应
      • 池价格
      • 池地址
  • 消息
      • MsgCyberlink
    • 资源
      • MsgInvestmint
    • 能源
      • MsgCreateRoute
      • MsgEditRoute
      • MsgEditRouteName
      • MsgDeleteRoute
    • DMN
      • MsgCreateThought
      • MsgForgetThought
      • MsgChangeThoughtInput
      • MsgChangeThoughtPeriod
      • MsgChangeThoughtBlock
      • MsgChangeThoughtGasPrice
      • MsgChangeThoughtParticle
      • MsgChangeThoughtName
    • 流动性
      • MsgCreatePool
      • MsgDepositWithinBath
      • MsgWithdrawWithinBath
      • MsgSwapWithinBath

使用

查询

为了使用由绑定启用的查询功能,在您的合约逻辑中创建一个 CyberQuerier 实例。您可以通过此对象访问所有启用的查询。

// src/contract.rs
use cosmwasm_std::Coin;
use cyber_std::{ CyberQuerier, RankValueResponse };

...

// handler
pub fn try_something(
    deps: Deps,
    _env: Env,
    particle: String,
    ...
) -> StdResult<ParticleRankResponse> {
    let querier = CyberQuerier::new(&deps.querier);
    let res: ParticleRankResponse = querier.query_particle_rank(particle)?;
    ...
    Ok(res)
}

创建消息

您可能希望您的合约在其执行结束时执行诸如 MsgCyberlink 操作之类的消息。为此,使用预定义的函数创建消息

  • create_cyberlink_msg
use cosmwasm_std::CosmosMsg;
use cyber_std::{ create_cyberlink_msg, CyberMsgWrapper };

...

pub fn try_something(
    deps: DepsMut,
    env: Env,
    links: Vec<Link>,
    ...
) -> Result<Response, ContractError> {
    ...
    let contract_addr = env.contract.address;
    let msg: CosmosMsg<CyberMsgWrapper> = create_cyberlink_msg(contract_addr.into(), links);
    
    let res = Response::new()
          .add_message(msg);
    Ok(res)
}

依赖关系

~3.5–5.5MB
~116K SLoC