Cardano 上的 NFT 规则大多写在 Plutus 脚本里——锁、市场、版税条件都是脚本。在引入一种叫“参考脚本”的机制之前,链上执行每笔涉及脚本的交易,都得把脚本代码本身随交易重新提交一遍,买家为一套早就公开的逻辑反复付“搬运费”。Cardano 问题提案 CIP-33 解决的正是这件事:允许把脚本直接附着在某个交易输出上,后续使用时只引用、不重放。
CIP-33 的正式文本把它归入“Cardano 问题陈述”,作者与维护信息登记在案,提案日期标注为 2021 年。机制骨架分两半。存放侧:一笔交易的输出可以额外附带一个脚本,这个输出从此成为一只“带脚本的输出”,脚本字节随这笔交易一次性写入账本,并作为该输出的附属数据被账本长期持有——这是提案带来的账本结构变化,也意味着那段脚本要付一次性的存放费,此后不再重复付费。消费侧:后续任何交易在满足脚本校验要求时,可以直接把这只带脚本的输出作为输入引用,验证器从账本里读脚本本体来执行,而交易自身不必携带脚本代码。规范侧有一条清晰的边界:引用的脚本与作为脚本执行的旧式输入脚本不能在同一笔交易里混用——同一笔交易要么处处引用,要么走传统内联,防止验证语义出现两套真相。
放到 NFT 场景里,这套机制改变三件事。第一是交易体积:一个带复杂市场条件的挂单成交,原本脚本加数据能占到交易体积极高比例,改用引用后交易只剩普通的输入输出与签名,体积按数量级下降,而 Cardano 的费用正比于交易体积——省钱是从字节上省出来的。第二是开发者习惯:项目方可以在一个长期持有的输出上发布一套“标准合约脚本”,市场、挂单模板、版税逻辑都以引用形式复用,而不必每个用户每次成交都重新部署或内联同一份代码;同一套规则也因此更容易被审计一次、处处生效。第三是治理语义:脚本一旦被引用,交易依赖的是那只输出上的那一份;项目方若想改规则,需要显式提供新的参考输出并迁移引用方,用户可以用“我引用的到底是哪只输出的哪个脚本”作为核对锚点。
需要留意两个成本与限制面。存放侧不是免费:那段脚本作为输出附属长期占用账本,锁定的押金加上一笔性的体积费,让“人人都发布参考脚本”并不划算——提案设计鼓励的是少数发布者、大量引用者的复用结构。混用限制则影响集成:钱包或索引器处理交易时要把“引用模式”与“内联模式”两条路径都实现正确,旧工具对新交易误判的风险期在规范讨论里被反复提及;普通用户感知到的症状通常是“新版合约交易旧钱包看不懂”,遇到时更新工具版本而不是硬签。规范文本同时把防呆写在了讨论区:它明确否决了“在存在旧式脚本的同时偷偷塞引用”的做法,正是为了杜绝校验逻辑被两套来源打架的可能。
把视角拉远,参考脚本解决的其实是所有“规则即代码”链的共同问题:合约逻辑的执行成本,究竟由发布者一次性承担,还是由每笔使用者反复承担。CIP-33 给出的答案是把大头交给发布者,把引用权留给使用者。读一枚 Cardano NFT 市场的成交记录时,顺手看一眼它有没有引用输出、引用的脚本哈希是否与项目方公告一致,就能大致判断这笔成交跑在“哪一版官方规则”上。
本文为机制说明,不构成任何投资建议。

发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。