CosmWasm 三 入口函数

cosmwasm 特点

  • 合约在cosmwasm被称之为actor
  • 异步栈式调用,将每个调用压栈,触发调用弹栈。避免重入攻击风险,并且有跨链优势

actor 调用接口

交互actor的接口封装在WasmMsg结构中,共有5种类型

调用接口 说明
Instantiate 初始化合约入口
Execute 执行合约交易
Migrate 迁移合约至新的代码
UpdateAdmin 升级管理员
ClearAdmin 清除管理员

说明:

  1. 每个actor有个内置的Admin充当管理员的角色。
  2. 只有Admin拥有UpdateAdminClearAdminMigrate调用权限。
  3. Admin成功调用ClearAdmin后,actor将失去管理员角色。
  4. 成功调用Migrate后,只会改变actorcode,地址和状态数据不会改变。
  5. InstantiateExecuteMigrate接口,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> {}