Injective | Documentation
InjectiveGithub
Injective | 中文文档
Injective | 中文文档
  • 关于 Injective
  • 快速入门
    • 钱包
      • 创建钱包
      • 账户
      • 质押
      • 治理
      • 拍卖
    • 代币标准
      • INJ 代币
      • Token Factory
      • CW20 标准
    • 交易
      • Gas 和 Fees
  • 指南
    • 创建钱包
    • 桥接
      • From Ethereum
      • Using Wormhole
      • Using IBC
      • From Solana
    • 发布代币
    • 发布市场
    • Denom 元数据
    • 获取INJ
  • 工具包
    • injectived
      • 安装 injectived
      • 使用 injectived
      • 指令
    • Injective TS SDK
    • Injective Go SDK
    • Injective Python SDK
    • Injective CW SDK
    • The Graph
  • 参考
  • 术语表
  • 开发者
    • 快速入门
      • 指南
        • 测试网提案
        • 转换地址
        • 计算
          • 最低价格刻度
          • 最低数量刻度
    • 交易所开发者
      • 构建 DEX
      • 预言机提供方
    • Cosmwasm 开发者
      • 您的首个智能合约
      • 指南
        • 本地开发
        • 主网开发
        • 给部署地址白名单
        • 创建您的 Swap 合约
        • 创建 UIs
      • CW20 适配器
      • Injective Test Tube
    • 模块
      • Injective
        • 拍卖(Auction)
          • State
          • 消息
          • EndBlock
          • 事件
          • 参数
        • 交易所(Exchange)
          • 衍生品市场概念
          • 现货市场概念
          • 二元期权市场概念
          • 其他概念
          • 状态
          • 状态转换
          • 消息
          • 提案
          • BeginBlock
          • EndBlock
          • 事件
          • 参数
          • MsgPrivilegedExecuteContract
        • 保险(Insurance)
          • 状态
          • 状态转换
          • 消息
          • EndBlock
          • 事件
          • 参数
          • 改进
        • OCR
          • 概念
          • 状态
          • 消息
          • 提案
          • BeginBlock
          • 钩子(Hooks)
          • 事件
          • 参数
        • 预言机(Oracle)
          • 状态
          • Keeper
          • 消息
          • 提案
          • 事件
          • 改进
        • Peggy
          • 定义
          • 工作流
          • 状态
          • 消息
          • 处罚
          • EndBlock
          • 事件
          • 参数
          • 中继语义
          • 改进
        • 权限(Permissions)
          • 概念
          • 状态
          • 状态转换
        • 代币工厂(TokenFactory)
          • 概念
          • 状态
          • 消息
          • 事件
          • 参数
        • WasmX
          • 概念
          • 数据
          • 提案
          • 消息
          • 参数
      • 核心
        • Auth
        • AuthZ
        • 银行(Bank)
        • 共识(Consensus)
        • 危机(Crisis)
        • 分发(Distribution)
        • 证据(Evidence)
        • 费用授权(Feegrant)
        • 治理(Gov)
        • 群组(Group)
        • 铸造(Mint)
        • NFT
        • 参数(Params)
        • 惩罚(Slashing)
        • 质押(Staking)
        • 升级(Upgrade)
        • Circuit
        • Genutils
    • dApps 开发文档
  • 节点
    • 快速入门
      • 和节点交互
      • 运行节点
        • 设置密钥环
        • 加入网络
        • Cosmovisor
        • 升级您的节点
    • 验证者
      • 主网
        • Peggo
        • 规范链升级
          • Upgrade to 10002-rc1
          • Upgrade to 10002-rc2
          • Upgrade to 10003-rc1
          • Upgrade to 10004-rc1
          • Upgrade to 10004-rc1-patch
          • Upgrade to 10005-rc1
          • Upgrade to 10006-rc1
          • Upgrade to 10007-rc1
          • Upgrade to 10008 - Camelot
          • Upgrade to 10009
          • Upgrade to v1.10
          • Upgrade to v1.11
          • Upgrade to v1.12.0 - Volan
          • Upgrade to v1.12.1
          • Upgrade to v1.13.0 - Altaris
          • Upgrade to v1.13.2
          • Upgrade to v1.13.3
          • Upgrade to v1.14.0
          • Upgrade to v1.14.1
      • 测试网
        • 测试网 Peggo
    • 公共端点
    • 高级端点
    • Injective 索引器设置
  • 交易员
    • 快速入门
    • 文档
    • API 参考
  • 常用链接
    • Injective 101
    • Injective Hub
    • Injective 浏览器
    • Chain API Reference
    • Indexer API Reference
    • 测试网水龙头
Powered by GitBook
On this page
  • 开始区块执行
  • 注册
  • 注销(Deregistration)
  • 停用(Deactivation)
  • Fee Grant
  • 暂停(Pausing)、参数更新(Params Update)
  • 批量方法(Batch Methods)
Export as PDF
  1. 开发者
  2. 模块
  3. Injective
  4. WasmX

概念

PreviousWasmXNext数据

Last updated 2 months ago

开始区块执行

智能合约只能响应传入的消息,无法自主执行操作。Wasmx模块允许在每个区块的开始区块(begin blockers)部分注册和调用合约。为了符合此要求,每个注册的合约必须响应名为begin_blocker的sudo消息,该消息只能由链本身调用,而不能直接由任何用户或其他合约调用。这确保了begin_blocker消息的可信性。

注册

在注册合约时,用户必须声明一个 gas 价格,即他们愿意为合约执行支付的费用,以及一个 gas 限制,即合约执行过程中可以消耗的最大 gas 数量。 目前,合约注册只能通过治理提案进行。如果提案获得批准,将把该合约添加到每个“开始区块”(begin blockers)期间执行的合约列表中。 出于安全考虑,提案者必须为合约指定一个code_id,该code_id将在注册时以及每次合约执行时进行验证。这是为了防止攻击者先注册一个无害的合约,但后来将其升级为恶意合约。提案者可以请求在注册合约时豁免此检查,以避免新版本合约发布时的延迟,但这可能会根据提案者的可信度影响投票结果。 提案者还可以请求将合约“固定”在内存中,这意味着合约将被加载并保持在内存中,从而大大提高合约的性能。

注销(Deregistration)

合约可以通过治理提案进行注销,任何人都可以发起该提案,包括合约拥有者(如果他们不再需要该合约)或任何其他个人(如果合约被发现是恶意的)。 如果合约因 gas 不足而执行失败,它将被自动注销。 当合约被注销时,wasmx将调用合约中的特殊deregister{}回调(如果存在),作为一个sudo消息。

停用(Deactivation)

合约可以在耗尽 gas 时自动停用,也可以由合约拥有者手动停用。当合约被停用时,wasmx将调用合约中的特殊deactivate{}回调(如果存在),作为一个sudo消息。合约可以由合约拥有者重新激活。

Fee Grant

Wasmx模块允许其他地址(合约、外部拥有账户EOA)通过模块为其他合约的开始区块执行支付费用。 当合约第一次注册时,用户需要指定FundingMode,该模式指示合约执行的资金来源。支持三种模式:

  • SelfFunded - 合约将为其自身的执行支付费用(默认模式)

  • GrantOnly - 合约将在其关联的津贴覆盖的情况下执行(由ContractRegistrationRequest中的GranterAddress提供)

  • Dual - 合约将优先使用其津贴资金。如果津贴不足以支付执行费用,则会使用其自身资金

由于x/feegrant模块提供了三种津贴(Basic、Periodic和AllowedMsg),wasmx模块仅支持Basic和Periodic。不建议向合约授予AllowedMsgAllowance,因为任何尝试使用此类津贴的合约默认会报错。

暂停(Pausing)、参数更新(Params Update)

合约的拥有者可以随时停用或激活合约,无需治理投票。他们还可以随时更新合约执行的参数,如 gas 价格或 gas 限制。

批量方法(Batch Methods)

为了方便,Wasmx模块提供了一些先前提到的提案的批量版本,例如批量注册和注销,以及StoreCodeProposal的批量版本。这些批量版本允许同时处理多个提案,而不是逐个处理。

x/feegrant