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

使用sp.init_metadata/SmartPy初始化合约元数据时,是否需包含链上视图?

TZIP-16元数据视图列表的规范与SmartPy实践

核心问题解答

TZIP-16规范并未要求views数组仅包含链下视图,正确的做法是同时纳入链上视图和链下视图,具体原因和实践细节如下:

  • 链上视图(比如SmartPy中用sp.add_view定义的可链上调用视图):虽然Tezos节点会自动识别这类视图并提供调用入口,但将其加入元数据的views数组后,钱包、区块浏览器等第三方工具能更直接地发现并集成这些视图,降低用户调用合约的门槛。
  • 链下视图:这类视图仅能离线执行,节点无法自动识别,必须显式加入views数组,才能让工具知晓其存在、逻辑定义和调用方式。

SmartPy中的具体操作

在SmartPy里通过self.init_metadata("metadata", some_metadata)初始化元数据时:

  • 若手动构造元数据结构,建议将所有需要对外暴露的视图(链上+链下)都按TZIP-16格式写入views数组。
  • 更高效的方式是使用SmartPy内置的sp.build_metadata工具:它会自动把你用sp.add_view定义的所有链上视图同步到元数据的views数组中,你只需在生成的基础元数据里补充链下视图的定义即可,避免手动遗漏或格式错误。

格式注意事项

每个视图条目需遵循TZIP-16的必填字段要求:

  • 通用字段:name(视图名称)、description(功能描述)、inputs(输入参数列表)、outputs(返回值定义)
  • 类型标识:链上视图需指定kind: "on-chain",链下视图需指定kind: "off-chain"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:18:21