每天5分钟,学点区块链
从分布式记账问题说起
分布式记账问题由来已久。自以电子计算机为主要记账手段的数字化账本诞生以来,商业活动参与者首先要寻找一个多方均能信任的第三方来记账,确保交易记录的准确。
然而,随着商业活动的规模越来越大,商业过程愈加动态和复杂,很多场景下难以找到符合要求的第三方记账方(例如供应链领域动辄涉及来自多个行业的数百家参与企业)。这就需要交易各方探讨在多方分布式场景下进行协同记账的可能性。
这里有一个简单粗暴的分布式记账结构,如下图所示。
多方均允许对账本进行任意读写,一旦发生新的交易即追加到账本上。这种情况下,如果参与多方均诚实可靠,则该方案可以正常工作;但是一旦有参与方恶意篡改已发生过的记录,则无法确保账本记录的正确性。
简单说来,假如这个公开的账本由A、B、C、D四人共同记录。如果四人都是诚实守信的好青年,那么这个公开账本可以一直使用下去。但是,如果A是一个阴险狡诈的人,他篡改了账本中的数据,把自己本该还给B的100元钱改成了0元,这时A、B之间就会产生矛盾,而C、D又不知道事实的真相是什么。这个账本出现了错误,就难以继续使用下去。
为了防止有参与者对交易记录进行篡改,需要引入一定的验证机制。借鉴信息安全领域的数字摘要(Digital Digest)技术,改进为方案(二)。
每次当有新的交易记录被追加到账本上时,参与各方可以使用 Hash 算法对完整的交易历史计算数字摘要,获取当前交易历史的“指纹”。此后任意时刻,每个参与方都可以对交易历史重新计算数字摘要,一旦发现指纹不匹配,则说明交易记录被篡改过。同时,通过追踪指纹改变位置,可以定位到被篡改的交易记录。然而在实际生产应用时,仍存在较大缺陷。由于每次追加新的交易记录时需要从头对所有的历史数据计算数字摘要,当已存在大量交易历史时,数字摘要计算成本将变得很高。而且,随着新交易的发生,计算耗费将越来越大,系统扩展性很差。
继续上面的例子,但这次,这个由A、B、C、D四人共同管理的账本被锁入了一个柜子里,每人都有一把可以打开柜子的钥匙。阴险狡诈的A篡改了账本中的数据,把自己本该还给B的100元钱改成了0元。B在想要翻看账本的时候,发现钥匙居然无法打开锁了!B眉头一皱,发现事情并不简单。无独有偶,C、D也发现了同样的问题。之后,三人注意到又是A篡改了交易记录,A的诡计就被拆穿了。
然而,把账本锁起来的方式并不是一劳永逸的。为什么呢?因为此时,A、B、C、D四人锁账本的方式是这样的:
由于1个箱子里只能锁一个账本。随着账本数量越来越多,层层嵌套着装下账本需要的箱子也越来越大。终究有一天,将无法有足够大的箱子容纳下这些账本。因此需要更加高级的方式来储存这些账本。
为了解决可扩展性的问题,需要进一步改进为方案(三)。
注意到任何一次摘要实际上已经确保了从头开始到摘要位置的完整历史,当新的交易发生后,实际上需要进行增加验证的只是新的交易,即增量部分。因此,计算摘要的过程可以改进为对旧的摘要值再加上新的交易内容进行验证。这样就既解决了防篡改问题,又解决了可扩展性问题。方案(三)中的账本结构正是一个区块链结构。
因此,到了第三代方案,A、B、C、D四人锁账本的方式变成了:
如此一来,A无法随便篡改账本,而且也有足够的空间来储存这些账本了!
那么,今天的5分钟内容就到这里!
明天的内容将为大家介绍区块链的三次热潮~
参考资料:《区块链技术指南》
下期预告:区块链的三次热潮
还没有评论,快来发表第一个评论!