Py学习  »  Python

王嘉平 | 区块链到底有什么了不起(下)

DapDap区块链 • 5 年前 • 593 次点击  

冯·诺伊曼架构最初是在一个完全中心化的设定下给出的,现在的计算机单机、大型机乃至集群和云服务,本质上都是这样的一个模型。他们关心的是高效地完成计算,是状态被正确更新,得出预期的输出。整个系统的输入、执行逻辑和原始状态都被可信的单一方控制。

而区块链是在一个去中心化的设定下给出的,整个计算系统不被任何一方长期控制。区块链关心的是这个计算是如何完成的,系统的输入是否合法,执行逻辑是不是被篡改。至于其承载的实际计算量,用一台单机就可以分分钟计算完这十年的所有历史交易。

现有的冯·诺伊曼架构的计算系统,其计算过程始终在一个固定的物理计算设备上完成,并且这个计算设备有单一的控制方。可能是一个手机,一台电脑,甚至一个数据中心。对于这个系统的控制者,只要防好黑客,他是可以相信这个计算系统的。而其他人则没有信任的依据,系统的控制者也无法向第三方证明系统是可信的,即使开源了也不行,即使用上了SGX技术也没什么帮助。

而这正是区块链所攻克的问题。区块链将冯·诺伊曼架构的计算架构进一步拓展,使其同特定的物理计算设备分离,才能从根本上避免计算过程被单一的控制方掌控,让所有人都可以信赖这个计算系统。

无论是工作量证明(PoW)、权益证明(PoS)或者拜占庭容错(BFT)等共识机制,上述计算过程的实际步骤在全球不同的物理基础(节点)上完成。

而不同共识算法的本质就是给出一个依次选择这些物理基础的方案,保证其公允,保证其安全。同时在数据传递层面(提交输入,获取输出),藉由既有的点对点网络技术,使得通讯没有一个固定的接入点,不依赖于特定的IP地址。从而使得这个计算系统能够在所有人的监督下,可信地完成计算过程,很难被篡改,也很难被阻止。

为了脱离特定的物理计算设备,区块链在性能上付出了重大的代价。在不同的节点上间歇完成计算步骤,需要每个节点都准备好计算所需要的上下文和输入数据。在一个计算步骤完成之后,需要每一个节点都获取到最新的输出数据,并更新上下文。

期间涉及到大量的冗余的信息传递和存储以及相应的计算。当然后续有非常多的优秀团队,改进这一设计,提升其性能和容量,但无论设计如何优化,这些冗余的通讯、存储和计算是不可能彻底避免的。不过这些代价是值得的,它给冯·诺伊曼架构赋于了全新的计算本质:一个可以脱离特定物理基础的计算方式,一个可被任一第三方信赖的计算过程。

03 区块链的本质

区块链本质上的计算模型

通过剥离数字货币这个构建在区块链技术上的应用,上图给出了区块链本质上的计算模型。与常规的冯·诺伊曼架构最大的区别,是同特定的物理计算设备分离。一旦代码被部署,状态被初始化,全网开始工作,这个计算系统将以不受任何控制方控制的方式开始运行,永不停止。系统不断获取外部提交的企图改变系统状态的操作(OP),依次确认这些操作,以有序的方式输出这些合法的操作,并同步执行这些操作改变系统的状态。

所以:

账簿不是区块链的本质

这个系统维护的状态完全可以是账簿之外的东西,当然更可以不是数据库。它可以是社交关系图谱,可是是网页的相关性及排名,也可以是每个人信用分数和历史等等。其规则所执行的也可以不是交易,而是任何可以被形式化、数字化的信息。交易不可篡改不是区块链的本质 这个系统不可篡改的是既定的规则(代码),以及不可篡改的初始状态(例如比特币的传世区块)。

如果上层业务想要的话,我们完全可以在规则中包含翻转或者取消交易的内容。 有序链式区块打包不是区块链的本质 有序输出数据的方式有好多种,区块的批量打包也只是现在的系统对于性能和交易确认延迟的一个折中。理论上一个一个出也没问题,只要有序。输出交易的序也可以不是严格的全局完整的单一线性的序,例如DAG那样的结构一样是区块链的可能实现方式,只要这个不完整的序不会对状态重建造成混淆就行。同样基于异步共识的分片技术也不具备全局的序,但是也不妨碍它成为高性能区块链的可能解决方案。当然,我们姑且还是可以叫:区块链」这个名字。

世界计算机不是区块链的本质

区块链的核心诉求在于关注计算过程的可信,而不是为了获得计算的结果。这一点是与为了高效将计算完成,获得结果的云计算本质的区别。云计算无法实现向第三方证明其计算过程是可信的,区块链对于计算任务本身也无法向云计算那样的高效和低成本。

总之,区块链的计算本质是一个可以和特定计算设备分离的冯·诺伊曼架构,是可以向第三方证明的可信计算范式,目的是为了计算过程真实可信,支持上层应用上实现业务逻辑的自证清白,为世界带来可以计算的信任。

沿着这个技术本质,我们可以进一步探究,区块链应该去做什么,去承载什么样的需求和业务。我会留点时间,在未来的文章中和大家继续探讨 :)。欢迎大家通过我的微信公众号「王嘉平」和知乎专栏「去中心化数字世界随想」,就这个话题展开更多讨论。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/26552
 
593 次点击