作者:历史文章 / 来源:白话区块链
白话区块链,从入门到精通,看我就够了!
上期【25步教您玩转区块链】课程介绍了如何从分层与解构的角度了解区块链软件系统,这期大白将带您一起了解区块链背后的伟大愿景!
1.2 区块链背后的伟大愿景
今天我们将会带着大家第一次去了解区块链背后的伟大愿景,以及在这个伟大愿景中区块链处在什么位置。为了讲明白这件事,我们会介绍软件系统的两类基础架构,相信你早有耳闻:中心化与去中心化。最后,我们会用一句话指出区块链存在的意义。
1.2.1 一个支付系统
我们沿用上一课对软件系统的分层解构方法,来对现代支付系统进行分层与解构:
看到表中的功能性实现层对应的问号了吗?我们故意将此留空,因为接下来我们将会告诉你,不止存在一种填写方法。
1.2.2 两种软件系统架构,中心化与去中心化
实现软件系统的方法有很多,然而实现一个系统时的基本性决定之一涉及它的体系架构,即软件组成部分的实体组织方式和实体之间的相互关系。
对于一个软件系统而言,存在两种截然不同的基础架构:中心化 vs. 去中心化。
我们以上图为例,图中的小圆圈我们称为节点。
我们先不考虑节点之间都是如何相连以及配合工作的,把目光放到这两种软件系统架构下节点的组织形式上。
右图为中心化架构,此时系统具有一个中心节点,所有的其他节点与中心节点相连。可以发现除掉中心节点,此时没有任何两个节点两两直接相连。
左图为去中心化架构,此时系统没有任何中心化节点。可以发现,没有任何一个节点与其他所有节点相连,但是每个节点至少和一个其他节点直接相连。
1.2.3 去中心化系统的优势
-
更强大的算力
通过扩大去中心化系统的规模,加入更多的计算节点,一个去中心化系统的算力甚至可以超过一台投资巨大的超级电脑。
-
更低的开销
在过去的20年中,内存,cpu,显卡,硬盘的单位价格不断降低,只需要花费之前几分之一的价格,就能拥有一台数十倍于之前性能的电脑。
对于一个去中心化系统而言,一旦系统已经组建完毕,之后针对单个节点的维护成本将非常低廉。
-
更高的可靠性
去中心化系统的可靠性建立在“整个去中心化的网络不会因为网络中的任何单个节点的崩溃而崩溃”的基础上。在一个去中心化的系统中,如果任何一个节点发生了故障,其他的节点可以第一时间接管故障节点的工作。
-
自然成长的能力
在一个去中心化的系统中,我们可以通过不断接纳新的自然节点来扩充网络,这甚至可以让网络具有进化能力——使用更好的节点一点一点替换网络中的旧节点。这对于一个中心化的或者单一机器的系统而言,这是无法想象的。
1.2.4 去中心化系统的劣势
-
节点间的冗余协作
去中心化系统没有中心节点来协调其他节点的工作,因此系统的协作管理要通过系统本身来完成,这就增加了节点之间的大量同步协作内容。相比中心化的系统而言,这些冗余的工作开销不容小觑。
-
节点间的冗余通信
节点间的协作需要通信,而任何的通信都需要占用带宽和计算资源,不可避免的会出现冗余通信。
-
对可靠网络的严重依赖
任意一对节点间的通信方式都需要依赖网络,而不同协议设计下的网络都有自己的缺点和挑战,不存在一个完美的通信网络。所以如果没有一个可靠的网络,去中心化系统将会无法工作。
-
编程极度复杂
我们日常使用的所有应用都是通过在系统上进行编程来实现的,而去中心化系统本身的结构以及上面提及的三个劣势,意味着在一个去中心化系统上进行编程并不轻松,往往极度复杂。
-
安全问题
安全是一个系统的奠基石。任何一个去中心化的系统由于存在多节点,此时系统面临的安全风险相比中心化系统要大得多。而一个去中心化系统的节点通信限制越小,对整个系统的安全性需求就越大。
1.2.5 混合中心化与去中心化
中心化与去中心化系统是两种系统架构设计的极端。在工程界,天才的工程师们经常会结合两者优点提出混合方案:
上图中提出了两种混合方案:
-
左图:在去中心化系统中加入中心节点
-
右图:在中心化系统中使用去中心化系统作为中心节点
那么如何区分一个系统是中心化还是去中心化的呢?大白告诉你,就一句话:
如果一个系统中存在一个节点,该节点的损坏会使得整个系统瘫痪,那么这个系统就是中心化的。
1.2.6 区块链的意义
回到本文一开始大白留空的表格,我们应该采用什么实现方法,来确保用户对一个支付系统的所有需求都能得到完美满足呢?答案是:使用区块链。
一个系统采用何种架构来实现,是基于对这个系统提出的要求来进行选择的。对于一个支付系统而言,使用去中心化的系统是最佳的实现方式。那么什么是最佳的去中心化的实现方式呢?答案还是:区块链。
大白在这里先用一句话描述区块链在去中心化的系统中的作用:
满足并确保去中心化系统完整性的工具。
至于其他的,咱们下周五见!
作者 | 张初阳 李晨
编辑 | WangMe
下期预告
下周五:大白课程 | 25步教您玩转区块链第1步(下)
——认识区块链的潜力