协议代码开源,但先锁一段延迟期:ZORA 延迟开源许可的机制与边界 图 1
协议代码开源,但先锁一段延迟期:ZORA 延迟开源许可的机制与边界 · 图 1

开源协议链上跑了很久之后,出现了一个折中物种:源代码完整公开,任何人可以阅读、审计、复现,但许可证先不给完整的开源授权,等一段时间之后再转换。Zora 的协议币就是这种安排——官方文档设有专门的许可页面,说明协议币合约的源码采用延迟开源许可发布,仓库与文档中可见其条款标识为 ZORA-DELAYED-OSL-v1。这篇文章不讲站队,只把这种许可的结构讲清楚,因为结构本身就回答了很多争议性的问题。

延迟开源许可的一般骨架是这样的三段。第一段是源码可见:代码全部公开,审计者可以逐行检查合约如何铸造、如何计费、权限归谁,透明度与普通开源项目没有区别。第二段是延迟期:在约定的转换日期之前,代码的使用范围受限制,典型受限项是把它原样包装成竞争性商业服务去部署运营;延迟期内允许做什么,逐条写在条款的用途授予部分。第三段是自动转换:到达转换日期后,许可切换为标准开源条款,此后它就是公共领域意义上的开源代码,任何人可以自由使用。三段合起来的设计意图很直白:先保住先发者回收研发成本的时间窗,再兑现代码最终归社区的承诺。

对普通用户,这份许可几乎不需要参与,但它回答了一个常被问错的问题。链上协议“去中心化”到什么程度,有一个法律维度的注脚:即便发行方哪天停运,用户和后来者能不能合法地自建前端、迁移部署这套合约逻辑?延迟开源许可给的是能,只是要等延迟期走完。换句话说,你在评估一个协议型产品时,可以把许可条款当作一份预先写好的继承安排来读,它比任何“我们承诺永远开放”的宣传语都更可执行。

对二次开发者,这份许可的读法要精确到条款。需要区分三个动作:阅读和审计代码、在自己的产品里集成调用已部署的链上合约、把源码复制部署成独立运营的同功能服务。第一个动作任何时候都自由;第二个动作针对的是链上实例,通常不在源码许可的管辖之内,链上合约按它自己的规则对所有人开放调用;第三个动作才是延迟期真正约束的对象。把这三件事混成一团,就会得出“延迟开源等于不开源”或“延迟开源管住所有集成”的两个相反误读。

要提醒的边界有两条。一是法律文本的时效性:条款标识、转换日期与用途授予以许可文本和官方文档页面当下的内容为准,本文只描述机制结构,具体日期与条文请在决策前直接查阅许可原文,涉及商业部署的还应咨询专业意见。二是许可管辖的对象是代码,不是资产:持有某个协议币、某件藏品,与这份代码许可之间没有派生关系,链上资产的权利由其自身的合约与元数据决定,不会因为底层代码的开源状态变化而增减。

顺带解释一个术语选择:为什么这类条款多以延迟开源公共许可的家族为模板,而不是自创一套。法院与审计者对成熟许可文本的解释经验更丰富,套用已知的骨架能让受限范围、转换条件这些关键段落落在已被讨论过的语言上,减少条款歧义。条款标识末尾的版本号也承担同样的功能:同一套骨架不同版本的限制宽严不同,读许可时把版本标识一起记下,比只记一个许可名字准确得多。

本文为机制说明,不构成任何投资建议,也不构成法律意见。

协议代码开源,但先锁一段延迟期:ZORA 延迟开源许可的机制与边界 图 2
协议代码开源,但先锁一段延迟期:ZORA 延迟开源许可的机制与边界 · 图 2