#cosmwasm #module #cosmwasm-contracts #contract #bindings #query #bit-badges

bitbadges-cosmwasm

为CosmWasm合约调用BitBadges节点自定义模块的绑定

9个版本

0.0.10 2024年8月12日
0.0.9 2024年4月13日
0.0.8 2024年1月15日
0.0.3 2023年11月27日
0.0.2 2023年4月23日

#343 in 魔法豆

Download history 14/week @ 2024-04-15

每月下载量466次

Apache-2.0

40KB
837

BitBadges的CosmWasm绑定

这个crate提供了用于从CosmWasm智能合约与BitBadges网络上的自定义模块(x/badges)通信的自定义绑定。

安装

将crate添加到您的智能合约的'Cargo.toml'中

[dependencies]
bitbadges-cosmwasm = { version = "X.X.X" }

暴露的绑定

到目前为止,这个crate仅导出对x/badges模块的绑定。将来,将添加更多自定义绑定。

创建消息

**注意**:BitBadges绑定不包括CosmWasm团队已实现的某些消息,例如与质押相关的消息和基本消息,如MsgSend。您可能希望您的合约在其执行结束时执行DeleteCollectionTransferBadges操作。为此,使用预定义的函数创建一个消息:

transfer_badges_msg

并将其添加到您的响应中,如下所示:

  • transfer_badges_msg
  • ...

并添加到您的响应中,如下所示

use cosmwasm_std::CosmosMsg;
use bitbadges_cosmwasm::{transfer_badges_msg};...pub fn execute_msg_transfer_badges(
    collection_id: String,
    transfers: Vec<Transfer>,
) -> StdResult<Response<BitBadgesMsg>> {
    let msg = transfer_badges_msg(
        collection_id,
        transfers,
    );

    Ok(Response::new().add_message(msg))
}

查询

要使用绑定启用查询函数,请在您的合约逻辑中创建一个BitBadgesQuerier实例 - 在init()query()入口点中。您可以通过此对象访问所有启用的查询。

// src/contract.rs
use bitbadges_cosmwasm::{ BitBadgesQuerier };...pub fn query_collection(deps: Deps, collection_id: String) -> StdResult<BadgeCollection> {
    let querier = BitBadgesQuerier::new(&deps.querier);
    let res: BadgeCollection = querier.query_collection(collection_id)?;

    Ok(res)
}

示例

请参阅/contracts中的示例智能合约 - 您可以在那里看到从智能合约向自定义模块发出事务或进行查询的示例。您可以通过以下步骤上传它并与之交互(以及通过它与bitbadges链交互)。这假设您有一个本地运行的bitbadges链。

clonedDir='path/to/the/test/smart/contract/binary'
bitbadgeschaind tx wasm store $clonedDir/bindings_tester.wasm --from=<address> --chain-id=<chain-id> --gas=auto -y
INIT='{}'

# Find the code_id of your stored contract (in the raw_log of output of the previous command or can query with bitbadgeschaind query wasm list-code)

bitbadgeschaind tx wasm instantiate your_code_id $INIT --from=<address> --label="your_label" --chain-id=<chain-id> --gas=auto -y
TESTER=$(bitbadgeschaind query wasm list-contract-by-code $CODE --output json | jq -r '.contracts[-1]')
echo $TESTER

# NOTE: sender field in the queries should be the address of your contract, in this case - $TESTER
# issueDenom
# NOTE: schema is optional field

# NOTE: we convert to camelCase which should be used here
msgDetails='{
    "transferBadgesMsg": {
        "collectionId": "test",
        "transfers": [
            {
              ....
            }
        ]
    }
}'
bitbadgeschaind tx wasm execute $TESTER $msgDetails --from=<address> --chain-id=<chain-id> --gas=auto -y 

致谢

此存储库是从Cudos cosmwasm 绑定库分叉而来的。我们感谢Cudos团队在此项目上的工作。

依赖项

~3.5–5.5MB
~113K SLoC