风险提示:防范以虚拟货币/区块链名义进行的非法集资风险。 ——银保监会等五部门

区块链的技术架构:储存层、网络层、共识层、智能合约、应用层

白话区块链 2019-05-10 16:07:17
微信分享

扫码分享

作者简介:Ultrain资深技术专家 Raymond,前摩托罗拉高级软件开发工程师,曾于近期发现EOS底层可导致EOS全网宕机隐患的致命安全漏洞,并将问题及修复方法提交至EOS,获其官方致谢。

作者:Raymond / 来源:超脑链

区块链的技术架构

区块链领域涉及的技术比较广泛,业界已经有很多的文章讲述相关的加密技术,共识算法等具体知识,结合众多的开源项目,对技术人员来说可以很方便地切入该领域。本节尝试从整体架构层面,描述各个模块相对关系,帮助大家建立一个整体认识。

image.png 

图2 区块链技术架构

存储层:

区块链平台运行所产生的区块数据,状态数据等需要存储到文件系统和数据库系统中。区块数据存储了具体的交易信息,其中需要利用默克尔树,非对称加密等技术实现信息摘要与签名,保证数据的完整性和一致性。状态数据一般存储到数据库中,也称之为世界状态,其中会包括系统运行参数,已注册帐号以及用户的智能合约字节码以及合约中存储的业务数据等信息。

区块链运行平台可以理解为一个分布式的状态机:所有节点从同一个创世状态开始,依次运行达成共识的区块内的交易,驱动各个节点的世界状态按照相同操作序列(增加,删除,修改)不断变化,实现所有节点在执行完相同编号区块后,世界状态完全一致。一个新节点加入网络,如果是作为一个全量节点,就需要从网络中其他节点同步所有历史区块信息,验证区块的正确性,并依次执行区块内保存的交易重构出世界状态,直到与网络上其他节点区块高度一致时,才完成了同步,可以与其他节点一起继续进行新区块的共识挖矿。

网络层:

点对点网络主要功能包括实现网络拓扑,交互共识协议信息以及广播/接收交易和区块信息等。一个新的节点依赖与种子节点的交互,实现网络邻居节点自动发现与组网,形成去中心化网络拓扑。不同的共识协议,会有不同的协议相关网络数据包,完成共识过程。网络中的大部分数据报文,是交易和区块数据包。一个节点接收到用户交易时,会广播到网络中并尽量传播到各个节点。一个节点生产出来的区块,也要求尽快传播到各个节点。比特币初始设计区块大小1MB,出块时间间隔10分钟,就是为使各个节点尽可能接收到其他节点广播的区块,减少分叉区块的产生。

在区块生成时间间隔一定的前提下,一个区块中包含的交易越多,系统的处理性能就越高。但一个区块能够包含多少交易,一方面取决于节点CPU的处理性能,另一方面取决节点的网络带宽。一个区块内包含的交易执行总时长有限,CPU处理性能越高,能包含的交易就越多;网络带宽的吞吐能力也是限制区块大小的一个因素,网络层需要尽量在下一个区块生产前将当前区块广播至全网,因此节点的网络带宽越高,区块的大小就可以越大,能包含的交易就越多。这里所说的节点的CPU处理能力和网络带宽,要考虑全网所有节点,实际上受限于性能最差的节点。

共识层:

区块链的共识,就是利用一定协议机制使所有节点对接下来要生产出的区块达成一致(即区块内应该包括哪些交易)。我们可以想象成一个投票场景,每人都可以提出自己的建议,并且争取拉到足够多的投票。投票权的分配要能够抵抗女巫攻击,就是说不能使单一主体控制大量选票。在现实世界,我们可以按照选民身份赋予每个人投票权;在数字化世界的中心化系统中,我们利用注册机制(包括手机号,验证码,手持身份证照片,活体检测等技术手段)提高单一主体获得大量选票的门槛;在去中心化的区块链领域,没有了身份识别机制,采取包括工作量证明PoW,权益证明PoS,委托权益证明DPoS,各种PoX(PoET,PoA等)以及VRF类算法等方法分配投票权。

PoW要求节点找到一个数值使区块哈希值符合要求,在寻找该数值过程,节点需要投入大量算力。节点找到了满足要求的数值,就获得了投票权,并同时提出了自己建议的区块(PoW不需要投票环节,先获得投票权的节点提议的区块为共识区块);PoS/DPoS利用节点抵押的Token权益结合其他因素分配投票权,并结合BFT投票确认环节,选择共识区块;VRF类算法则依赖密码学,数学随机数等技术分配投票权,经过BFT投票确认选择共识区块。

智能合约层:

各个公链采用不同的编程语言进行智能合约编写,比如以太坊的Solidity,EOS的C++, Ultrain的typescript等。智能合约编译为字节码,并打包进交易信息上链进行存储。各个节点接收到区块后,提取其中包含的交易信息,将字节码加载到虚拟机运行,运行结果反应到世界状态中。上链的字节码与开源的智能合约,可以进行一致性校验,从而保证节点实际运行的字节码与开源代码所显示业务逻辑一致,提供公开透明的信任能力,使能需要信任计算的商业场景。需要指出的是,目前出于安全角度考虑,将智能合约完全开源后会极大降低黑客攻击门槛,真正开源智能合约的项目并不多。

共识层一般称为Layer 1,智能合约层称为Layer 2(因此存储层和网络层可以认为是Layer 0)。有很多项目在Layer 2智能合约层进行创新,比如闪电网络,去中心化交易平台,跨链机制等。

应用层:

各个公链的商业生态建设可以类比为谷歌的Android生态建设:公链项目方类似谷歌角色,提供软件平台;矿机生产商类似手机硬件生产厂商,提供软件运行硬件平台;公链上层的丰富应用,也称之为DAPP,类似Android的平台丰富的APP。公链项目方将软件平台研发出来,还需要提供开发工具,举办活动等来吸引开发者为公链开发DAPP,打造一个繁荣的生态。现在运行在公链上的DAPP以游戏,溯源,交易平台等为主。游戏利用区块链的公开透明机制,可以将核心业务逻辑运行在区块链平台以示公平;溯源等应用则主要是将相关流转信息记录在区块链平台,利用其不可篡改特性,供用户进行全生命周期历史信息查询,比如有货高端运动球鞋交易信息在Ultrain公链上的溯源应用。公链上运行的DAPP质量好坏,数量多寡,也是该公链是否健康发展的一个重要指标。

需要指出的是,区块链技术架构的分层只是方便理解而进行的逻辑层面划分,大部分项目还是紧耦合的单体软件形式。随着区块链技术的发展,已经有项目开始支持模块化开发,比如支持更换网络模块、共识模块等。

白话区块链

区块链世界入口第一站,人人都能看懂的区块链;24 小时热点实时追踪。