CosmWasm 三 入口函数
cosmwasm 特点
- 合约在
cosmwasm
被称之为actor
- 异步栈式调用,将每个调用压栈,触发调用弹栈。避免重入攻击风险,并且有跨链优势
actor 调用接口
交互actor
的接口封装在WasmMsg
结构中,共有5种类型
调用接口 | 说明 |
---|---|
Instantiate | 初始化合约入口 |
Execute | 执行合约交易 |
Migrate | 迁移合约至新的代码 |
UpdateAdmin | 升级管理员 |
ClearAdmin | 清除管理员 |
说明:
- 每个
actor
有个内置的Admin
充当管理员的角色。 - 只有
Admin
拥有UpdateAdmin
、ClearAdmin
和Migrate
调用权限。 - 当
Admin
成功调用ClearAdmin
后,actor
将失去管理员角色。 - 成功调用
Migrate
后,只会改变actor
的code
,地址和状态数据不会改变。 Instantiate
、Execute
和Migrate
接口,wasm有对应的事件处理函数。
wasm 调用事件入口
instantiate
处理初始化事件代码逻辑入口
#[entry_point]
pub fn instantiate(
deps: DepsMut,
env: Env,
info: MessageInfo,
msg: InstantiateMsg,
) -> Result<Response, ContractError> {}
execute
处理交互合约事件代码逻辑入口
#[entry_point]
pub fn execute(
deps: DepsMut,
env: Env,
info: MessageInfo,
msg: ExecuteMsg,
) -> Result<Response, ContractError> {}
migrate
处理迁移事件代码逻辑入口。
此部分调用逻辑是在更新的代码中触发。
#[entry_point]
pub fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Result<Response, ContractError> {}
actor 查询接口
查询接口 | 说明 |
---|---|
Smart | 查询公共API的接口 |
Raw | 查询kv-store类型的接口 |
wasm 查询事件入口
对于Smart
查询wasm的query
接口
#[entry_point]
pub fn query(deps: Deps, env: Env, msg: QueryMsg) -> Result<Binary, ContractError> {}