华为区块链的方案及特点

区块链成为近两年热点话题,因其通过分布式数据存储、点对点传输、共识机制、加密算法等技术的集成,可有效解决传统交易模式中数据在系统内流转过程中的造假行为,从而构建可信交易环境,打造可信社会。近年来各国政府机构,国际货币基金组织以及标准、开源组织和产业联盟等在纷纷投入区块链产业的拉通和应用。随着区块链的产业价值的逐渐确定,区块链迅速地成为一场全球参与竞逐的“军备”大赛,中国也开始从国家层面设计区块链的发展道路(发改委委托信通院组织国内主要区块链公司进行区块链的顶层设计的研讨,工信部的信软司也在积极确定区块链的顶层设计机构)。2018 年,区块链及相关行业加速发展,中国将领跑全球进入“区块链可信数字经济社会”,我们正面临区块链重大的产业机遇。
区块链的应用已由开始的金融延伸到物联网、智能制造、供应链管理、数据存证及交易等多个领域,将为云计算、大数据、承载网络等新一代信息技术的发展带来新的机遇,其构建的可信机制,将改变当前社会商业模式,从而引发新一轮的技术创新和产业变革。
华为云区块链服务(BCS:Blockchain Service)
华为云区块链服务 BCS 是基于开源区块链技术和华为在分布式并行计算、PaaS、数据管理、安全加密等核心技术领域多年积累基础上推出的企业级区块链云服务产品。
华为云区块链服务是一种开放易用、灵活高效的通用型基础技术,聚焦于区块链云技术平台建设,帮助企业在华为云上快速、高效的搭建企业级区块链行业方案和应用,共同推动区块链应用场景落地,打造基于区块链的公共信任基础设施和共赢生态。
华为云区块链服务基于可信、开放、服务全球的华为云上运行,华为云产品和服务具有华为独有的新技术,以降低成本、弹性灵活、电信级安全、高效自助管理等优势惠及用户,BCS 可以和华为云技术产品和行业解决方案无缝对接,帮助企业在安全、高效、不可篡改等基础上轻松跨入云时代,快速部署新解决方案和应用。
1. 区块链服务 BCS 的设计原则和产品定位
设计原则
· 简单易用
在开源组件基础上部署企业级分布式区块链系统并非易事,不仅需要深入专业的区块链知识,同时需要各种复杂的设计和配置,易出错。BCS 能帮助企业实现自动化配置、部署区块链应用,并提供区块链全生命周期管理,让客户简单使用区块链系统,专注于上层应用的创新和开发。
· 成熟先进
BCS 在 Hyperledger、Kubernetes 和 Docker 等开源组件的基础上搭建,为用户提供成熟先进的区块链系统,华为云区块链服务秉承源于开源、优于开源、回馈开源的原则,积极投入和引领了多个开源社区的工作。
· 安全可靠
华为云区块链服务在开源的基础上注重自主创新,目前在关键领域如共识算法、同态加密、零知识证明、电信级云安全,高速网络连接、海量存储等方面具有自主知识产权的专利和技术积累。BCS 是在华为云完善的用户、秘钥、权限管理、隔离处理、可靠的网络安全基础能力和运营安全基础上推出的区块链服务。
· 云链结合
区块链只有与具体的企业应用、行业场景相结合才能真正产生价值,华为云提供各种区块链需要的无限可扩展的资源和丰富多样的云计算产品、定制化的各行业解决方案,BCS 和华为云结合可以给企业带来更大的便利、价值和想象空间。
· 合作开放
华为云专注于区块链底层技术和平台服务能力搭建,和各行业合作伙伴携手合作,共同打造基于华为区块链服务的可信行业区块链解决方案和区块链生态,共同推进区块链场景落地,帮助客户实现商业成功。
产品定位
华为云区块链服务致力于将自身技术使能企业的创新成长,面向企业及开发者提供一站式规划、采购、配置、开发、上线和运维的区块链平台服务,企业在华为云区块链服务上可快速自主搭建一套基于企业自身业务高安全、高可靠、高性能的企业级区块链系统,同时结合云服务特色的按需付费、弹性伸缩和可视化的数据管理等特性,大幅提高用户使用区块链的效率,有效降低企业的初始成本和使用成本。
2. 区块链服务 BCS 的总体逻辑架构
在设计原则的指导下,为解决区块链在企业级场景下的一些突出问题,包括系统性能、功能完备性、系统扩展性、易用性等,华为云区块链采用分层架构设计、云链结合、优化共识算法、容器、微服务架构与可伸缩的分布式云存储技术等创新技术方案。
华为云区块链服务包括 4 层 2 列:
· 区块链资源层
华为云 IaaS 和 PaaS 层,为区块链系统提供无限扩展的存储、高速的网络、按需购买弹性伸缩和故障自动恢复的节点等区块链资源。
· 区块链服务平台
具有极强的可靠性和扩展性,后续根据市场需求逐步支持 Corda 和 EEA 等优秀区块链框架,为上层应用低成本、快速的提供高安全、高可靠、高性能的企业级区块链系统。
· 合约层
目前提供 Hyperledger 标准智能合约接口,用户可以根据不同应用场景构建不同的智能合约,后续将与合作伙伴一起为用户打造通用场景智能合约库,如供应链管理和溯源、供应链金融、数字资产、公益慈善和互联网保险等,企业可以在此基础上快速构建区块链应用场景。
· 业务应用层
为最终用户提供可信、安全、快捷的区块链应用。用户可以使用华为云提供的各种解决方案(例如供应链金融解决方案、游戏行业解决方案、供应链溯源解决方案、新能源行业解决方案等),结合合约层快速搭建区块链应用。
·区块链系统安全
由华为云安全提供,联盟链最重要的特点是节点的可控性和账本的安全,华为云安全可以为区块链节点、账本、智能合约以及上层应用提供全方位的安全保障。
· 软件开发服务
用户可以使用软件开发服务实现业务应用、智能合约从开发、测试到部署等CI/CD(Continuous Integration/Delivery)全系列流程。

华为云区块链服务的分层架构设计有利于帮助企业快速简单的落地区块链场景,具体架构图如下图:

3. 区块链服务 BCS 平台功能特性
区块链服务平台是华为云区块链服务的主体,包括区块链服务管理平台和区块链底层技术两部分。
区块链服务管理平台
为企业提供快速创建、部署区块链应用、链代码管理和监控等全系统区块链服务。具体如下:

通过设计以下模块来实现区块链系统全生命周期管理:
· 区块链服务运营模块
− 区块链服务配置
BCS 提供的区块链配置页面简单易用,仅需配置几个参数如:区块链服务名称、部署区块链服务的 Kubernetes 集群名称,弹性文件名称、共识算法类型、节点参数等即可完成区块链服务部署。
− 区块链服务部署
配置完区块链服务参数后,租户点击确认按钮,一键完成区块链服务部署工作,PaaS 平台将根据用户配置的区块链服务参数和内置最佳实践通过 Kubernetes 将区块链的各个节点以 Docker 容器运行方式自动部署到指定集群中,相对于自建区块链系统,通过 BCS 只需要五分钟就可以部署一个完整的企业级区块链系统
− 区块链服务状态监控
通过区块链服务列表可以查看到区块链服务里节点的类型、数量和状态。方便管理员实时了解个区块链服务的状况。
− 区块链服务节点管理
管理员可以根据业务需求和负载,按需购买资源,在运行时动态弹性调整 Peer 节点和 Orderer 节点的数目,可以有效降低企业的初始和运行成本,同时当节点出现故障时,系统对故障节点进行自动恢复,保障区块链应用的可靠性。
· 区块链服务智能合约管理
智能合约也称链代码(Chaincode),链代码将业务网络交易封装在代码中,最终在一个 Docker 容器内运行。租户可以在华为软件开发服务或者线下进行开发和测试。目前华为云区块链服务支持 Golang 语言编写代码,后续会推出 Java 等多语言支持,租户可以选择擅长的语言编写链代码。
a. 智能合约安装和实例化
链代码首先需上传安装在 Peer 节点上,然后在通道上进行实例化,实例化的过程需要参与方进行共识,智能合约实例化过程将被记录到区块链中,实例化后,链代码将在 Docker 容器中运行。
所有通道成员都需要在运行此链代码的每个 Peer 节点上安装链代码,且只需在一个 Peer 节点上进行链代码实例化。如需使用相同的链代码,通道成员必须在链代码安装期间为链代码提供相同的名称和版本。
b. 智能合约触发
智能合约实例化后,可以通过外部条件来触发合约执行的过程,支持定时触发、事件触发、交易触发和其他合约触发的方式。定时触发是指满足合约中预设的时间之后,节点就触发时间达成共识之后,自动触发合约调用的过程。事件、交易和其他合约调用都是在一次新的请求共识过程中触发合约执行。
c. 智能合约更改和清理
等合约条款需要变更时需参与方对新的合约共同签署后执行合约升级,或者对过期作废或者业务需求变更不再需要的合约进行转存和清理,升级和清理的过程需要多节点共识之后才能完成。
运维监控
为了租户能够快速准确地识别系统的运行状态以及在运行中满足其他的运维需求(如程序升级等),华为区块链服务提供了完整、快捷、可视化的运维监控系统,包括监控、告警等功能。
· 监控
负责收集系统中运行的状态数据,并且可视化的呈现出来。系统中的状态数据包括系统的访问量、耗时、节点的健康状态以及比较底层的机器资源(CPU、内存、硬盘)使用状况等,通过可视化监控可以实时了解整个区块链系统的状态。
· 告警
对系统中比较严重的情况如欺诈节点、账本篡改、机器故障等情况通过邮件等方式通知到相关人员,以便及时处理。
区块链底层技术
· 共识算法
共识机制按照共识的过程分两类,第一类是概率一致的共识、工程学上最终确认;第二类是绝对一致之后再共识,共识即确认。华为云区块链服务定位为面向企业提供区块链服务因此采用第二类的共识机制,BCS 提供多种安全、高效共识算法,用户可以根据不同的使用场景以及安全和性能等不同需求选择合适的共识算法:
− SOLO 模式:只需要一个共识节点,简单、快速,建议在开发测试环节使用。
− 基于 Kafka/Zookeeper 高速共识算法:总节点数没有特定要求,能容忍半数以下节点发生故障。
− FBFT 快速拜占庭容错算法:使用 3f+1 个节点,能容忍最多 1/3 拜占庭错误节点。
详细对比见下图(f:fault):

· 共享账本
包括区块账本、状态账本和历史账本三种账本:
− 区块账本:记录智能合约的交易记录,保存在文件中。
− 状态账本:保存智能合约数据的最新状态,保存在 KV(Key-Value)数据库中。
− 历史账本:保存所有智能合约执行交易的历史记录索引,保存在 KV 数据库中。
· 持久存储
华为区块链服务将共享账本存在华为云弹性文件服务(Scalable File Service),SFS为用户的弹性云服务器(ECS)提供一个完全托管的共享文件存储环境,符合标准文件协议(NFS),能够弹性伸缩至 PB 规模,具备可扩展的性能,为海量数据、高带宽型应用提供有力支持。
· P2P 网络
网络中的节点之间通过 Gossip 协议来进行状态同步和数据分发。Gossip 协议是 P2P领域的常见协议,用于进行网络内多个节点之间的数据分发或信息交换。其设计简单,容易实现,同时容错性较高。
· 智能合约引擎
运行在隔离安全 Docker 容器中,华为区块链服务实时监控智能合约在运行时是否存在高危函数调用和容器逃逸行为,预防恶意智能合约对区块链系统的威胁。
· 区块链安全隐私
华为云区块链服务高度重视区块链安全和隐私,除了华为云安全和 Hyperledger 自有安全措施外,BCS 还支持如下安全和隐私措施:
− 支持国密算法和企业用户签名策略多样性:支持 SM2/SM3/SM4,使用基于硬件的可信计算环境保护秘钥安全性,效果较同样支持国密算法的同类产品有较大提升;
− 加法同态加密:保护交易数据的隐私。
− 零知识证明:保护交易参与方的隐私。
− 为每个租户提供完整的 CA 证书管理体系,确保用户通过 PKI 证书体系保障交易身份认证、数据传输安全和交易内容隐私保护等需求。
· 接口适配
目前支持业务应用通过 Fabric 原生 SDK 调用智能合约,后续为了方便用户快速接入区块链系统,将提供 SQL API 和 Restful API 的方式接入,用户可以在 SDK、SQL API和 Restful API 之间选择适合的方式调用智能合约接入区块链系统。
4. 区块链服务 BCS 系统安全保障
联盟链相对于公有链一个非常重要的特点就是节点准入控制与国家安全标准支持,确保认证准入、制定监管规则符合监管要求,在可信安全的基础上提高交易速度才是有价值的。华为云区块链服务在云安全的基础上为区块链服务提供高安全环境。主要通过以下几个方面来提供安全保障:
· 安全可信的云平台:安全合规与标准遵从
20+全球权威认证,并持续增加满足全球不同区域与行业合规需求,主要包括中国公安部信息安全等级保护三级,可信云,金牌运维,CSA STAR 金牌认证,CSA CSTAR和 PCI-DSS 等。确保云平台安全合规和标准遵从。
· 身份认证和访问控制
对公有云租户中的区块链服务用户,租户的访问控制能力是通过统一身份认证服务(IAM –Identity and Access Management)提供的。IAM 是面向企业租户的安全管理服务。通过 IAM,租户可以集中管理用户、安全凭证(例如访问密钥),以及控制用户管理权限和用户可访问的云资源权限。使用 IAM,租户管理员可以管理用户账号(比如员工、系统或应用程序),并且可以控制这些用户账号对租户名下资源具有的操作权限。
当租户企业存在多用户协同操作资源时,使用 IAM 可以避免与其他用户共享账号密钥,按需为用户分配最小权限,也可以通过设置登录验证策略、密码策略、访问控制列表来确保用户账户的安全,从而降低租户的企业信息安全风险。
· 区块链服务租户数据隔离
华为云对云端数据的隔离是通过虚拟私有云(VPC – Virtual Private Cloud)实施,它将不同租户间的网络深度隔离,保证了不同租户间的数据不会被越权获取。通过VPC,租户可以完全掌控自己的虚拟网络,实现不同租户间在二、三层网络的完全隔离:一方面,结合 VPN 或云专线,将 VPC 与租户内网的传统数据中心互联,实现租户应用和数据从租户内网向云上的平滑迁移;另一方面,利用 VPC 的安全组功能,按需配置安全与访问规则,满足租户更细粒度的网络隔离。在华为云区块链服务中区块链联盟成员独立为单独的一个租户,每个租户单独运行在一个 VPC 中,利用华为云 VPC 数据隔离机制来保障每个联盟成员的数据隔离和权限隔离,从而满足区块链系统的多中心化,多方参与,多方共识和不可篡改等独立、安全原则。
· 区块链服务账本存储安全
 华为云区块链服务将租户的账本存储的云弹性文件存储系统中在确保弹性扩展的基础上通过一系列的安全措施保障账本的安全。
− 密钥保护与管理
云弹性文件存储系统对接密钥管理服务 KMS(Key Management Service),KMS是一种安全、可靠、简单易用的密钥托管服务,帮助用户集中管理密钥,保护密钥安全,它通过使用硬件安全模块 HSM(Hardware Security Module),为租户创建和管理密钥,防止密钥明文暴漏在 HSM 之外,从而防止密钥泄露,保护密钥安全。KMS 对密钥的所有操作都会进行访问控制及日志跟踪,提供所有密钥的使用记录,满足审计和合规性要求。
− 数据机密性保证
用户主密钥 CMK(Customer Master Key)由 KMS 生成、管理和销毁。华为云提供整卷加密功能。
− 可靠性保证
三副本备份,数据持久性高达 99.99995%。通过 VBS(Volume BackupService) 实现云硬盘的备份与恢复,且支持通过弹性文件系统备份创建新的弹性文件系统。
− 数据删除与销毁
华为云致力于保护租户数据在删除过程中及删除后不至泄露,包括内存删除,数据安全(软)删除,磁盘数据删除,加密数据防泄漏和物理磁盘报废等。
· 华为云全栈防护体系
以上几种安全措施是华为云安全为区块链服务提供的最重要安全措施,华为云还为区块链平台提供全栈防护体系包括不限于:网络安全,DDOS 攻击防护,应用安全(WAF 等,安全扫描),虚拟机安全,容器安全,数据安全和运营安全等等。通过华为云全栈防护体系可以确保用户的区块链系统免受各种安全威胁。
5. 区块链服务 BCS 的技术特色和优势
在安全、可靠和高性能的华为云平台的基础上,根据“简单易用、成熟可靠、云链结合”等设计原则设计出来华为云区块链服务独特的架构,能为企业和开发者提供企业级区块链服务,具备以下几个方面的技术特色和优势:
高性价比
· 一站式开发、测试
通过华为软件开发服务可以快速开发、测试和部署区块链业务应用和智能合约代码,为用户简化 CI/CD 流程,降低用户开发和集成成本。DevCloud 是集华为研发实践、前沿研发理念、先进研发工具为一体的研发云平台;面向开发者提供研发工具服务,让软件开发简单高效。
· 一键上链
让企业和开发者最快 5 分钟完成企业级商用区块链服务的部署和运行,相对自建区块链能节省 80%的开发和部署成本。
· 按需付费
用户可以根据需求对使用的资源进行动态调整,根据需要付费,能减少 60%的初始成本和运行使用成本。
· 全程运维和监控管理
BCS 和华为云平台,为区块链客户提供全系列的系统状态、性能和交易情况的监控,运维,报警能力,能为用户降低运维成本。
高性能
· 高效接入
华为云具备电信的高速网络通信能力,和高并发、快速接入的能力,能最大可能的满足用户对区块链高效接入的需求。
· 高性能共识
BCS 为用户提供多种高效共识算法(SOLO,基于 Kafka 的 CFT 故障错误容忍,FBFT),FBFT 是对拜占庭容错共识算法进行深度优化,在安全和效率达到最佳平衡点。用户可以在 2000+TPS 和 10000+TPS 共识算法上根据业务需求和场景进行选择。
· 秒级共识
用户可以根据业务需求将交易速度设置到到秒级甚至更低,满足业务性能需求
· 高效的存储速度
BCS 将区块链账本存储到华为云高效弹性存储文件中,能最大程度满足用户海量快速存储需求,根据市场需求逐步推出区块数据存储到关系型数据库的能力,从不同角度满足用户对存储速度的要求。
高安全
区块链业务存在以下安全需求:
· 联盟链的特点:节点、账本的可控制,满足监管和准入需求。
· 通过分布式账本实现不可篡改的加密交易数据。
· 交易可追溯不可抵赖。
· 隐私保护:交易匿名,交易不可关联。
· 可监管和审计。
华为 BCS 通过三种途径保护区块链安全:
· 使用华为云安全保护区块链系统可靠运行。
· 基于 Hyperledger 的安全体系通过证书管理,链式数据结构等手段实现不可篡改、隐私保护的能力。
· BCS 在此基础上对高安全要求用户提供更进一步的安全隐私保护,如通过硬件保护密钥,同态加密和零知识证明等。
高可用
· 高可用架构
BCS 运行在高可用华为云上以及基于 Kubernetes 和 Docker 构建,具备快速拉起,节点和成员弹性伸缩能力以及节点故障自动恢复能力,从架构根本上保障区块链系统的高可用能力
· 高可用的接入和存储方式
提供原生 SDK、SQL-API 和 Restful API 三种智能合约调用方式,用户可以根据不同业务需求和使用习惯选择可用的接入方式。区块链账本使用云弹性存储系统进行存储,具备安全、弹性扩充、海量存储和自动备份的能力,实现存储的高可用。同时为区块提供文件存储和关系型数据库存储两种可选方式,用户也可以通过关系型数据库的高可用性来保障区块的稳定和可用。
· 提供全球部署和多种部署方式
华为云区块链服务将逐步实现在华为云不同管理域和全球合作云上部署的能力,逐步具备区块链全球部署能力,最大程度实现区块链的多中心化的能力,保障区块链系统的安全和高可用。华为云区块链服务实现联盟链和私有链的部署方式,能满足不同企业和用户对区块链系统的部署要求。
华为对区块链的整体构想

华为区块链的整体构想是:聚焦典型应用领域,以区块链平台为核心,联合网络和可信硬件执行环境(终端+芯片),形成三位一体的端到端区块链框架,实现软件+硬件结合,提供更快、更安全的区块链端到端解决方案。
可信硬件执行环境:加强硬件能力,软硬结合,大幅提升区块链的安全性和性能
安全和性能是制约区块链网络发展的两个关键技术因素,所有的区块链都是在这两者之间寻求平衡。目前的技术主要是在共识算法和共识机制等软件层面进行提升,而未来通过可信硬件环境提供芯片层级的区块链安全和性能加速,是业界考虑的一个重要方向。
我们愿与各方产业伙伴一起,构建安全高效的区块链网络。
网络:网络要纳入到区块链中,成为区块链中重要一环
面对区块链未来发展,网络面临两个问题:
· 随着 hyperledger 等技术的改进,区块链的应用领域已经发生改变,支持的节点数也在不断增加。在当前 P2P 架构网络下小量节点的互联没有问题,但面对未来区块链的节点数的激增,对于上百节点的区块链,P2P 大面积的发送广播报文,将会对网络带宽产生极大的浪费。
· 区块链早期的设计是去中心化,以降低集中核心故障或存在数据不可信的影响。而随着联盟链的普遍使用,当初的去中心正在向多中心的方向进行发展,区块链仅解决分布式部署下,数据中心的账本一致性问题,而网络在承载中的可靠性尚未考虑。
华为认为网络设备要纳入区块链的链条,增强网内可靠性。伴随着边缘计算的普及,当前的网络设备已经部分具备一定的计算能力,依托网络边缘的计算能力,将网络设备纳入区块链,即保证了网络设备的安全性,同时将网络信息作为链上信息的一环,一方面缓解云平台的在大量节点下对计算和存储的压力,另一方面也对未来大量的 IoT 设备的合法接入进行认证管理。针对区块链设计网络演进是未来考虑的一个方向。
华为对区块链未来发展判断
区块链是开放的数字价值的流转,其构建一种新型的价值网络,用技术为信任背书,对其未来的发展判断如下:
· 从应用维度上,2018 年是区块链的应用元年,在标准没有完善前,在不同行业的试用是重点,政府数据存证、IoT 领域物流和车联网的应用、运营商云网协同和供应链金融将进入首发试用阵容。本质上这些领域急需借助区块链构建公开透明的营商环境。
· 从技术维度上,安全是构建区块链需要考虑的重要问题,国密算法将会成为区块链在国内主要市场应用标准,区块链的框架将包含云,管,端三层,以软件+硬件相配合的方式,构建高度可靠的安全能力。
· 从区块链产业发展上看,中美欧会成为区块链应用的重要区域,区块链不会昙花一现,我们可以依靠区块链在技术竞争中占据先机,而这些需要明朗的产业政策给予保障,目前看到国内从中央到地方政府机构都在努力构建区块链的孵化环境,推动区块链产业健康发展。这就为我们发展区块链技术和产业创造了良好环境。
基于以上判断,为有效推动区块链产业的快速发展,实现建立可信社会的目标,有如下建议:
· 依托联盟,形成产业合作,加速我国区块链标准快速落地
区块链技术尚未成熟,从国内外的标准推动来看,区块链标准在 2017 年有推进但速度较慢,这极大影响了区块链的产业节奏;同时安全一直是区块链技术的核心,但涉及到算法,系统等的标准问题仍然存在。因此,建议以国家机构牵头,借助产业的力量,通过联盟加速区块链标准的制定,特别是跨链、加密算法等重点标准在国内的落地,占领区块链产业在国际上的话语权。
· 构建区块链产业孵化环境,推动区块链产业发展
鼓励从企业到政府的区块链应用试点,在国内建立区块链的应用孵化环境,在应用中发现问题,逐步推进。现在有些区块链项目说的多,做的少,以炒概念而获得投资为目标,这对整个区块链产业的健康发展是不利的。因此,建议国家或重点企业积极进行试点,推动区块链应用孵化,优化产业环境,加速产业成熟,在新一轮的区块链市场竞争中获得先机。
· 清晰化区块链技术和应用的产业政策
目前我国的区块链产业政策由各部门和部分省市分别进行小范围的推广,结合我国在互联网+的发展思路,政府需要明确清晰的区块链产业政策,展开对区块链技术的支持、标准的推进、区块链方案的研发、示范性工程的建立等等一系列行动。特别是对区块链应用的监管和放权并举,推动区块链技术和应用在市场中良性发展。
· 积极参与开源社区,倡导企业间区块链技术的互通交流
鼓励在参加国际区块链开源社区,快速完善区块链能力的同时,加强国内企业间的合作,对区块链技术进行攻关、方案研讨、技术贡献等,聚拢产业力量,提高国内企业在国际区块链技术竞争中的影响力,实现产业共赢。