5 unstable releases
0.3.0 | Oct 15, 2024 |
---|---|
0.2.2 | Aug 27, 2022 |
0.2.1 | Jun 2, 2022 |
0.2.0 | Apr 26, 2022 |
0.1.0 | Mar 1, 2022 |
#9 in #cyber
21 downloads per month
Used in cyber-std-test
43KB
1K
SLoC
Cyber Bindings for CosmWasm
This crate provides Cyber-specific bindings to enable your CosmWasm smart contracts to interact with the Cyber blockchain by exposing messages and queriers that can be emitted and used from within your contract.
Bindings
Currently, the Cyber bindings include:
- Query support for:
- Graph
- ParticlesAmount
- CyberlinksAmount
- Bandwidth
- BandwidthPrice
- BandwidthLoad
- BandwidthTotal
- NeuronBandwidth
- Rank
- ParticleRank
- Energy
- SourceRoutes
- SourceRoutedEnergy
- DestinationRoutedEnergy
- Route
- DMN
- Thought
- ThoughtStats
- ThoughtLowestFee
- Liquidity
- PoolParams
- PoolLiquidity
- PoolSupply
- PoolPrice
- PoolAddress
- Graph
- Messages
- Graph
- MsgCyberlink
- Resources
- MsgInvestmint
- Energy
- MsgCreateRoute
- MsgEditRoute
- MsgEditRouteName
- MsgDeleteRoute
- DMN
- MsgCreateThought
- MsgForgetThought
- MsgChangeThoughtInput
- MsgChangeThoughtPeriod
- MsgChangeThoughtBlock
- MsgChangeThoughtGasPrice
- MsgChangeThoughtParticle
- MsgChangeThoughtName
- Liquidity
- MsgCreatePool
- MsgDepositWithinBath
- MsgWithdrawWithinBath
- MsgSwapWithinBath
- Graph
Usage
Querying
In order to use the query functions enabled by the bindings, create a CyberQuerier
instance within your contract logic. You can access all the enabled queries through this object.
// 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)
}
Creating Messages
You may want your contract to perform messages such as MsgCyberlink
operations at the end of its execution. To do this, create a message using the predefined functions:
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)
}
Dependencies
~4.5–6.5MB
~132K SLoC