先想清楚要证明什么
创作者、企业法务和审计师常被同一个问题卡住:手里这份文件——一段代码、一张设计图、一份合同草稿——怎么向未来的别人证明,我在去年今天就已经拥有它?把原件直接上链既昂贵又侵犯隐私;不上链则一切口头为证。链上存证(anchoring,也叫存在性证明、时间戳证明)的答案很数学:文件本身不动,只把它的一串哈希摘要交给一条已经运行了很多年、不可回滚的公共账本。日后有人质疑“这文件是伪造于去年”的,你出示当年的锚定交易与验证路径,让对方自己核验:摘要在账本上的存在时刻,早于对方声称的任何时间点。
注意它证明的边界:存证能证明“这串摘要在此刻之前存在”,证明不了摘要对应的内容是什么、是谁写的、内容好不好。它是时间机器,不是公证处,更不是版权登记——后者是法律程序,各法域规则不同,需单独办理。
机制三件套:承诺、锚定、揭示
一套完整的存证方案包含三步。第一步是承诺:算出文件摘要(SHA-256 或 keccak 皆可),为了隐私,通常不把裸摘要上链,而是把摘要与一次性盐值拼接后再哈希——相当于把答案封进信封,先把信封编号写进公告栏。第二步是锚定:把承诺值放进一笔区块链交易,等待足够确认数。第三步是揭示:争议发生时,出示原始文件与盐值,任何人重算两遍哈希,对得上公告栏上的信封编号,链条闭合。三件套的强度全部寄生在锚定链的性质上:比特币的存证之所以值钱,是因为“重写一条写过的交易”需要重做它后面所有区块的工作量。
比特币上的三种落法
第一种是专门交易输出的直接写入:早期项目把摘要直接写进 OP_RETURN 输出的公告式交易里,一笔一证,简单直观;缺点是逐笔手续费累加,海量文件逐条上链不经济,且这类不可花输出对 UTXO 集有成本,社区对其规模一直保持警惕。第二种是默克尔树聚合:把当天成千上万条承诺聚合成一棵默克尔树,只把树根锚上链,存证持有者日后出示“从自己的叶子到根”的路径即可自证,单个存证的边际成本被摊薄到接近零,这是现代存证服务的主流做法。第三种是间接锚定:摘要不直接出现在链上,而是藏进某个正常字段的最低位、或作为某笔普通交易的付款标识提交——2017 年 Monero 团队在披露一项跨币种漏洞的协调期间,就用交易付款标识把保密通告的哈希写进了链上,作为“先立字据、后公开原文”的时序承诺,这一做法把存证本身用成了协议安全工具,是公开可查的经典细节。
什么时候它对你有用
专利与版权纠纷外的低成本的“先占时间戳”是它的舒适区:开源项目的版本快照、研究数据的发表前封存、对赌协议关键节点的双方留底、合规要求下的“证据在案”。反过来说,它替代不了需要身份绑定的场景(存证链不知道你是谁,签名需要另一套体系),也替代不了合同效力判断。选型时值得核对三件事:锚定网络的历史稳定性、你的承诺在多大树上、以及这家服务商标榜的“存证查询”是不是真的允许你导出原始交易自行验证——把验证外包回给他们自己,就失去了存证的意义。
快速问答
问:文件改了 1 个字节,存证还能用吗? 哈希随之改变,旧存证只能证明旧版本的存在;需要按版本逐次锚定,或用版本树聚合。
问:存证交易要很多费吗? 聚合方案下单笔摊薄后极低;逐条方案看当链费率。隐私成本(盐值与聚合树大小)通常比手续费更值得设计。
风险提示:本文是机制科普,不构成法律或投资建议;证据效力请以法务意见与具体法域规则为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。