#cosmwasm-contracts #contract #query #interact #bindings #helper #sei

sei-cosmwasm

用于与sei区块链交互的cosmwasm合同的绑定和辅助工具

17个版本

0.4.15 2024年4月22日
0.4.12 2023年10月23日
0.4.10 2023年2月23日
0.4.9 2022年11月23日
0.2.0 2022年7月21日

#947魔法豆

Download history 172/week @ 2024-04-15 206/week @ 2024-04-22 19/week @ 2024-04-29 5/week @ 2024-05-06 10/week @ 2024-05-13 11/week @ 2024-05-20 32/week @ 2024-05-27 17/week @ 2024-06-03 33/week @ 2024-06-10 49/week @ 2024-06-17 24/week @ 2024-06-24 133/week @ 2024-07-01 91/week @ 2024-07-08 86/week @ 2024-07-15 102/week @ 2024-07-22 17/week @ 2024-07-29

305 每月下载量
用于 sei-integration-tests

Apache-2.0

62KB
1K SLoC

Sei绑定库为Cosmwasm合同

此库提供Sei特定绑定,使cosmwasm合同能够通过公开自定义消息、查询和结构来与Sei区块链交互,这些结构对应于Sei链中自定义模块的功能。

安装

将sei-cosmwasm依赖项添加到您的智能合同的Cargo.toml文件

[dependencies]
sei-cosmwasm = { version = "0.4.15" }

功能

目前,Sei绑定支持查询和消息支持,用于Sei自定义模块Oracle、Dex、Epoch和TokenFactory。支持的功能包括以下内容

  • Oracle
    • 查询
      • ExchangeRates
        • 获取支持资产的价格
      • OracleTwaps
        • 获取支持资产的时间加权平均价格
  • Dex
    • 查询
      • DexTwaps
        • 获取特定订单簿上资产的时间加权平均价格
      • GetOrders
        • 根据特定账户在dex订单簿上获取订单
      • GetLatestPrice
        • 通过特定合约和资产对获取最新价格
      • GetOrderById
        • 通过订单ID获取单个订单
    • 消息
      • PlaceOrders
        • 通过dex订单簿批量下单
      • CancelOrders
        • 通过dex订单簿批量取消订单
  • Epoch
    • 查询
      • Epoch
        • 获取当前纪元信息
  • TokenFactory
    • 查询
      • DenomAuthorityMetadata
        • 获取tokenfactory代币的代币权威元数据
      • DenomsFromCreator
        • 获取创建者所有的tokenfactory代币
    • 消息
      • CreateDenom
        • 创建一个给定子代币的factory/{creator address}/{subdenom}类型的代币。
      • MintTokens
        • 铸造一定数量的工厂代币。只有代币的创建者(管理员)可以铸造。
      • BurnTokens
        • 销毁一定数量的工厂代币。只有代币的创建者(管理员)可以销毁。
      • ChangeAdmin
        • 更改代币的管理员。只有当前管理员可以更改管理员。
      • SetMetadata
        • 设置工厂代币的代币元数据。只有当前管理员可以设置元数据。
  • EVM
    • 查询
      • StaticCall
        • EVM合约的通用查询端点
      • Erc20TransferPayload
        • recipientamount获取Erc20转账有效负载
      • Erc20TransferFromPayload
        • 基于ownerrecipientamount获取Erc20转账有效负载
      • Erc20ApprovePayload
        • spenderamount获取Erc20批准有效负载
      • Erc20Allowance
        • contract addressownerspender获取Erc20允许量
      • Erc20TokenInfo
        • contract addresscaller获取Erc20代币信息
      • Erc20Balance
        • contract addressaccount获取Erc20余额
      • Erc721TransferPayload
        • 类似于Erc20等价物
      • Erc721ApprovePayload
        • 类似于Erc20等价物
      • Erc721Approved
        • 检查调用者是否被批准代表所有者发送Erc721。需要contract addresstoken id
      • Erc721IsApprovedForAll
        • 检查调用者是否被批准代表所有者操作所有Erc721。需要callercontract addressowneroperator
      • Erc721SetApprovalAllPayload
        • callercontract addressowneroperator获取Erc721 SetApproveAll有效负载
      • Erc721NameSymbol
        • 根据callercontract address获取Erc721名称和符号
      • Erc721Uri
        • 根据callercontract_addresstoken_id获取Erc721 URI
      • GetEvmAddress
        • 获取与Sei地址关联的EVM地址
      • GetSeiAddress
        • 获取与EVM地址关联的Sei地址
    • 消息
      • DelegateCallEvm
        • 执行EVM委托调用。需要todata
      • CallEvm
        • 执行EVM调用。需要valuetodata

用法

查询

要在Sei链上使用这些自定义查询,您可以创建一个SeiQuerier实例,并使用适当的参数调用查询辅助函数。

let querier = SeiQuerier::new(&deps.querier);
let res: ExchangeRatesResponse = querier.query_exchange_rates()?;

消息

要使用自定义消息,这些消息需要包含在合约响应中,以便由Sei链执行。

let test_order = sei_cosmwasm::SeiMsg::PlaceOrders {
    contract_address: env.contract.address,
    funds: vec![some_funds],
    orders: vec![some_order],
};
Ok(Response::new().add_message(test_order))

Tokenfactory

Tokenfactory支持任何Sei用户创建、铸造、烧毁和更改自定义代币的所有者。

// create a new coin denom through the tokenfactory module.
// This will create a denom with fullname "factory/{creator address}/{subdenom}"
let test_create_denom = sei_cosmwasm::SeiMsg::CreateDenom {
    subdenom: "subdenom".to_string(),
};
Ok(Response::new().add_message(test_create_denom))


// mint a token and send to a designated receiver
// note here the denom name provided must be the fullname in format of "factory/{creator address}/{subdenom}"
let tokenfactory_denom =
    "factory/".to_string() + env.contract.address.to_string().as_ref() + "/subdenom";
let amount = coin(100, tokenfactory_denom);

let test_mint = sei_cosmwasm::SeiMsg::MintTokens {
    amount: amount.to_owned(),
};
let send_msg = SubMsg::new(BankMsg::Send {
    to_address: info.sender.to_string(),
    amount: vec![amount],
});

Ok(Response::new()
    .add_message(test_mint)
    .add_submessage(send_msg))


// burn a token, the denom name provided must be the fullname in format of "factory/{creator address}/{subdenom}"
let tokenfactory_denom =
    "factory/".to_string() + env.contract.address.to_string().as_ref() + "/subdenom";
let amount = coin(10, tokenfactory_denom);
let test_burn = sei_cosmwasm::SeiMsg::BurnTokens { amount };
Ok(Response::new().add_message(test_burn))

// change the owner of a token 
let tokenfactory_denom =
    "factory/".to_string() + env.contract.address.to_string().as_ref() + "/subdenom";
let new_admin_address = "${NEW_ADMIN_ADDRESS}".to_string();
let test_change_admin = sei_cosmwasm::SeiMsg::ChangeAdmin {
    denom: tokenfactory_denom,
    new_admin_address,
};
Ok(Response::new().add_message(test_change_admin))

依赖关系

~5.5–7.5MB
~157K SLoC