1.2.1 分布式与中心式
传统的信息系统(如大家常用的微信、淘宝等)都采用中心式架构,中心式架构如图1-3(a)所示,即存在一个中心节点,该中心节点保存了其他所有节点的索引信息。索引信息一般包括节点IP地址、端口、节点资源等,各节点需要通信的时候,要先从中心节点获取这些重要信息。
中心式架构的优点是结构简单、实现容易,但缺点也很明显,中心节点承担了最重要的工作,对它的要求最高。当节点规模扩展时,容易出现性能瓶颈及单点故障问题。例如,如果微信账号出了问题,可能存在微信财付通里的资金就无法取出了。
那么,如何防止中心节点崩溃呢?很多人想到,将中心节点的功能分散到更多节点上,这些节点互相备份,不就可以降低单点故障的概率了吗?没错,区块链采用的分布式架构,就是基于这个原理设计的。
区块链采用的是分布式架构,又称P2P网络,分布式架构如图1-3(b)所示。P2P网络是技术上的一个术语,与互联网金融中的“P2P”没有任何关系。多个账本组成分布式网络后,极大地提高了系统的鲁棒性。
图1-3 分布式架构与中心式架构
分布式包含两层意思:一是数据节点独立,节点既不需要属于同一组织,也不需要相互签约(在中心式架构中,节点是统一管理的,如阿里云的节点都属于阿里巴巴公司);二是数据节点共同存储,每个参与的节点均可复制一份完整记录的副本。
分布式架构的效率肯定不如中心式架构,但是安全性大大提高了。很多人质疑区块链的一个重要的理由就是区块链的速度太慢,但正是因为区块链以牺牲效率为代价,才带来了更高的安全性和稳定性。
区块链中的每个区块都可以被视为一个账本,按记录时间的先后顺序将它们连接起来就形成了总账本,这就是链式结构。系统会设定每隔一段时间进行一次交易记录的更新和广播,所有节点会同步更新自己区块中的内容。如果所有收到广播的节点都认可了某个区块的合法性,那么这个区块将以链的形式被各节点加到自己的链中,就像给账本里新添加一页,这个流程与前面聪聪老师最后的小红花记账过程是一样的。
在传统的中心式数据结构中,只保存当前的结果,更新时会覆盖过去的数据,从技术上来说追溯比较困难。在区块链的链式结构中,每次更新都只在当前链中进行,即插入新的数据,这种独特的机制使得区块链上的数据很容易被追溯。