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 在 魔法豆
305 每月下载量
用于 sei-integration-tests
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
- 获取支持资产的时间加权平均价格
- ExchangeRates
- 查询
- Dex
- 查询
- DexTwaps
- 获取特定订单簿上资产的时间加权平均价格
- GetOrders
- 根据特定账户在dex订单簿上获取订单
- GetLatestPrice
- 通过特定合约和资产对获取最新价格
- GetOrderById
- 通过订单ID获取单个订单
- DexTwaps
- 消息
- PlaceOrders
- 通过dex订单簿批量下单
- CancelOrders
- 通过dex订单簿批量取消订单
- PlaceOrders
- 查询
- Epoch
- 查询
- Epoch
- 获取当前纪元信息
- Epoch
- 查询
- TokenFactory
- 查询
- DenomAuthorityMetadata
- 获取tokenfactory代币的代币权威元数据
- DenomsFromCreator
- 获取创建者所有的tokenfactory代币
- DenomAuthorityMetadata
- 消息
- CreateDenom
- 创建一个给定子代币的
factory/{creator address}/{subdenom}
类型的代币。
- 创建一个给定子代币的
- MintTokens
- 铸造一定数量的工厂代币。只有代币的创建者(管理员)可以铸造。
- BurnTokens
- 销毁一定数量的工厂代币。只有代币的创建者(管理员)可以销毁。
- ChangeAdmin
- 更改代币的管理员。只有当前管理员可以更改管理员。
- SetMetadata
- 设置工厂代币的代币元数据。只有当前管理员可以设置元数据。
- CreateDenom
- 查询
- EVM
- 查询
- StaticCall
- EVM合约的通用查询端点
- Erc20TransferPayload
- 从
recipient
和amount
获取Erc20转账有效负载
- 从
- Erc20TransferFromPayload
- 基于
owner
、recipient
和amount
获取Erc20转账有效负载
- 基于
- Erc20ApprovePayload
- 从
spender
和amount
获取Erc20批准有效负载
- 从
- Erc20Allowance
- 从
contract address
、owner
和spender
获取Erc20允许量
- 从
- Erc20TokenInfo
- 从
contract address
和caller
获取Erc20代币信息
- 从
- Erc20Balance
- 从
contract address
和account
获取Erc20余额
- 从
- Erc721TransferPayload
- 类似于Erc20等价物
- Erc721ApprovePayload
- 类似于Erc20等价物
- Erc721Approved
- 检查调用者是否被批准代表所有者发送Erc721。需要
contract address
和token id
- 检查调用者是否被批准代表所有者发送Erc721。需要
- Erc721IsApprovedForAll
- 检查调用者是否被批准代表所有者操作所有Erc721。需要
caller
、contract address
、owner
和operator
- 检查调用者是否被批准代表所有者操作所有Erc721。需要
- Erc721SetApprovalAllPayload
- 从
caller
、contract address
、owner
和operator
获取Erc721 SetApproveAll有效负载
- 从
- Erc721NameSymbol
- 根据
caller
和contract address
获取Erc721名称和符号
- 根据
- Erc721Uri
- 根据
caller
、contract_address
和token_id
获取Erc721 URI
- 根据
- GetEvmAddress
- 获取与Sei地址关联的EVM地址
- GetSeiAddress
- 获取与EVM地址关联的Sei地址
- StaticCall
- 消息
- DelegateCallEvm
- 执行EVM委托调用。需要
to
和data
- 执行EVM委托调用。需要
- CallEvm
- 执行EVM调用。需要
value
、to
和data
- 执行EVM调用。需要
- DelegateCallEvm
- 查询
用法
查询
要在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