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> {}