区块链的本质不是历史记录不可删除的。估计很多人会反对这句话,但我们先看一下案例。
比特币并不是不可删除的,白皮书“第7章:回收磁盘空间”明确写了,比特币的历史交易是可以丢弃的。
如果最近的交易已经被纳入了足够多的区块之中,那么就可以丢弃该交易之前的数据,以回收硬盘空间。——《比特币:点对点电子现金系统》7回收磁盘空间
以太坊同样是可以删除历史交易的,还可以删除账户。Solidity有一个delete操作符,可以用来编写删除历史记录的合约代码,用于回收空间用。为了激励大家释放公共空间,删除还是可以退回gas的。
EoS的智能合约可以使用新的版本对旧版本进行覆盖。EoS还有丢失私钥找回的设计。
可以确定地说,比特币、以太坊和EOS,以及几乎所有的链,严格意义来说历史记录都是可以删除的。这在设计上就保证了历史记录是可删除的。
其实在我们日常生活中,不可删除历史的需求很少。如果把不可删除的特性看成是区块链的本质,那适用范围会相当窄,这样就流行不起来。我们可以重新思考这一特性。
删除历史记录是篡改的子集,篡改还包括了把A直接改成B。
但其实把不可删除,放大到不可篡改,也是成立的。区块链技术可以在业务逻辑上,是可以先把上一笔记录给删除了,退回,再发一笔新的交易。这样就可以在区块链的规则上实现取消交易,或者直接翻转交易。在设计上是完全没有问题的。
如果说不可篡改不是区块链的本质,那区块链凭啥和传统的数据库相比,有啥优势呢?
产品的质量管制有两类思路,一类是结果评估。比如手机,生产出来后,使用各种指标来检测成品,达标后我们就贴上合格标。
还有另一类是过程控制。有些产品是不能对结果进行测量的,否则会造成破坏。比如药,你要进行结果检测就不能吃了。这样的产品可以采用抽样检测,100万个样品,随机抽取1%,样品合格我们就认定整体合格。但还有另外一个质量控制方法,就是对生产过程进行检测。
医药和医械产品,食品等生产,都是要有严格的过程检测的,每一道工序都要符合标准。只有生产工序符合标准,并且还要对成品进行抽样检测,才能合格上市。
区块链的底层运行机制就类似于过程检测。
比特币的每一个矿池节点生产的区块,都是可以被其他节点验证的。其他节点会把组成这个区块的所有交易和区块头,按共识规则一步一步验证。验证区块的过程相当于区块生产的每一道工序,都被验证节点重现一次,看结果是不是和接收到的区块一致。
从区块链的原理来看,你会发现,生产区块的节点和验证区块的节点都和特定的计算机无关的。
工业生产出来的产品,一定是和设备有关的,换一台同样的设备按相同的工艺生产同一产品,最终出来的产品肯定是有差别。就像哲学家说的,世界上没有一片树叶是相同的。
使用过程检测的结果,也无法保证产品100%的同质性。
一直以来,计算机上的软件和数据,也是和特定的计算机有关的。计算机里有一个概念叫可移植性,就是一个程序在一台设备上能跑,在另一台设备上也能跑,并且得出的数据结果无差异。但绝对的数据结果同质,特别是考虑时间因素,是很难做到的。
现在我们为了得到计算结果在多个终端一致,我们都使用云计算。本质上云计算是所有用户终端共同使用的一台设备来完成数据的加工和展示。比如,我们使用多人可编辑的google文档。
区块链这个技术的出现,就实现了一个跨时间和跨计算设备,同质的计算过程。使用区块链技术,可以实现,使用相同的输入,经过计算后,一定得出相同的输出,结果100%同质。这个过程和计算机设备无关,甚至是和时间无关,你可以在做任意时间使用相同的输入得出相同的输出。
也就是说,区块链技术实现了真正的计算过程真实可信。这也是为什么说区块链是信任机器。而区块链之所以要保留历史交易记录,就是为了验证任意时刻的输出结果,提供历史输入信息。
区块链的这种特性,就可以让业务过程可被任意第三方验证,从而自证清白。就像,在以太坊上发ICO,募了多少钱,从哪个地址募来的ETH,代币分发了给哪个地址,都是清晰可以被任意节点验证的。
使用区块链来实现计算过程可验证的产品,和构建不可篡改性的产品,前者可适应的场景要广阔的多。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。