9 个版本 (2 个稳定版)

2.1.0 2024年8月14日
2.0.0 2024年8月12日
0.5.1 2023年2月28日
0.4.0 2023年1月11日
0.1.1 2022年12月14日

#209神奇豆子

Download history 1973/week @ 2024-05-02 2165/week @ 2024-05-09 2437/week @ 2024-05-16 2181/week @ 2024-05-23 2111/week @ 2024-05-30 2295/week @ 2024-06-06 2638/week @ 2024-06-13 2291/week @ 2024-06-20 1722/week @ 2024-06-27 1537/week @ 2024-07-04 1693/week @ 2024-07-11 2411/week @ 2024-07-18 1619/week @ 2024-07-25 1907/week @ 2024-08-01 2586/week @ 2024-08-08 1546/week @ 2024-08-15

每月下载量 7,992
91 个crate中使用了 91 (直接使用42个)

Apache-2.0

32KB
460

CW Ownable

控制CosmWasm智能合约所有权的工具。

如何使用

使用此crate提供的initialize_owner方法在实例化期间初始化所有者

use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response};
use cw_ownable::OwnershipError;

#[entry_point]
pub fn instantiate(
    deps: DepsMut,
    env: Env,
    _info: MessageInfo,
    msg: InstantiateMsg,
) -> Result<Response<Empty>, OwnershipError> {
    cw_ownable::initialize_owner(deps.storage, deps.api, msg.owner.as_deref())?;
    Ok(Response::new())
}

使用#[cw_ownable_execute]宏扩展您的执行消息

use cosmwasm_schema::cw_serde;
use cw_ownable::cw_ownable_execute;

#[cw_ownable_execute]
#[cw_serde]
enum ExecuteMsg {
    Foo {},
    Bar {},
}

该宏在枚举中插入一个新变体,UpdateOwnership

#[cw_serde]
enum ExecuteMsg {
    UpdateOwnership(cw_ownable::Action),
    Foo {},
    Bar {},
}

其中Action可以是以下三个之一

  • 提议将合约的所有权转让给另一个账户
  • 接受提议的所有权转让
  • 放弃所有权,永久地将合约的所有者设置为空缺

使用此crate提供的update_ownership函数处理消息

use cosmwasm_std::{entry_point, DepsMut, Env, MessageInfo, Response};
use cw_ownable::{cw_serde, update_ownership, OwnershipError};

#[entry_point]
pub fn execute(
    deps: DepsMut,
    env: Env,
    info: MessageInfo,
    msg: ExecuteMsg,
) -> Result<Response, OwnershipError> {
    match msg {
        ExecuteMsg::UpdateOwnership(action) => {
            update_ownership(deps, &env.block, &info.sender, action)?;
        }
        _ => unimplemneted!(),
    }
    Ok(Response::new())
}

使用#[cw_ownable_query]宏扩展您的查询消息

use cosmwasm_schema::{cw_serde, QueryResponses};
use cw_ownable::cw_ownable_query;

#[cw_ownable_query]
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
    #[returns(FooResponse)]
    Foo {},
    #[returns(BarResponse)]
    Bar {},
}

该宏在枚举中插入一个新变体,Ownership

#[cw_serde]
#[derive(QueryResponses)]
enum QueryMsg {
    #[returns(Ownership<String>)]
    Ownership {},
    #[returns(FooResponse)]
    Foo {},
    #[returns(BarResponse)]
    Bar {},
}

使用此crate提供的get_ownership函数处理消息

use cosmwasm_std::{entry_point, Deps, Env, Binary};
use cw_ownable::get_ownership;

#[entry_point]
pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> StdResult<Binary> {
    match msg {
        QueryMsg::Ownership {} => to_binary(&get_ownership(deps.storage)?),
        _ => unimplemented!(),
    }
}

您可以创建用于其他目的的新所有权

use cw_ownable::OwnershipStore;

const CREATOR: OwnershipStore = OwnershipStore::new("creator");

CREATOR已提供所有函数:initialize_owneris_ownerassert_ownerget_ownership

许可

此包在或之前版本 0.5.0 的内容根据 GNU Affero General Public License v3 或更高版本发布;该版本之后的内容根据 Apache-2.0 许可发布。

依赖项

~4–7.5MB
~151K SLoC