设计软件系统时,工程师往往喜欢使用架构思维来描述一个信息系统。架构是针对某种特定目标系统提供的通用解决方案,具有体系性和普遍性。
虽然公链、联盟链、私有链的具体技术实现会有所不同,但从架构视角来看,所有的区块链都遵循了“七横两纵”的架构模型。七横指的是基础设施、网络、账本、共识机制、智能合约、接口、应用,两纵指的是系统运维和系统治理。
区块链的核心是由协议层和扩展层组成。
协议层就是区块链最底层的技术,类似于电脑的操作系统,涉及网络、存储和共识机制。
扩展层是区块链应用层的技术,类似于操作系统的驱动程序,智能合约是区块链目前最主要的应用场景。
基础设施指的是区块链系统正常运行所需的软硬件环境,应用是基于区块链的业务应用,系统运维是为了保证区块链软硬件正常运行,系统治理更偏重于技术之外规则、规章、制度的建立。
1、基础设施
基础设施是区块链系统正常运行所需的软硬件环境。硬件包含网络资源(网卡、交换机、路由器、防火墙等网络安全设备)、存储资源(硬盘等存储设备)和计算资源(CPU、GPU、ASIC等计算机芯片),软件包含操作系统、数据库、WEB服务中间件等应用软件所需的中间件。
不同区块链的基础设施会有所不同。比如以太坊使用显卡(Graphics Processing Unit,GPU)来挖矿,EOS的超级节点采用的是云服务器。
2、网络
区块链网络底层采用的是P2P协议。网络层主要作用是区块链网络节点的发现及消息的传播和验证。
由于区块链没有中心化服务器,因此每个节点需要通过网络协议发现邻居节点,并与其建立连接。交易信息通过网络协议进行传输,并由各个节点进行验证确认。
3、账本
账本是整个区块链技术的数据层,主要负责区块链交易的存储。交易是区块链中最小数据存储单元,典型的区块链是将交易存储在链状数据结构上(IOTA、IPFS使用的是DAG的数据结构),采用了非对称加密、默克尔树、时间戳等技术来确认数据的身份和数据的唯一性。存储采用了键值对(Key/value)的数据库结构(比如LevelDB)。
账本层有两种数据存储方式,分别是基于资产的记账模型和基于账户的记账模型。比特币采用是基于资产的匿名记账模型,以太坊、EOS是基于账户的记账模型。
4、共识机制
共识机制是区块链技术中一项重要的技术,核心是通过算法来决定由谁来记账,以确保数据的一致性。记账者的选择方式会影响整个区块链系统可扩展性(Scalability)、去中心化(Decentralization)和安全(Security)。目前主流的共识机制有工作量证明机制(Proof of Work,PoW)、权益证明机制(Proof of Stake,PoS)和代理权益证明机制(Delegate Proof of Stake,DPoS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等。
业务场景不同,区块链采用的共识机制会有所不同。公链节点比较分散,在计算机技术的基础上加入了现实世界的经济博弈,老老实实工作就会有相应的奖励,作恶则会受到经济惩罚。
联盟链、私有链节点需要授权才可以加入,在共识机制的设计上弱化了节点作恶的惩罚机制,更偏重于节点故障的情况下,怎样保证区块链系统正常运行。
比特币、以太坊采用的是工作量证明机制,老老实实工作就会得到代币奖励,作恶就会白白损失高昂的电费,EOS采用的是代理权益证明机制,老老实实工作也会得到代币奖励,作恶则会被系统通过投票的方式投出。
5、智能合约
智能合约是运行在区块链沙盒机制里的一段无需干预可以自动执行的代码,具备去中心化、不可篡改、公开透明等特点,是区块链最主要的应用场景。
从数据的获取角度来看,智能合约分为原生数据驱动和外部数据驱动两种。原生数据驱动的智能合约无需与外部世界交互,即可自动完成合约的执行;外部数据驱动的智能合约需要通过预言机(oracle)获取外部数据才可以完成合约的执行。比如猜大小的博彩游戏,只要按照预先设定的规则即可执行,而航班延误赔偿的合约则需要获取航班信息才能按照预先设定的规则执行。
受制于技术和法规因素的影响,当前智能合约的应用还处于初级阶段。智能合约技术的发展受制于预言机、智能合约漏洞、法律法规等因素的影响。随着全社会各类人才对区块链技术的关注,相信这些问题在不久的将来都会得到解决。
6、接口
接口主要用于完成功能模块的封装,为应用层提供方便简洁的调用方式。通过RPC接口、SDK,应用系统可以非常方便的与区块链进行交互,一方面无需学习复杂的区块链底层协议,可以降低DAPP的开发难度,另一方面可以提高DAPP的安全性。
7、应用
基于区块链的去中心化应用(DAPP)。目前DAPP主要广泛应用在通证(Token)、游戏、博彩、社交平台等领域,在供应链金融、数字内容确权、商品溯源等领域的应用将会是区块链技术的下一个风口。
8、系统运维
通俗来讲,系统运维就是为了保证区块链软硬件能够正常工作。在区块链架构里,系统运维指的是保证节点正常工作的日常运维工作,主要包含:系统监控、系统升级、权限管理、故障恢复等工作。
9、 系统治理
系统治理是除技术之外规则、规章、制度的建立,这关乎治理参与者的决策过程。一般认为系统治理分为链下治理和链上治理。链下治理是由一个团队负责区块链的治理,主要任务是对系统升级、利益平衡进行决策。链上治理是由用户对决策进行投票,根据投票结果区块链自动执行结果。链下治理是比特币、以太坊等公链采用的治理方式,链上治理是EOS等区块链采用的一种更为激进的治理方式。