2个不稳定版本
0.23.0 | 2024年7月18日 |
---|---|
0.22.0 | 2024年7月16日 |
3 在 #实例化
每月下载 479次
23KB
459 行
抽象独立
此包包含一个 StandaloneContract
结构体,可以用于与抽象链上基础设施交互。
用法
首先,在您的 Cargo.toml
中导入此包。
[dependencies]
abstract-standalone = "<latest version>"
然后,定义合约的常量
pub const CONTRACT_ID: &str = "my-namespace:my-contract";
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub const MY_CONTRACT: MockStandaloneContract =
MockStandaloneContract::new(CONTRACT_ID, VERSION, None);
接下来,将 StandaloneInstantiateMsg
结构体包含在合约的实例化消息中。我们需要这些数据来实例化 MY_CONTRACT
状态。
use abstract_standlone::StandaloneInstantiateMsg;
#[cosmwasm_schema::cw_serde]
pub struct InstantiateMsg {
pub base: StandaloneInstantiateMsg,
// .. Your custom fields here.
}
然后,使用 StandaloneInstantiateMsg
结构体来实例化状态。
#[cosmwasm_std::entry_point]
pub fn instantiate(
deps: DepsMut,
env: Env,
info: MessageInfo,
msg: InstantiateMsg,
) -> Result<Response, MockError> {
MY_CONTRACT.instantiate(deps, info, msg.base, true)?;
// Your custom logic here.
}
最后,您可以使用 MY_CONTRACT
常量通过我们的 API 与抽象链上基础设施交互。
#[cosmwasm_std::entry_point]
pub fn execute(
deps: DepsMut,
env: Env,
info: MessageInfo,
msg: ExecuteMsg,
) -> Result<Response, MockError> {
// Example of using an Abstract API.
let bank: Bank<StandaloneContract> = MY_CONTRACT.bank(deps.as_ref());
let account_balance: Coin = bank_api.balance(&AssetEntry::new("abstract"))?;
// ...
Ok(MY_CONTRACT.response("mock_exec"))
}
依赖
~21–35MB
~509K SLoC