|
知识路径: > 电子商务新技术与新应用 > 区块链 > 区块链的关键技术架构和发展趋势 >
|
被考次数:1次
被考频率:低频率
总体答错率:48%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
相关知识点:23个
|
|
|
|
|
各类区块链虽然在具体实现上各有不同,其整体架构却存在共性,如下图所示,可划分为基础设施、基础组件、账本、共识、智能合约、接口、应用、操作运维和系统管理9部分的架构。
|
|
|
|
|
|
基础设施层提供区块链系统正常运行所需的操作环境和硬件设施(物理机、云等),具体包括网络资源(网卡、交换机、路由器等)、存储资源(硬盘和云盘等)和计算资源(CPU、GPU、ASIC等芯片)。基础设施层为上层提供物理资源和驱动,是区块链系统的基础支持。
|
|
|
|
基础组件层可以实现区块链系统网络中信息的记录、验证和传播。在基础组件层之中,区块链是建立在传播机制、验证机制和存储机制基础上的一个分布式系统,整个网络没有中心化的硬件或管理机构,任何节点都有机会参与总账的记录和验证,将计算结果广播发送给其他节点,且任一节点的损坏或者退出都不会影响整个系统的运作。具体而言,主要包含网络发现、数据收发、密码库、数据存储和消息通知五类模块。
|
|
|
(1)网络发现。区块链系统由众多节点通过网络连接构成。特别是在公有链系统中,节点数量往往很大。每个节点需要通过网络发现协议发现邻居节点,并与邻居节点建立链路。对于联盟链而言,网络发现协议还需要验证节点身份,以防止各种网络攻击。
|
|
|
(2)数据收发。节点通过网络通讯协议连接到邻居节点后,数据收发模块完成与其他节点的数据交换。事务广播、消息共识以及数据同步等都由该模块执行。根据不同区块链的架构,数据收发器的设计需考虑节点数量、密码学算法等因素。
|
|
|
(3)密码库。区块链中多个环节使用密码学算法。密码库为上层组件提供基本的密码学算法支持,包括各种常用的编码算法、哈希算法、签名算法、隐私保护算法等。与此同时,密码库还涉及诸如密钥的维护和存储之类的功能。
|
|
|
(4)数据存储。根据数据类型和系统结构设计,区块链系统中的数据使用不同的数据存储模式。存储模式包括关系型数据库(如MySQL)和非关系型数据库(如LevelDB)。通常,需要保存的数据包括公共数据(例如,交易数据、事务数据、状态数据等)和本地的私有数据等。
|
|
|
(5)消息通知。消息通知模块为区块链中不同组件之间以及不同节点之间提供消息通知服务。交易成功之后,客户通常需要跟踪交易执行期间的记录和获取交易执行的结果。消息通知模块可以完成消息的生成、分发、存储和其他功能,以满足区块链系统的需要。
|
|
|
|
账本层负责区块链系统的信息存储,包括收集交易数据,生成数据区块,对本地数据进行合法性校验,以及将校验通过的区块加到链上。账本层将上一个区块的签名嵌入到下一个区块中组成块链式数据结构,使数据完整性和真实性得到保障,这正是区块链系统防篡改、可追溯特性的来源。典型的区块链系统数据账本设计,采用了一种按时间顺序存储的块链式数据结构。
|
|
|
账本层有两种数据记录方式,分别是基于资产和基于账户。基于资产的模型中,首先以资产为核心进行建模,然后记录资产的所有权,即所有权是资产的一个字段。基于账户的模型中,建立账户作为资产和交易的对象,资产是账户下的一个字段。相比而言,基于账户的数据模型可以更方便的记录、查询账户相关信息,基于资产的数据模型可以更好地适应并发环境。为了获取高并发的处理性能,且及时查询到账户的状态信息,多个区块链平台正向两种数据模型的混合模式发展。
|
|
|
|
共识层负责协调保证全网各节点数据记录一致性。区块链系统中的数据由所有节点独立存储,在共识机制的协调下,共识层同步各节点的账本,从而实现节点选举、数据一致性验证和数据同步控制等功能。数据同步和一致性协调使区块链系统具有信息透明、数据共享的特性。
|
|
|
区块链有两类现行的共识机制,根据数据写入的先后顺序判定,从业务应用的需求看,共识算法的实现应综合考虑应用环境、性能等诸多要求。一般来说,许可链采用节点投票的共识机制,以降低安全为代价,提升系统性能。非许可链采用基于工作量、权益证明等的共识机制,主要强调系统安全性,但性能较差。为了鼓励各节点共同参与进来,维护区块链系统的安全运行,非许可链采用发行Token的方式,作为参与方的酬劳和激励机制,即通过经济平衡的手段,来防止对总账本内容进行篡改。因此,根据运行环境和信任分级,选择适用的共识机制是区块链应用落地应当考虑的重要因素之一。
|
|
|
|
智能合约层负责将区块链系统的业务逻辑以代码的形式实现、编译并部署,完成既定规则的条件触发和自动执行,最大限度的减少人工干预。智能合约的操作对象大多为数字资产,数据上链后难以修改、触发条件强等特性决定了智能合约的使用具有高价值和高风险,如何规避风险并发挥价值是当前智能合约大范围应用的难点。
|
|
|
智能合约根据图灵完备与否可以分为两类,即图灵完备和非图灵完备。影响实现图灵完备的常见原因包括:循环或递归受限、无法实现数组或更复杂的数据结构等。图灵完备的智能合约有较强适应性,可以对逻辑较复杂的业务操作进行编程,但有陷入死循环的可能。对比而言,图灵不完备的智能合约虽然不能进行复杂逻辑操作,但更加简单、高效和安全。
|
|
|
当前智能合约的应用仍处于比较初级的阶段,智能合约成为区块链安全的“重灾区”。从历次智能合约漏洞引发的安全事件看,合约编写存在较多安全漏洞,对其安全性带来了巨大挑战。目前,提升智能合约安全性一般有几个思路:一是形式化验证(Formal Verification)。通过严密的数学证明来确保合约代码所表达的逻辑符合意图。此法逻辑严密,但难度较大,一般需要委托第三方专业机构进行审计。二是智能合约加密。智能合约不能被第三方明文读取,以此减少智能合约因逻辑上的安全漏洞而被攻击。此法成本较低,但无法用于开源应用。三是严格规范合约语言的语法格式。总结智能合约优秀模式,开发标准智能合约模板,以一定标准规范智能合约的编写可以提高智能合约质量,提高智能合约安全性。
|
|
|
|
系统管理层负责对区块链体系结构中其他部分进行管理,主要包含权限管理和节点管理两类功能。权限管理是区块链技术的关键部分,尤其对于对数据访问有更多要求的许可链而言。权限管理可以通过以下几种方式实现:①将权限列表提交给账本层,并实现分散权限控制;②使用访问控制列表实现访问控制;③使用权限控制,例如评分/子区域。通过权限管理,可以确保数据和函数调用只能由相应的操作员操作。
|
|
|
节点管理的核心是节点标识的识别,通常使用以下技术实现:①CA7认证:集中式颁发CA证书给系统中的各种应用程序,身份和权限管理由这些证书进行认证和确认;②PKI8认证:身份由基于PKI的地址确认;③第三方身份验证:身份由第三方提供的认证信息确认。由于各种区块链具有不同的应用场景,因此节点管理具有更多差异。现有的业务扩展可以与现有的身份验证和权限管理进行交互。
|
|
|
|
接口层主要用于完成功能模块的封装,为应用层提供简洁的调用方式。应用层通过调用RPC接口与其他节点进行通信,通过调用SDK工具包对本地账本数据进行访问、写入等操作。同时,RPC和SDK应遵守以下规则:一是功能齐全,能够完成交易和维护分布式账本,有完善的干预策略和权限管理机制。二是可移植性好,可以用于多种环境中的多种应用,而不仅限于某些绝对的软件或硬件平台。三是可扩展和兼容,应尽可能向前和向后兼容,并在设计中考虑可扩展性。四是易于使用,应使用结构化设计和良好的命名方法方便开发人员使用。常见的实现技术包括调用控制和序列化对象等。
|
|
|
|
应用层作为最终呈现给用户的部分,主要作用是调用智能合约层的接口,适配区块链的各类应用场景,为用户提供各种服务和应用。由于区块链具有数据确权属性以及价值网络特征,目前产品应用中很多工作都可以交由底层的区块链平台处理。在开发区块链应用的过程中,前期工作须非常慎重,应当合理选择去中心化的公有链、高效的联盟链或安全的私有链作为底层架构,以确保在设计阶段核心算法无致命错误问题。因此,合理封装底层区块链技术,并提供一站式区块链开发平台将是应用层发展的必然趋势。同时,跨链技术的成熟可以让应用层选择系统架构时增加一定的灵活性。
|
|
|
根据实现方式和作用目的的不同,当前基于区块链技术的应用可以划分为三类场景,如下表所示:①价值转移类,数字资产在不同账户之间转移,如跨境支付;②存证类,将信息记录到区块链上,但无资产转移,如电子合同;③授权管理类,利用智能合约控制数据访问,如数据共享。此外,随着应用需求的不断升级,还存在多类型融合的场景,如下表所示。
|
|
|
|
|
操作运维(Operation and Maintenance)
|
|
|
操作运维层负责区块链系统的日常运维工作,包含日志库、监视库、管理库和扩展库等。在统一的架构之下,各主流平台根据自身需求及定位不同,其区块链体系中存储模块、数据模型、数据结构、编辑语言、沙盒环境的选择亦存在差异,详见下表,给区块链平台的操作运维带来较大的挑战。
|
|
|
|
|
|
|
|
联盟链是区块链现阶段的重要落地方式,但联盟链不具备公有链的可扩展性、匿名性和社区激励。随着应用场景日趋复杂,公有链和联盟链的架构模式开始融合,开始出现公有链在底层面向大众、联盟链在上层面向企业的混合架构模式,结合钱包、交易所等入口,形成一种新的技术生态。例如,在公有链中选取验证节点时,共识算法层面存在PoS不确定性高、PoW资源消耗严重、PBFT无法支持大量节点进行共识等问题,Algorand算法9通过密码学的方法,从大量节点中选出少量节点,再用PBFT算法在少量节点之间达成共识的方式,为公有链和联盟链的混合架构提供了可能。
|
|
|
|
区块链与云计算结合,将有效降低区块链部署成本。一方面,预配置的网络、通用的分布式账本架构、相似的身份管理、分布式商业监控系统底层逻辑、相似的节点连接逻辑等被模块化、抽象成区块链服务,向外支撑起不同客户的上层应用。用云计算快速搭建的区块链服务,可快速验证概念和模型可行性。另一方面,云计算按使用量收费,利用已有基础服务设施或根据实际需求做适应性调整,可实现应用开发流程加速,部署成本降低,满足未来区块链生态系统中初创企业、学术机构、开源组织、联盟和金融机构等对区块链应用的服务需求。
|
|
|
在云计算当前主要提供的3种类型服务(IaaS、PaaS、SaaS)基础之上,区块链与云计算结合发展出BaaS(Blockchain as a Service,区块链即服务)。BaaS服务供应商旨在为用户提供更好的区块链服务,因此BaaS服务商比区块链底层技术提供商更注重与垂直行业的对接,提供合理的智能合约模板、良好的账户体系管理、良好的资源管理工具和定制化的数据分析和报表系统。
|
|
|
现阶段,在后台数据存储、应用数据分析、移动终端、应用发布、信息识别等方面都有BaaS服务供应商支撑。以云计算平台为依托,区块链开发者可以专注于将区块链技术应用到不同的业务场景,帮助用户更低门槛、更高效地构建区块链服务,同时推动自有产业转型升级,为客户创造全新的产品、业务和商业模式。
|
|
|
|
让价值跨过链和链之间的障碍进行直接的流通是区块链越来越凸显的需求之一。跨链技术使区块链适合应用于场景复杂的行业,以实现多个区块链之间的数字资产转移,如金融质押、资产证券化等。目前主流的跨链技术包括:公证人机制(Notary schemes)、侧链/中继(Sidechains/relays)和哈希锁定(Hash-locking)。
|
|
|
为了提高区块链系统的吞吐量,区块链技术和学术专家提出多种高性能方案。第一类高性能方案是改变块链式拓扑结构为基于交易的有向无环图(Directed Acyclic Graph,DAG)。在这种拓扑结构下,交易请求发起后,广播全网确认,形成交易网络,无打包流程,交易可以从网络中剥离出来或者合并回去。基于DAG的设计没有区块的概念,扩容不受区块大小的限制,其可伸缩性取决于网络带宽、CPU处理速度和存储容量的限制10。这种拓扑结构可以应对安全问题、高并发问题、可扩展性问题和数据增长问题,以及适应小额支付场景。第二类高性能方案是改变共识策略,通过减少一次参与共识的节点数量以提高吞吐量。这类方案中,为了提高性能,尽量在不影响安全的前提下减少参与共识的节点数,用算法控制一次参与共识的节点不被提前预知。虽然这种方案可以提高性能,但保证安全性的策略实现起来难度较大。第三类高性能方案是通过提高系统横向扩展能力来提高系统整体吞吐量,代表有分片、子链、多通道等技术。对于这类技术,片区内、子链内、通道内需保持数据同步,片区间、子链间、通道间则是异步的。分片技术(Sharding)是把整个P2P网络中的节点分为若干相对独立的片区,以实现系统水平扩展。分片的情况下,通过把交易导引至不同节点,多个网络片区并行分担验证交易的工作。目前的分片策略包括网络分片(Network Sharding)、交易分片(Transaction Sharding)和计算分片(Computational Sharding)。子链技术是在主链上派生出来的具有独立功能的区块链,子链依赖主链而存在,并且可以定义自己的共识方式和执行模块。通过定义不同的子链,系统的可扩展性、可用性和性能均得到提高。多通道技术是系统中多个节点组成一个通道,每个节点也可以加入不同的通道中,通道之间互相隔离,通过锚节点互相通信。多通道技术可以消除网络瓶颈,提高系统可扩展性。
|
|
|
|
共识机制在区块链中扮演着核心的地位,决定了谁有记账的权利,以及记账权利的选择过程和理由,因此一直是区块链技术研究的重点。常见的共识机制包括PoW、PoS、DPoS、拜占庭容错等,根据适用场景的不同,也呈现出不同的优势和劣势。单一共识机制,各自有其缺陷,例如PoS依赖代币且安全性脆弱,PoW非终局且能耗较高。为提升效率,需在安全性、可靠性、开放性等方面进行取舍。区块链正呈现出根据场景切换共识机制的趋势,并且将从单一的共识机制向多类混合的共识机制演进,运行过程中支持共识机制动态可配置,或系统根据当前需要自动选择相符的共识机制。
|
|
|
|
智能合约应用是否丰富,取决于智能合约自身及其所在区块链对于智能合约应用的支撑能力,而智能合约的开发和执行效率则取决于开发语言和执行虚拟机。在目前的生态系统中,智能合约的开发语言不够规范,为了适应智能合约,需要创造新的合约语言或为现有语言增加形式更为严格的规范和校验。智能合约在轻量级的执行环境中将实现快速的启动时间和较高的执行效率。
|
|
|
智能合约的发展方向包括如下几点:①可插拔的执行环境架构:默认的执行环境应该不提供持久化存储,让合约默认是一种类似于微服务的无状态函数,从而直接进行并发处理;②明示化的调用关系:即只提供静态调用的功能,从而使得程序的调用关系可以在运行它之前就整理清楚;③可链外存储的合约代码:通过链上存储散列值、链外存储合约代码实现存储空间的扩展性;④低耦合度的设计:降低合约语言、执行环境、区块链之间的耦合度,提高智能合约系统的通用性;⑤完整安全的防护体系:代码定型与发布时的验证与检查,节点在执行合约中的动态验证,合约执行完毕的合理性判断,相关利益方的申诉机制与自动判决技术。
|
|
|