电力区块链基础设施架构及其设计与实现

2021-04-08 08:49李大伟宋春晓李斌顾智敏王梓莹
电力工程技术 2021年2期
关键词:账本架构区块

李大伟,宋春晓,李斌,顾智敏,王梓莹

(1.南京工程学院计算机工程学院,江苏 南京 211167;2.南京工程学院能源研究院,江苏 南京 211167;3.江苏省电力试验研究院有限公司,江苏 南京 211103)

0 引言

2020年3月,国家电网公司提出了建设“具有中国特色国际领先的能源互联网企业”的最新战略目标。能源是主体,互联网是手段,建设能源互联网需要充分借鉴互联网在数据共享和业务互联互通中的成功经验,实现传统电网业务的数字化转型。2020年4月20日,国家发改委首次明确新型基础设施的3个方面,其中信息基础设施包括以人工智能、云计算、区块链等为代表的新技术基础设施。区块链技术契合了能源互联网的发展需要,区块链与电网业务结合,有利于促进电网生产管理和运营方式向智能化、网络化方向转型,对于电网产业结构调整具有积极的作用[1—3]。

互联网飞速发展的推动力之一就是以云计算、大数据中心为代表的互联网基础设施的演进和发展。2020年6月,国家电网公司发布“数字新基建”十大重点建设任务,聚焦大数据中心、工业互联网、5G、人工智能等领域,总体投资约247亿元,预计可拉动社会投资约1 000亿元,内容包括以能源区块链应用为代表的10种应用。

区块链是一种按照时间顺序将数据区块以链表的方式组织的分布式总账,是集成了对等网络(peer-to-peer,P2P)技术、密码学、共识机制以及分布式存储技术的可信分布式系统[4],具有去中心化、不可篡改和可审计等特点,目前已经在各领域广泛应用[5]。能源互联网是连接能源生产和能源消费的基础平台,基于区块链的能源互联网能够实现各方的身份认证和互信,优化能源流程[6]。区块链技术可支撑能源互联网中源、网、荷、储、人等不同主体在计量认证、市场交易、协同组织、能源金融等不同环节中协调互动,实现互联网式的双向交互、平等共享及服务增值,目前电力领域已有越来越多的落地项目。

但区块链技术具有复杂性且发展迅速[7],既包括公有链、联盟链、许可链等不同形态[8],又有以太坊、超级账本、商用区块链操作系统(enterprise operation system,EOS)等多种实现平台。已有的项目多按照自身需求进行定制化开发,自成体系,缺少统一的建设标准和基础设施支持[9],难以支撑能源互联网背景下多主体多环节数据有效协同共享的需求[10—11]。

文中首先介绍了区块链技术的原理及特点,分析区块链如何体现能源互联网理念。在此基础上从建设需求、高可用计算资源、分布式存储、多平面网络、数字资产和业务中台等方面探讨了区块链技术设施的建设原则和规范。

1 电力区块链基础设施架构

相较于其他行业,电网覆盖面广、终端设备种类多、数量大、业务场景丰富、实时性和安全性要求高[12]。电力区块链基础设施建设需要结合电网需求,支撑数据安全、智能合约、跨链交互等关键技术,快速构建能源互联网应用[13—14]。

1.1 区块链基础架构

区块链系统架构可以分为6层,从底层往上依次是数据层、网络层、共识层、激励层、合约层和应用层,每层基础设施能力需求和功能如图1所示。

图1 区块链系统技术架构Fig.1 Architecture of blockchain system

其中,数据层的功能由底层计算和存储基础设施支撑,其特征是高速读写访问以及安全性;网络层主要实现P2P网络基础设施,确保去中心化互联互通;共识层封装各类共识算法,为区块链应用提供基座;激励层和合约层为上层业务逻辑提供中台,通过脚本、算法和智能合约为区块链系统提供可编程特性和自动化智能化支持;应用层通过各种接口和软件开发套件(software development kit,SDK)为快速构建电力业务应用提供支撑。

1.2 电力区块链系统架构

电力业务可靠性[15]和实时性要求电力区块链基础设施应具有多中心高速互联、高可用并发处理和高性能分布式存储,以实现对上层应用场景的支撑[16]。电力区块链基础设施架构如图2所示。

图2 电力区块链基础设施架构Fig.2 Power blockchain infrastructure

硬件基础设施层包含分布式存储资源、高可用计算资源、多平面组网设备及配套的安全防护平台等系统运行必需的基础设施。通过可配置的接口和数据安全交换中间件实现区块链系统和已有业务系统的无缝对接和链上链下互动协同[17—18]。

平台层是实现区块链功能的核心组成部分。包含服务化区块链中台(blockchain as a service,BaaS)平台、管控平台和综合管理系统。利用区块链基础设施把能源互联网业务中的各类数据进行hash索引上链,实现数据融合,并保证数据、算法、结果三者的安全性,相比传统的数据汇聚方式,可信区块链实现了完全的分布式方式的数据生态。数据源不需要把数据上链或者上云,可以放在自己的机房,在需求方、算法方、投放方、监管方等整个生态打通的条件下,能通过安全多方计算实现对数据源、算法和结果的有效安全控制。

业务支撑层根据不同的电力业务应用场景数据融合需求,基于平台层提供的定制化服务,通过区块链应用研发平台的软件可定义能力,迅速实现能源互联网业务与区块链平台的生成和对接。

1.3 高可用计算资源

电力区块链系统对于事务处理和响应能力有更高的要求,须采用高可用服务器集群,通过高并发处理能力和内存计算,实现系统资源的共享和弹性调配。

在具体设计时,应用轻量级虚拟化和微服务架构,获得系统级容错、应用级高可用、虚拟机在线迁移、资源动态负载均衡等能力。将这些功能集成到一个计算单元中,形成区块链一体机。区块链一体机设计及其部署如图3所示。

图3 区块链一体机设计与部署Fig.3 Design and deployment of blockchain all in one machine

每个一体机由基本系统资源和定制化区块链操作系统组成,通过配置模块,区块链一体机可配置成为排序节点、记账节点、备份节点等不同角色,共同完成区块链应用。每个区块链一体机还包括系统管理、配置模块、区块链模块、接口模块、组网模块等功能模块,实现邻居发现、节点配置、接口管理、安全策略、以及数据管理等功能。区块链一体机通过感知算法实现邻居的动态发现、互联和账本同步,可根据业务状态进行弹性扩展。

区块链一体机集群形成“松耦合”的电力区块链应用的计算资源池,为各类上层服务提供灵活的基础架构,通过智能合约满足电力业务场景的定制化需求。计算资源池通过调度系统实现对资源的调度分配。同时,根据上层区块链应用系统的并发需求实现负载自动感知均衡和资源按需协同。在组网方面,对新加入和退出的节点进行邻居发现,对不同用户进行隔离。运维保障方面,通过自动检测故障和系统热点,保证业务稳定可靠运行。在系统架构中设计账本冷备份机制,通过服务镜像创建,故障切换、自动重保护和计划内迁移,减少系统不能提供服务的时间。

区块链的计算性能主要体现在区块链网络的交易吞吐量,一般以每秒并发事务数量(transaction per second,TPS)描述。假设N(t)为单位时间t内电力业务请求的数量,B(t)为单位时间t内区块链上记录的业务数量,随着电力业务的增加,N(t)>B(t)的临界点记录的交易数量代表区块链系统单位时间能够完成交易的最高个数。提高系统性能的方法除了提高单节点运算速度外,还可以通过分层网络架构和区块分片发送的原则降低广播和处理的数据量。

1.4 多平面组网

区块链系统运行需要高性能的P2P网络支持,多个节点之间通过高速冗余的网络进行互联互通。电力区块链系统搭建一般采用主中心和从节点的方式部署,即将系统平台、海量存储、管控系统、安全监控等集中部署[19],成为电力区块链数据中心,从节点部署于各地的业务现场,主中心和从节点之间采用电力专网互联。

区块链数据中心网络部署为具有软件定义网络(software defined network,SDN)能力的多平面架构,实现专网专用,相互隔离,容灾备份,分段维护的目的。具体分为:业务平面、存储平面和管理平面,其架构如图4所示。

图4 网络架构Fig.4 Network architecture

区块链节点的网络为对等网络,系统运行时,每个节点都对外提供服务,因此区块链数据中心的网络采取高性能、扁平化、多平面、冗余备份、安全隔离的设计方法。基于高性能组网设备和智能化网络运维系统的下一代软件可定义组网架构,实现区块链应用场景中数据的安全快速交换。其中,业务平面是P2P网络的核心,连接所有区块链节点,支撑区块链系统运行。存储平面连接分布式存储设备,实现区块和账本数据的快速存储和交换,特别是新节点加入时的账本更新,需要通过数据平面进行底层复制,以缩短同步时间。控制平面基于SDN技术,实现对网络系统的管理、监控、负载均衡和安全功能。

1.5 BaaS

BaaS是区块链软件基础设施,作为区块链系统运行的中枢,BaaS系统赋予用户区块链管理和平台管理的功能。其中,区块链管理功能偏向于研发相关的区块链的搭建和配置,而平台管理功能则偏向于运维相关的区块链运行状态监控。根据区块链云服务管理平台常见模块的功能,可以将模块分为3个层次:资源管理层、区块链管理层和平台管理层。如图5所示。

图5 BaaS中台架构Fig.5 Baas middle platform architecture

资源管理层中的模块负责和基础设施服务(infrastructure as a service,IaaS)层的云平台交互,管理虚拟机和网络等相关资源。区块链管理层负责区块链的创建、管理和运维监控,提供联盟内各成员组织组建区块链功能,包含节点管理、合约管理和账本管理等。

中台管理层的模块负责区块链服务平台自身的账户、计费、日志和统计报表等管理功能,面向的是平台管理员和用户。平台管理层提供的相关功能包括联盟管理、成员管理、监控管理等。

BaaS中台可实现区块链系统的快速安装、配置、以及初始化等操作,以便在部署大规模区块链网络时,可以有效缩短安装部署时间。区块链服务平台需要支持用户可以定制符合业务场景的区块链和计算资源。例如,配置适当的区块链运行参数(出块时间,区块大小,交易数量等),选择适当的共识算法,设置各类节点的数量以及各个节点的CPU、内存、存储、网络带宽等计算资源。

2 关键技术和功能设计

2.1 账本存储优化

分布式记账是区块链的重要特征之一,该方式通过数据冗余实现了不同节点对记账数据一致性的验证。运行过程中,区块链上每个节点都实时同步完整的账本数据,该方式的弊端一是单节点存储数据量大,存储开销大,检索和同步困难,二是单节点存储容量会成为系统存储的短板。

动态账本存储优化机制结合账本分片和链下扩容技术。其中,账本分片的基本思想是:根据电网业务,将账本分为多个分片进行存储,每个节点仅存储边缘计算所属区域的账本数据,如果需要跨域数据,须通过区块链网关节点进行路由实现。链下扩容则依据电力业务对上链数据进行封装和优化,将链上交易迁移到链下系统和数据库中进行存储,仅把交易状态、计算结果等关键数据上传到目标区块链,以解决目标区块链存储、计算等资源受限的问题。

假设电力区块链节点数为N,分为节点数量相同的m个分片,则每个分片的节点数C=N/m。若某电力区块链分片的唯一标识分为d,账本分布式存储优化方法如下:

选取一组hash函数:Hi(x)(i=1,…,n)。设账本片段为t,计算哈希值Hi(d)和Hi(t)。

对于任意i,如果判别因子δ=mind{|Hi(t)-Hi(d)|},则将账本片段t存储到分片d中。

电力业务数据上链存储需要运行共识算法,为提系统存储效率和处理速度,需根据业务需求进行数据封装,将原本置于链上处理的各类计算、事务,放到链下处理,而链上仅作数据验证,以此间接提升区块链处理数据的速度。具体算法如图6所示。

图6 链下扩容流程Fig.6 Offline expansion process

2.2 动态成员管理

电力区块链系统支撑能源互联网中“源、网、荷、储”多环节高互动数据处理,系统应具备弹性扩展能力。参与共识的节点应能实现邻居发现维护,并支持节点根据负载情况灵活加入和退出。

区块链节点根据区块链性能等标准选择最佳的邻居视图。若将分片内g个已知的共识节点作为参照系,通过测量节点在参照系中的相似度指标,确定节点邻居属性。设电力区块链节点资源评价指标为{Rj|j=1,…,n},例如CPU、内存等,节点x的相似度为式(1),其中rij为相应资源的利用率。

(1)

所有相似度在设定阈值范围内的节点均可以加入本分片。通过周期性测试每个节点的相似度可以及时删除无用节点,提高电力区块链系统的整体性能。

2.3 智能合约沙箱

智能合约是电力区块链中运行业务逻辑的主要机制,其安全性和合规性需要得到充分保证。默认情况下,智能合约可以访问所有的系统资源,而使用沙箱机制,将处理逻辑在虚拟环境中进行运行和验证,可以实现智能合约功能的离线模拟和测试,不仅可以减小错误合约上链的概率,还能降低调试合约的成本。

智能合约沙箱功能包括需求分析、合约设计、自然语言描述、形式化描述、模型验证、代码生成、试运行和一致性测试等。

将智能合约分解成有限状态空间中的指令集合。应用状态空间搜索的方法检测有限状态系统是否满足设计规范。智能合约沙箱通过简单的Promela解释器(simple promela interpreter,SPIN)建模工具进行建模和验证,具体步骤如下。

步骤一:将智能合约中的操作或处理看作一个有限状态自动机,建立Promela语义模型,定义变量、消息、通道、进程、迁移等要素;

步骤二:基于从一个给定的状态开始的某条路径上的事件,建立线性时序逻辑(linear temporal logic,LTL);

步骤三:由LTL描述的系统性质进行自动机异步交错积获取智能合约系统的行为模型并迭代;

步骤四:计算LTL对应自动机与全局有限状态自动机的同步积,形成一个新的自动机,如果自动机接受为空,表示验证通过。判断方法是先检验有没有一个从初始状态开始可达的环路包括至少一个接受状态。

2.4 跨链技术

国家电网公司“数字新基建”十大重点建设任务之一是要求建设能源区块链公共服务平台,推动线上产业链金融等典型应用,建成“一主两侧多侧”的国网链,探索12类试点应用。随着区块链应用的增多,电力应用中多条同构或异构区块链的跨链数据流通需求相应增加。因此,围绕电力区块链应用需求及模式,建立统一资源描述和格式规范、设计跨链架构和编程接口,对支持开发人员快速构建跨链应用具有重要的意义。

电力区块链跨链技术通过定义数据资产和区块链路由,形成支持条件隐私的电力主从链架构,实现可信接入的区块链跨链交互与通信优化,提供基于电力区块链的对内、对外互信服务。

目前有3类跨链技术,分别是公证人机制(notary schemes)、侧链/中继(sidechains/relays)、哈希锁定(Hash-locking)。其中侧链/中继技术通过智能合约和加密哈希树等技术进行跨链交易验证和状态确认,验证逻辑可运行于轻量级智能终端中,适用于电力区块链应用场景。

侧链技术基于简化的交易验证(simplified payment verification,SPV)验证机制的双向锚定实现,具体如下。

步骤一:主链锁定,向从链发起SPV验证,等待对方确认;

步骤二:从链运行智能合约,完成数据交换处理;

步骤三:从链锁定,发送SPV验证给主链,等待对方确认;

步骤四:主链运行智能合约,解除锁定状态,双向锚定结束。

2.5 数据协同共享

区块链的作用之一是多方数据可信共享和业务协同。同传统区块链系统一样,电力区块链中数据共享可分为链上链下数据协同和链间数据共享2种类型。

2.5.1 链上链下数据协同

链上链下数据协同是指区块链账本中的数据与链下信息系统中的数据协同。由于区块链是相对闭环的体系,因此将链下系统数据库中数据进行提取封装并上链存储,实现链下物理世界的信息到链上信息世界的数据映射尤为重要。例如,配电自动化系统中的监控数据采集、故障处理、数据分析应用,以及与能量管理系统EMS、生产管理系统PMS、电力GIS、营销管理系统CIS、95598客户服务系统、用电信息采集系统,以及调度管理系统OMS等相关应用系统与区块链的互联,需要大量的链上链下数据协同。

目前常见的数据上链多采用业务平台对接的方式,难以保证上链前数据源的可信性和上链前后数据的一致性。因此电力区块链系统获取链下信息系统中的数据应该通过预言机实现。预言机是一种可为区块链提供数据源的单向数字代理,可以查找和验证链下信息系统中的数据,并以加密的方式提供给智能合约处理,从而实现数据上链。

2.5.2 链间数据共享

链间数据共享是跨链技术解决的问题之一。电力区块链系统中链间数据共享的关键点还包括电力数据资源的描述规范和跨链事务机制。

电力区块链数据资源虽然具有多维异构特性,但其核心功能可归纳为静态属性、动态属性和记账属性3类,因此可建立统一资源范式,如图7所示。

图7 统一资源范式Fig.7 Unified resource paradigm

电力区块链系统通过事务机制保证数据资产和交易的真实性和一致性。特别是在跨链环境下,事务机制可以确保一条链上的数据资产转出和另一条链上的资产转入同步完成。

电力区块链系统事务机制可采用哈希时间锁定(Hashed time lock contract,HTLC)机制进行原子级的事务处理。处理过程包括正常事务处理和错误回滚操作,事务中任何步骤未完成将触发回滚机制,确保事务的同步和数据一致性。

3 基于案例的验证

安全督查作为国家电网公司在信息安全领域的一项基础性工作,在隐患消缺、数据防泄露、重大事件保障、网络安全人才培养等方面发挥了重要作用[12]。然而,某省级电网公司在安全督查工作执行过程中也逐渐暴露出督查台帐不清晰、工作执行效率低等不足。基于区块链技术的某省级电网公司信息资产全生命周期安全督查管理系统,具备“资产台帐可溯、运维过程可管、漏洞整改可控、督查效果可视”的能力。

区块链安全督查系统从资产上线前安全检测,资产安全运行,资产销毁下线3个时间跨度,实现信息资产的全生命周期管理,其架构如图8所示。

图8 区块链安全督查系统架构Fig.8 Architecture of blockchain security supervision system

基于上述需求,搭建区块链基础设施如图9所示。其中,计算资源由区块链一体机组成,分为中心和分布式节点2种部署方式,共有21个共识节点和40个同步节点;存储资源为光纤连接的存储设备,可用存储空间为200 TB;网络资源中,业务平面通过10 Gbps高速交换机实现各节点之间的P2P组网,控制平面通过SDN控制器连接所有设备进行一体化管控,数据平面通过高速光网络实现数据和账本的访问。

图9 基础设施部署Fig.9 Infrastructure deployment

原型系统将信息管理大区的在运行设备、系统和应用等纳入督查资产生命周期管理体系,从全生命周期的角度对资产的测试报告、部署区域、基线现状、防护策略、开放端口、操作系统版本、软件版本、更新记录、漏洞记录等信息等进行记录管理,非敏感数据使用区块链记录。

对系统性能进行测试,结果如表1所示。其中,单节点CPU为intel i7-8700@3.20 GHz,6核心12线程,单节点内存为4 GB DDR4 2666,操作系统为Ubuntu 18.04。

表1 系统性能统计表Table 1 Statistical table of system performance

其中,出块速度为单节点单通道测得,当共识节点数量增加时,由于共识需要的通信量增多,出块时间会相应增加。内存和CPU占用率为主进程占用的资源量。TPS为模拟场景中安全督察管理系统业务并发量测算得出,该TPS可支撑省级安全督察管理需要。

4 结语

电力系统是专业化程度高的信息系统,使用现有技术构建可扩展的区块链网络的设置复杂且难以管理。例如,要创建区块链网络,每个网络成员需要手动预置硬件、安装软件、创建和管理用于访问控制的证书,以及配置网络组件。文中在分析区块链实现技术的基础上,借鉴云计算基础设施设计和部署方法,研究了区块链基础设施设计和部署的方案,并通过电力安全督查管理应用系统验证了该方案的可行性。

本文得到江苏省高校自然科学基金资助项目(19KJB520036),南京工程学院人才引进项目(YKJ201721),江苏省电力试验研究院有限公司科技项目“基于区块链的网络安全督查技术研究及平台研制”资助,谨此致谢!

猜你喜欢
账本架构区块
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
区块链:一个改变未来的幽灵
区块链:主要角色和衍生应用
数说:重庆70年“账本”展示
丢失的红色账本
大树爷爷的账本
区块链+媒体业的N种可能
读懂区块链
丢失的红色账本