You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sui一次性见证(OTW)如何在协议层保障模块单次初始化?

Sui Move一次性见证(OTW)运行时与验证器执行机制详解

背景回顾

Sui Move的一次性见证(OTW)模式用于确保模块init函数仅执行一次,OTW需满足Sui Adapter的4项规则:仅具备drop能力、无字段、非泛型类型、以模块名全大写命名。

疑问解答

  1. Sui是否维护链上状态跟踪已初始化模块?
    是的,Sui会在链上状态中维护专门的标记集合,记录已完成初始化的模块。当包含init函数的交易被执行时,运行时会先检查该模块是否存在初始化标记:
  • 若未标记,则执行init函数,并将模块地址+模块名的组合写入链上标记集合;
  • 若已存在标记,交易直接被判定为无效,不会执行init逻辑。
  1. 验证器是否在共识阶段显式验证OTW正确性,还是完全由Move VM字节码验证器处理?
    OTW的验证是多层协作的:
  • 首先,Move VM的字节码验证器会在交易执行前,通过原生函数is_one_time_witness检查OTW类型是否符合规则(无字段、仅drop能力等);
  • 其次,验证器在共识阶段会额外做一层校验:检查交易中调用的init函数是否携带合规的OTW参数,同时比对链上的初始化标记,确认该模块未被初始化过。
    字节码验证负责OTW类型的合法性,共识阶段负责执行权限的最终校验。
  1. 恶意验证器能否绕过OTW规则?初始化是否关联密码学证明?
    恶意验证器无法绕过OTW规则,原因如下:
  • Sui的共识机制(Narwhal + Tusk)要求验证器对交易的有效性达成一致,单个恶意验证器提交的违规交易(比如重复初始化模块)会被其他诚实验证器在共识校验阶段拒绝,无法进入最终的链上状态;
  • 模块初始化的交易需要经过完整的签名校验和状态验证,交易的执行结果会被记录在链上,且每个状态变更都有对应的密码学证明支持,其他节点可以通过证明验证状态的合法性,确保初始化操作不可篡改。

内容的提问来源于stack exchange,提问作者Yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:04:48