通俗讲解 · 第 1 部分,共 7 部分
「存在性证明」到底意味着什么

假设你想出了某样值得保护的东西,也许是一项科研成果、一份让人人赞不绝口的派食谱、一项新发明、一份合同草稿,或者一张照片。某一天,你也许需要证明它在某个日期之前就已经存在:证明这东西是你最先拥有的,早于任何人把它据为己有。
那些一眼看上去管用的办法,其实都靠不住。把它发邮件给自己,或是发到某个带日期的地方,要么依赖一个谁都能伪造的时钟,要么依赖一家日后可以悄悄改动记录的公司,而且这些做法都逼着你把秘密交到某个对象手里,再指望对方诚实地替你守住时间戳。
Label 309 是一项解决这个问题的开放标准,而且它在解决问题的同时,从不泄露内容本身。
只留指纹,不留文件
Label 309 做的第一件事,是让你的内容跑一遍哈希函数:这是一种单向运算,能把任意大小的文件压成一段简短、定长的编码。标准采用广为人知的哈希算法(SHA-256 或 BLAKE2b-256),无论用哪一种,结果都只有 32 字节。可以把它想象成一枚指纹:它对那一份特定内容独一无二,哪怕只改动一个字符,算出来的指纹也会截然不同。
有两点让这枚指纹格外有用:
- 它无法逆推。 任何人都无法仅凭指纹还原出你的食谱或你的发明。
- 它无法伪造。 任何人都无法另造一份不同的文件,让它算出相同的指纹。
所以,你可以把指纹公之于众,同时把真正的内容留在自己手里。这正是 Label 309 的核心,标准把这一点叫作内容优先(content-first):哈希本身就是那个主张,其余一切都只是围绕它的注脚。
把它锚定在时间里
这枚指纹会被写进 Cardano 区块链上的一笔交易,那是一本公开的账本,由成千上万台彼此独立的计算机共同维护、保持一致。Label 309 把它归档到一个专门的位置,也就是元数据标签 309,整个 Cardano 都把这个位置专门留给存在性证明记录。
一旦记录下来,有两件事就永远成立:指纹就在那里,而且它带着区块时间,也就是网络对它达成共识的那一刻。记录本身从不携带你手填的日期;唯一算数的时间戳,是网络打在区块上的那一个。谁也没法事后溜回去改动它,或是把它倒填日期。
你的指纹如今已经锚定在时间之中。这份内容最迟在那一刻就已存在,而这个事实保存在一份公开记录里,既不依赖你,不依赖发布者,也不依赖任何一家公司是否一直在线。
日后拿出证明
日后,也许是很多年以后,你拿出原件。任何人都可以让它跑一遍同一个哈希函数,得到相同的指纹,再到区块链上查找。如果对得上,他们便完全靠自己确认了两件事:
- 这正是那枚指纹背后的那份内容;
- 它在那个区块的时间或更早就已存在。
他们不必信任你,也不必信任某台服务器,而是自己核查了公开的链。这就是 Label 309 的全部理念:一份任何人都能验证、谁都不必凭信任去接受的证明。
它能证明什么,又不能证明什么
一份 Label 309 记录证明的是:这份特定内容在某个区块时间之前就已存在,这是一个时间上界,绝不等于「恰好在这一天创建」。它本身并不说明这份内容出自谁手:作者身份是另一项独立、可选的签名,你可以选择加上(参见 你的密钥,一文说清)。而且除非你主动公开,它从不泄露内容。