什么是区块链?

根据工信部指导发布的《区块链技术和应用发展白皮书》的解释:

狭义的讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证不可篡改和不可伪造的分布式账本。

广义来讲,区块链技术是利用链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算模式。

顾名思义,区块链(blockchain)是一种数据以区块(block)为单位产生和存储,并按照时间顺序首尾相连形成链式(chain)结构,同时通过密码学保证不可篡改、不可伪造及数据传输访问安全的去中心化分布式账本。区块链中所谓的账本,其作用和现实生活中的账本基本一致,按照一定的格式记录流水等交易信息。特别是在各种加密数字货币中,交易内容就是各种转账信息。只是随着区块链的发展,记录的交易内容由各种转账记录扩展至各个领域的数据。比如,在供应链溯源应用中,区块中记录了供应链各个环节中物品所处的责任方、位置等信息。

区块链技术是一个技术合集,它包含共享账本、共识算法、安全隐私和智能合约等技术组成,具有多中心化、共识可信、不可篡改、可追溯等特性。

区块链典型技术架构

区块链模型自底向上分为基础设施层、数据层、网络层、共识层、合约层以及应用层。其中数据层、网络层、共识层是区块链的核心层级,是实现区块链的基础保障,缺一不可。基础设施层是区块链的构建基础,也是必不可少的。合约层是扩展层级,区块链的可编程性质主要通过该层来实现。应用层主要实现各种应用场景,并和具体的业务进行对接。

区块链的六层架构

images_167055649651916

1、区块链典型技术架构——应用层

区块链的应用层主要负责适配区块链的各类应用场景,为用户提供各种服务和应用,同时我们看到越来越多不同类型的客户端和工具现已支持区块链框架。

客户端应用程序通常通过触发交易来启动整个业务工作流。指定节点调用智能合约层功能继续向底层执行相应的功能。客户端应用程序可以使用任何软件编程语言来实现,主流的有Java、Golang、Python等,并且可以运行在各种操作系统中。

应用程序既可以使用任何区块链框架实现所提供的命令行接口(CLI)工具,也可以使用特定编程语言的软件开发工具包(SDK)与网络上的节点通信。用户在开发客户端时,只需要关注自己的业务逻辑,调用相应接口封装并发送消息即可,不需要关注底层消息发送接收的具体过程。

在以容器方式和虚拟机方式承载的智能合约诞生之前,区块链的应用十分有限,主要集中在加密数字货币上。随着区块链技术的演进,早已超越其传统的基于加密数字货币的网络形象,同时智能合约的发展为应用层的丰富带来了福音。

尽管区块链现在还没有完全成熟,但是近几年已经有一大批的应用浮现。区块链应用涉及金融、供应链、医疗、教育、政务等领域,在可预期的未来,区块链应用必定会像PC和手机应用一样普遍。

2、区块链典型技术架构——合约层

智能合约(Smart Contract)并不是区块链首创的概念。早在1993年,跨领域学者Nick Szabo就提出了智能合约的概念,他对智能合约的定义为: “一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”简单来说,智能合约是一种在满足一定条件时,就自动执行的计算机程序。例如,自动售货机就可以视为一个智能合约系统,客户需要选择商品,并完成支付,这两个条件都满足后,售货机就会自动吐出货物。合约在生活中处处可见,如租赁合同、借条,等等。传统合约依靠法律进行背书,当产生违约及纠纷时,往往需要借助法院等政府机构的力量进行裁决。智能合约不仅仅是将传统的合约电子化,它的真正意义在于,革命性地将传统合约的背书执行由法律替换成了代码。俗话说“规则是死的,人是活的”,程序作为一种运行在计算机上的规则,意味着它会被严格执行。

区块链系统中的合约层主要负责智能合约的功能和实现。简单来说,智能合约是一段在区块链上存储、验证和执行的代码,被认为是第二代区块链的技术核心。它是区块链从虚拟货币、金融交易协议到通用工具发展的必然结果。目前几乎所有的区块链技术公司都已在其产品中支持智能合约产品,例如,以太坊基于虚拟机的智能合约平台、基于Bitcoin区块链的RSK平台,IBM 公司提出的企业级Hyperledger Fabric平台等,这些产品的推出极大地丰富了智能合约技术的内涵和范围,为区块链技术在不同领域的现实应用奠定了基础,也代表了区块链未来发展的方向。

以Fabric为例,智能合约模块主要完成智能合约的生命周期管理,以及交易背书过程。智能合约生命周期管理包括智能合约的安装、启动、更新、销毁。交易背书过程包括合约服务调用、状态数据访问以及交易构造等关键技术功能。

智能合约不仅是区块链上的一段可执行代码,而且是封装了智能合约语言、运行环境以及与系统账本直接交互的相关过程方法的一个完整的计算系统,且支持被应用程序调用,被调用时智能合约会自动执行合约功能。智能合约可以操作账本中的状态,这些状态记录着与业务相关的数据。区块链系统可以部署多个智能合约,应用程序通过名称、版本号来指定具体调用哪个智能合约。

3、区块链典型技术架构——共识层

区块链系统是一个高度去中心化的系统,各节点需要维护相同的账本数据。但在现实网络环境中,节点数据的一致性面对诸多威胁: 网络消息可能存在阻塞、丢包或重传,节点运行可能宕机或错误,同时系统面临“女巫攻击”“双花攻击”等潜在风险。如何在如此复杂的网络环境中保证各节点数据的一致性,是共识算法需要解决的主要问题。

共识层是区块链系统的核心,主要封装了区块链节点间协同运行的各类共识算法,并利用这些共识算法实现高安全性、去中心化、去信任化等特性。首先,共识算法需具备高安全性,即使在存在节点崩溃甚至恶意攻击风险的网络中,仍然需要确保正常节点之间就特定数据达成一致; 其次,共识算法是去中心化的,支持多个节点组成分布式共识集群,共同参与交易的验证与执行,无须依赖中心化的第三方就能正常运转; 最后,共识算法是去信任化的,共识节点之间并不需要彼此信任,而是只要参与共同的共识机制,就能最终达成对账本的一致认知。

共识层承担着保障分布式节点对特定交易达成一致的使命,为此,共识层需要承担交易验证、排序,区块生成、验证的功能。区块链系统运行时,会收到来自多个客户端的交易请求,共识层首先要对海量交易安排确定的执行顺序,确保任意节点都能按相同顺序执行交易。同时,为了提高共识效率,通常共识层会将一批交易数据进行打包,从而批量进行共识,一批打包好的交易数据会被存储到区块结构中,在共识集群内广播。当其他共识层节点收到区块后,需要对区块的合法性与其中众多交易的合法性进行独立验证,对于验证不合法的区块或交易,节点有权拒绝执行,以抵御可能存在的恶意攻击;如果区块与交易在该节点校验通过,共识层会按指定的交易顺序请求合约层对交易进行执行,并将执行结果发送到数据层,发起数据更新的请求,最终会由数据层完成交易结果的持久化。一般而言,为了降低系统的复杂度,共识过程中通常会由特定节点承担交易排序与区块生成的职能,这些特定节点往往被称为“记账节点”或“出块节点”。这些特定节点可能由竞争、投票、随机指定等不同策略产生,而这些策略往往正是决定区块链共识层执行效率、公平性乃至安全性的核心。

在进行共识层的设计时,首先需要重点考虑的是共识协议的选择。当前业界的共识协议种类繁多,在安全假设、性能和可扩展性等方面各有侧重。例如,在公有链场景中,由于节点可自由加入、退出,无须进行身份认证,因此共识算法大多是以证明类的算法为主,共识的效率较低,共识结果往往是非确定性的,为了吸引节点参与网络交易的见证,通常还会设置激励机制。而在联盟链的场景中,以多中心化的应用场景为主,因此在共识算法的选择上更加关注性能,通常选择经典分布式共识中的拜占庭容错共识算法,但在共识节点的扩展性方面则不那么友好。其次,为了实现区块链系统的可持续演进,良好的工程设计非常重要。例如,为提升系统的可维护性,可以考虑组件化设计,共识协议与区块链系统松耦合,进而实现共识协议的插拔式替换。

4、区块链典型技术架构——网络层

与TCP/IP定义的网络层不同,在区块链系统中,网络层实现了分布式组网机制、消息传播协议和数据验证机制。

在绝大多数区块链系统中,网络层都采用了点对点组网的方式,区块链中节点可以自由地组网,任意两个节点之间通过消息传播协议实现消息和交易的传播。每个节点都承担了网络路由、验证区块数据以及传播区块数据的功能。经过一段时间后,在整个区块链网络中的每个节点都具有同样的数据。

P2P组网方式有如下特点:

• 节点之间采用扁平化拓扑结构进行连接,不存在任何中心化的节点和层级结构。

• 节点的地位相互平等,每个节点均承担了节点发现、网络路由、传播区块、验证区块等功能。

数据通过消息传播协议在区块链网络中传播。不同的区块链系统采用的消息传播协议不同,例如,比特币系统和Fabric系统采用了Gossip协议,以太坊系统采用了Kademlia协议。网络中的每个节点都会进行消息监听,当发现新数据后会使用数据校验机制进行校验,并根据校验通过与否来决定是否继续传播。

数据验证机制保证传播的数据是可验证的。不同的区块链系统,校验的数据内容也略有不同。通常来说,会对数据结构、数据长度、共识证明、数字签名和时间戳等字段进行校验。

5、区块链典型技术架构——数据层

数据层主要描述区块链的物理形式,是最底层的技术。本节主要从数据结构、数据存储方面进行总体介绍。

1)数据结构

在数据结构的设计上,现有的区块链平台借鉴了Haber与Stornetta的研究工作,基于时间戳、哈希、数字签名等技术,为了实现数据的不可篡改性,形成以区块为单位的链式结构。

不同区块链平台在数据结构的具体细节上虽有差异,但整体上基本相同。以比特币为例,每个区块由区块头和区块体两部分组成,区块体中存放了自前一区块之后发生的多笔交易; 区块头中存放了前块哈希(PreBlockHash)、随机数(Nonce)、默克尔根(Merkle Root)等。

2)数据存储

在数据存储的设计上,由于区块链式结构数据需要在磁盘上进行持久化,通常会以文件形式存储,也有部分区块链系统使用数据库形式存储。文件存储更方便以日志形式的追加操作,数据库存储则更容易实现增删改查功能。比特币、Fabric的区块链式结构以文件形式存储,其索引数据存储在LevelDB数据库; 以太坊的区块链式结构与索引都存储在LevelDB数据库。

除了存储区块链式结构数据,以太坊、Fabric还都基于LevelDB 构建了状态数据库(World State)以存储账户余额或业务状态数据。在基于账户模型的区块链平台中,交易数据被打包进区块且经共识算法确认后,先追加写入区块链式结构,而后写入状态数据库。当新的节点加入区块链网络时,为了和已有节点数据保持一致,新节点需要同步区块链式结构数

据以达到全网区块的高度,同时,状态数据库也需和全网同步。

为了让更多常规计算能力的个人计算机节点加入区块链网络,以充分实现去中心化的理念,比特币和以太坊都选择了LevelDB数据库存储索引或状态数据,因为LevelDB是轻量级的单机数据库,无须安装部署且写入性能高效。但是基于 LevelDB数据库的架构方案显然无法满足企业级的业务需求(如高并发访问、Non-Key查询、复杂查询等),因此,很多区块链系统平台提供了插件化的数据访问机制,其除了支持LevelDB数据库,还额外支持CouchDB分布式数据库、SQL等关系型数据库等。

6、区块链典型技术架构——基础设施层

基础设施层为应用层、合约层、共识层、网络层和数据层提供其所需的计算、存储和网络等资源。为了使基础设施层满足多租户、弹性、稳定可靠和安全等需求,技术上必须进行资源的池化管理。即通过虚拟化技术将资源虚拟化形成资源池,然后根据用户的需求弹性分配,同时确保安全和隔离。根据资源类型的不同,基础设施层主要进行计算的虚拟化、存储的虚拟化和网络的虚拟化。

1)计算资源

计算资源为区块链系统的运行提供数据处理能力。传统的计算资源设备主要为x86处理器和ARM 处理器。而在当前业界主流的区块链系统中,一种新的可为代码提供更安全的可信执行环境TEE得到了越来越广泛的应用。

TEE全称Trusted Execution Environment,即可信执行环境。它是CPU 上的一块区域。这个区域的作用是给数据和代码执行提供一个更安全的空间,并保证它们的机密性和完整性。具体的TEE实现技术有Intel的SGX和ARM 的TrustZone。

另外,GPU 在数据并行处理方面和轻量级运算方面有着强大的能力,而区块链系统的交易处理过程中存在着大量的加验签和加解密处理,正是符合这两方面特点的场景,因此也得到了一定的应用。

计算的虚拟化技术相对已经比较成熟了,主流的虚拟化软件有XEN、KVM、VMware等,但是在性能、稳定性方面还有所欠缺,有待于进一步的优化和完善。

2)存储资源

存储资源为区块链系统的运行提供数据存储服务。区块链系统需要存储的数据主要是账本数据,账本数据类似于日志,以一定的顺序记录着系统发生的每一笔交易,以文件的形式存储在磁盘上。在部分区块链系统中,为了便于数据的快速查询,系统还维护了一份状态数据,通常通过数据库的方式进行存储。

存储的虚拟化当下还比较稚嫩,业界还没有一个比较成熟的开源系统。存储虚拟化主要分文件型存储虚拟化和块设备存储虚拟化。文件型存储的实现基本都大同小异,主要受GFS的思路启发具体实现的,如Openstack的Swift。而块设备存储则百花齐放,Nova Volume、盛大云和UCloud都各自实现了块设备存储。此外,最近业界非常热门的SDS(软件定义存储),本质上也是一种存储虚拟化。

3)网络资源

网络资源为区块链系统的运行提供数据传输服务。区块链系统是天然的分布式系统,节点之间不可避免地要进行数据传输,如交易的发送、共识协议的运行以及区块的广播与同步等,都依赖网络资源。

为了保证节点之间能够高效、安全地进行通信,节点之间的数据传输需要具备足够的带宽和较小的时延。光纤通信的普及以及5G 的到来,很大程度上解决了带宽不足的问题。网络的虚拟化旨在一个物理网络资源上创建出多个虚拟子网,从而实现对网络资源更方便的管理。简单来讲,就是将一个大的物理网络分割成多个逻辑子网,各个逻辑子网之间相互独立,实现多租户隔离,从而实现网络的弹性伸缩,以提高网络资源利用率。结合网络切片技术,一方面,大幅提高了网络资源利用率,实现弹性的网络; 同时也为数据传输的服务质量(Quality of Service,QoS)保证提供了有力支撑。当下最常见的网络虚拟化技术方案是SDN(软件定义

网络),SDN实现了物理网络的管理,网络资源的虚拟化和网络隔离,使得网络虚拟化的实现更加方便和灵活。

区块链典型技术架构——跨层功能

跨层功能提供了跨越多个层次的功能组件,根据对外提供的功能,大体可分为开发、运营、安全、治理与审计几大类别。

开发组件主要是为了支撑区块链服务开发方的开发活动,包括区块链服务的集成开发环境、编译构建工具、测试验证工具和相应的环境。集成开发环境提供了用于区块链系统、智能合约及相关应用的开发、调试和部署等服务。编译构建工具用于构建可发布的软件包,该软件包既包含用于服务实现的软件,也包含相关的配置元数据和配置脚本。测试验证工具能对区块链的所有服务进行测试,并生成相应的测试报告,帮助开发者提前发现问题并及时修复。在当前业界大多数区块链平台中,都提供了在线可视化的配套工具集。

运营组件主要包括与区块链操作相关的管理功能,用于管理和控制提供给用户使用的区块链服务,包括成员管理、策略管理、异常管理、跨链服务管理等。成员管理主要用于联盟链场景,通常负责管理成员真实身份和链上身份的对应关系,设置相关数据的访问权限。策略管理提供了区块链服务的定义、更新和访问策略以及针对这些策略的管理能力,包括用于区块链服务本身及其使用的业务、技术、安全、隐私和认证等策略。异常管理提供了系统的运行监控能力,用于及时发现问题,通过分析,及时处理问题并产生异常报告。跨链服务管理提供了区块链系统之间、区块链与业务系统之间互联互通的连接和访问能力,包括系统的注册、服务请求和连接、身份认证等功能。

安全组件是区块链的重要基础,为区块链的各层功能以及层与层之间的数据通信提供机密性、完整性、可用性和隐私保护的基本功能。安全组件提供身份与认证管理、授权管理、安全策略管理、隐私保护等功能。身份与认证管理提供用户身份的确认能力,确定用户是否具有对某种资源或某一数据的访问权限,进而有效地保证区块链系统的访问控制策略能够得到有效执行。授权管理和安全策略管理负责对用户访问某种资源授予权限,制定某一安全区域内的访问规则。隐私保护功能主要是保护区块链应用中用户身份和交易内容等敏感信息不被泄露或非法获取,相关信息仅在获得授权后才能被访问。

治理和审计组件是根据区块链服务关联方的治理要求,使区块链服务符合可治理与可审计的特性集合。治理组件需保证系统满足治理机构对区块链服务的环境、系统、可用性、灾备、系统运维、所支持业务的合规性等方面的规定,支持通过事前准入控制、事中权限控制、事后追溯等技术手段实现治理目标,保证记录不可篡改、可追溯与可稽核。审计组件实现区块链网络的审计内控、责任鉴定和事件追溯等方面的要求,以有效的技术手段,配合业务所属的行业标准进行精确的审计管理。

区块链相关职业培训

层次化培训体系,助您提升专业技能,成就职场新机遇

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中上云礼包123等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

  • 华为云区块链培训服务

    面向不同需求的政府与企业中高层、CXO、企业从业人员、院校学生、开发人员等客户提供区块链技术培训、区块链高研班、区块链政务沙龙等系列培训

    了解详情
  • 区块链专家服务

    提供专属区块链开发实践指导和咨询,以“场景分析,技术培训,架构设计,系统开发和系统上线”全面指导为设计思路,协助客户高效、低成本的上线高质量的区块链应用系统

    了解详情