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 在 神奇豆子
每月下载量 7,992
在 91 个crate中使用了 91 (直接使用42个)
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_owner
、is_owner
、assert_owner
和get_ownership
。
许可
此包在或之前版本 0.5.0
的内容根据 GNU Affero General Public License v3 或更高版本发布;该版本之后的内容根据 Apache-2.0 许可发布。
依赖项
~4–7.5MB
~151K SLoC