摘要
通过我前几篇区块链知识的介绍,我们知道区块链系统实际上就是一个维护公共数据账本的系统,一切的技术单元的设计都是为了更好地维护好这个公共账本。通过共识算法达成节点的账本的数据一致;通过密码算法确保账本数据的不可篡改性以及数据发送的安全性;通过脚本系统扩展账本数据的表达范畴。我们甚至可以认为去区块链系统实际上就是特别设计的数据库系统或者分布式数据库系统,在这个数据库可以存储数字货币,也可以存储更复杂的智能合约,以及范围更加广阔的各种业务数据。在区块链的发展历程中,也经历了一个这样的阶段,从比特币开始,早期的区块链系统都是面向数字货币的,比如比特币、莱特币。这个阶段我们可以认为区块链系统是一个支持数字货币合约的系统。之后出现了更灵活地,能够支持自定义智能合约的系统,其代表作就是以太坊,可以认为以太坊就是对比特币这样数字货币系统的扩展,不过以太坊仍然内置了对数字货币的支持,延续了比特币系统的金融特征,也使得以太坊的应用更多的是面向金融范畴,再之后就是代表就是超级账本项目,尤其是其中的Fabric子项目,在这个系统中,超越了对金融范畴的应用,支持哥哥领域的数据定义。我们分别将这个三个阶段成为区块链系的1.0、2.0、3.0结构时期。为了让大家让大家对发展过程中的区块链系统有一个整体的概念,在本文中,我将描述一下区块链系统的架构,并在不同角度对区块链系统进行分类。
区块链架构
1.区块链1.0架构
如摘要中所说的,这个阶段的区块链系统主要是用来实现数字货币的,我们可以先看看示意图
如图所示,在整个结构中,分为核心节点和前端工具,这里我要提一下核心节点中的“矿工”功能。在矿工的1.0系统中,主要承担两个任务:
第一个是通过竞争获得区块数据的打包权后将内存池(发送在网络中但是还没有确认进区块的交易数据,属于待确认交易数据)中的交易数据打包进区块,并且广播给其他节点;
第二个是接受系统对打包行为的数字货币奖励,从而系统通过这种奖励机制完成新货币的发行。
在前端工具中,最明显的就是钱包工具,钱包工具是提供给用户管理自己账户地址以及余额的;浏览器是用来查看区块链网络中发生的数据情况,比如最新的区块高度,内存池的交易数、单位时间的网络处理能力等;PRC客户端和命令行接口都是用来访问节点的功能的,在这个时候,核心节点就相当于一个服务器,通过PRC服务提供功能调用接口。
2.区块链2.0架构
在区块链2.0架构的代表产品是以太坊,因此我们可以套用以太坊的架构来说明,先来看看示意图:
与1.0的架构相比,最大的特点就是支持智能合约,在以太坊中,我们使用智能合约开发工具开发合约程序,并且编译为字节码,最终部署到以太坊的区块链账本中。部署后的智能合约是运行在虚拟机上的,成为“以太坊虚拟机”。正式通过这样的智能合约的实现,扩展了区块链系统的功能,同时我们也看到,在以太坊中还是支持数字货币的,因此在应用工具中还是有钱包工具的。
3.区块链3.0架构
在3.0的架构中,超越了对数字货币或者金融的应用范畴,而将区块链技术作为一种泛解决方案,可以在其他领域使用,比如行政管理、文化艺术、企业供应链、医疗健康、物联网、产权登记等,可以认为是面向行业应用。
行业应用一般是需要具备企业级属性的,比如身份认证、许可授权、加密传输等,并且对数据的处理性能也会有要求,因此企业级场景下的应用,往往都是联盟链或者私有链。我们来看一下示意图
在上图中,数字货币不再是一个必选的组件了,当然如果需要,我们也可以通过智能合约的方式来实现数字货币的。与之前的架构相比,最大的特点就是增加了一个网管控制,实际上就是增加了对安全保密的需求的支持,并且通过数据审计加强对数据的可靠性管理。
在3.0中,实际上可以看成是一套框架,通过对框架的配置和二次开发可以使用各行业的需求,比如图中的“可插拔共识”,意思就是共识机制不是固定的,而是可以通过用户自己去选用配置。
结语:大家可以通过上面的三张示意图去理解三种阶段的架构以及在发展过程中增进的地方,下篇我将给大家介绍一下区块链的三种种类,分别是共有链、私有链、联盟链。