2个不稳定版本

0.23.0 2024年7月18日
0.22.0 2024年7月16日

3#实例化

Download history 235/week @ 2024-07-14 157/week @ 2024-07-21 179/week @ 2024-07-28 84/week @ 2024-08-04 42/week @ 2024-08-11

每月下载 479次

GPL-3.0-or-later

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