正文
在以上四种基本攻击方式还可以任意组合,形成丰富多彩的攻击模式。简而言之,如果不能实现一对一的、可靠的、难以破坏、复制和挪动的硬链接,那么用区块链来管理实物资产就是一个笑话。
遗憾的是,据我了解,目前大多数区块链防伪追踪系统的设计,就只达到了这个层面。可以这么说,这样的区块链系统,在现实世界中只能是防君子不防小人,实际意义非常有限。
中本聪的启示
怎么解决这些问题呢?一个直觉的想法是让 sTAG唯一、不可伪造且与RA无法分割。那么我们就从确保sTAG的唯一性出发来思考。首先,sTAG中所含的ID信息,一经产生就必须是独一无二的,我们永远无法从区块链中产生出两个内容相同的标签。初看这个要求并不难达到,使用密码学标准的SHA-256、SHA-512或者其他密码产生器产生的位串,从概率上讲在人类文明存续期间不会出现第二次。
但想要真的实现唯一性并不是那么简单。强有力的攻击者不会规规矩矩的去找区块链重新生成一个新标签,而是会通过读取一个标签中的ID信息,用自家的黑设备复制一个标签,其中包含一个与原标签内容一模一样的ID信息,从而就可以实现上面所列举的一对多攻击。
这个问题当然不是区块链首先遇到的。现实世界中防伪,特别是纸钞、艺术品、珠宝、名酒等物品的防伪,已经有了很丰富的经验。但一方面,效果其实并不那么好,另一方面, 这些防伪机制都依赖于一个权威的中心化机构。想要在现实世界解决唯一标签问题,又不引入中心化机构,这恰恰就是区块链试图解决的问题之一,因此如果在这个环节当中重新引入权威的中心化机构,那么整个区块链系统的价值和意义就大打折扣了。
那么比特币是怎么解决这个问题的呢?中本聪没有费力防范比特币数据被复制,而是允许任何人都可以随意复制,但复制是随意的,操作则要凭私钥才能进行。具体来说,中本聪设计了一个“锁定脚本(locking script)”机制来保护UTXO资产。这个锁定脚本也叫“负载(encumbrance)”。也就是说,任何人想要动用这个UTXO资产,必须执行这个脚本,过得了关才能动用,过不了关你就别想。
详细的机制限于篇幅在这里不详述,感兴趣的读者可以参考我的另一篇文章《
智能资产:概念、动机和技术思路》
,该文从代码层面详细分析了锁定脚本的机制。我们在这里只需要注意以下几点:
以上是比特币的设计。需要指出的是,在区块链世界里,比特币的思路并不是唯一可行的路径。比如以太坊就有另一套思路,简单的说就是一切交给智能合约的思路。在我看来,如果仅仅是进行智能资产的防伪与追踪,以太坊的做法实在太 大材小用了。因此我还是主张以比特币的思路为主来解决硬链接的问题。
我们能不能从比特币的设计中吸取灵感,来解决前述的硬链接问题呢?