国网四川信通公司 赵波 冯菁 吴克
现代区块链技术起源于密码学,辉煌于数字货币。区块链技术核心在于去中心化、互联网技术及哈希算法等加密算法,随着互联网技术的迅猛发展与分布式技术的成熟得到前所未有的发展。区块链技术包含三个基本概念:交易、区块、链。交易在区块链中代表一次性对账本的操作,也就是单点数据发生状态变化;区块在区块链中代表一个时间段内网络所有交易的状态和结果,对当前所有数据状态的一次共识;链在区块链中代表按照时间顺序对状态变化量的一次串联,相当于数据变化记录日志。整个区块链是由分布式的节点构成形成分布式数据,数据在存储、删除、更改的过程就是区块形成的过程,按照一致性规则在分布式各点位通过计算达成共识,并依照时间顺序形成链状数据结构。一旦新的区块加入链状数据串,各节点达成共识后无法被篡改。本文主要阐述了利用区块链技术电力通信网中对网元网管控制数据也存在类似交易、区块、链操作,实现了提升数据的一致性、不可篡改性、可追溯性等方面的性能,为支撑智能电网建设做出前沿性的试探和尝试。
电力通信网网管区块链技术的应用主要在于利用区块链技术中的数据一致性和数据不可篡改性,在电力通信网络控制数据的安全性对于电网业务通信通道安全运行尤为重要,而保证数据安全可靠性可以通过建立区数据分布式存储数据结构得以实现。利用区块链技术将网络控制数据从三个方面进行建立,分别为:“区块+链”“区块+交易”“交易+链”。区块链是一个基于多节点全分布式数据结构的存储结构,在一段时间内形成数据共识与一致性计算,利用哈希算子等密码学手段保证Merkle Tree组成的数据不可逆和不可伪造的特性。
区块相当于一个分布式的数据记录账本,对于电力通信网每个网元可以看作一个区块节点,区块数据包含原数据的数据头以及数据增量变化的数据构成区块体组成。后继区数据头由前置区块的哈希值、随机数、时间戳、难度目标及Merkle Tree等关键字组成。后继区的数据头都指向前一个区块的链接,从时间区段开始到时间区段结束,每一个区块代表着一次数据增量变化(交易),都会永久的保存在区块之中。
在电力通信网中区块链工作的过程,客户端发起一项业务指令,广播到通信网控制网络等待节点确认。各网元节点收到等待确认的增量变更数据记录打包在一起组成一个候选区块。每个区块的“前区哈希值”字段对应其一区块头的所有数据进行SHA256运算得到的结果,该字段使得各网元节点形成的区块链接站起来,保证前后区块链的关键字段。各网元区块由前一块区块的随机数、时间戳、难度目标字段与新区块形成新区块数据,区块数据的形成是通过哈希等密码学算子由各网元节点贡献大量的算力资源计算而成。电力通信网管区块数据通过区块链技术,将所有增量数据变化的信息不仅完整记录于各个网元节点,还保证了不会因单节点数据丢失而造成的数据丢失,还保证了数据不可篡改性。
电力通信网管数据区块链技术应用的关键是建立于分布式存储中保持全局一致性的基础上的,增量数据变化的记录、域名的管理、数据的上载与更改,这些状态的改变对全局而言都需要保持一致性,而拜占庭一致性问题解决了在非安全的分布式环境下的数据一致性问题。拜占庭算法最初是由一些指数级的算法才能解决,接着在这类算法的基础上演绎简化成多项式级别的协议算法,极大降低了一致性比对的消耗的算力资源,利用多项式算法使实现分布式算法成为可能。
电力通信网管区块数据一致性比对通过两种方法实现,分别是单节点一致性验证和混合节点一致性验证。单节点一致性验证算法是通过通信网管网络数据通过两阶段提交协议保持区块数据一致性而设计的一种算法。两个阶段在电力通新网管数据一致性比对中分别是将一个数据增量变化的分发过程分为审核和下发2个阶段,区块链服务器向所有网元节点广播审核请求,当区块链服务器收到了所有参与区块变化的网元节点同意消息;服务器广播提交请求,当服务器收到所有网元节点反馈完成区块变化同意消息后,一致性验证结束。混合节点一致性验证是通过改进版拜占庭容错协议(Practical Byzantium Fault Tolerance,PBFT),规定主从模式和参与网元数,规定人数为2m+1,其中m为出错网元的数量,总网元个数为3m+1。当网关网元收到网元控制的请求后,向所在区域受控网元节点发送预准备信号,并收集区域内其他网元节点的信号,当区域内网元节点收到预准备信号后,如果达成共识,那么向网络中其他网元节点发送预准备信号,剩余节点向服务器反馈同意信号,如果服务器收到超过2m个网元节点发送的同意信号,则向全网下发执行信息。同样如果服务器收到超过2m个网元节点发送的执行信号,那么这个网元开始执行数据变更。综上所述,PBFT协议对于容错网元节点为1/3的错误网元,且对于数据一致性确认需要两轮的交互。
电力通信网区块链技术的实现是建立于网元分布式存储、共识机制、哈希加密算法及点对点传输的模式基础上的,核心在于网元的分布式存储、传输与加密及一致性计算。在整个网络中对于每个网元相当于彼此对等的计算机,采用点对点的传输网络结构具有极高的隐秘性及去中心化程度。对于每个网元具备传播、路由、验证、新建节点信息变更等功能,用以保障区块变化后,由网元节点传播至整个网络的功能。电力通信网管区块链系统对于网元信息数据传播协议结构,如图所示。
电力通信网管区块链系统的网元数据传播协议包括以下步骤:
1.网元数据变更利用电力通信网络以点对点的形式广播至每个网元节点。
2.每个网元收到广播数据首先进行合法性验证,对发出数据的非对称加密机制下的网元数据变更信息的签名与数据本身进行验证。如果合法则保存该数据并以Merkle Tree的形式加入区块,同时将时间戳与通过哈希加密算法计算过后的区块头写入区块并进行封装,若该数据不合法则验证无效直接丢弃。
3.每个网元节点进行哈希计算后,提供自身为解决本次区块哈希算子而使用的计算资源的工作量证明。
区块链网元数据传播协议结构图
4.在规定时间内每个网元节点完成区块计算,将区块数据重新封装打包,通过下一个网元节点广播至整个网络。同样其他网元节点进行相应的合法性验证及工作量证明验证,并计算每个区块头的哈希值。
5.整个网络的所有网元在完成区块链数据验证后,利用Merkle Tree进行数据一致性比对验证数据的正确性。对于电力通信网管区块链数据变更,通常利用区域内8个节点进行区块确认,并能保证50%网元收到攻击后仍能进行区块数据恢复,同时增加节点确认数目,能增加网络抵抗力,但是同时计算资源的耗费也会增加。
6.按照时间戳先后顺序,网元在下一次区块计算时是以上一次的哈希值为父节点,而下一次区块计算与上一次计算紧密相关。
电力通信网管区块链技术是基于电力通信网络去中心化结构,每个网元数据均存在独立且对等的存储结构,且网络均可实现点对点的传输功能这三点之上,具备实现区块链技术的基本条件。对电力通信网管数据管理需要一种更为安全可信且不可篡改的管理技术对未来智能电网的安全运行起到更为有力的支撑。本文基于以上考虑,对区块链技术在电力通信网管数据方面的数据一致性、加密算法做了初步的探索,下一步打算进对电力通信网管数据去中心化管理作更为深入的研究,进一步开拓区块链技术在电力通信网管数据管理方面的应用。