梁文娟
(广东电网有限责任公司电力调度控制中心,广东 广州 510600)
目前,广东电网电力通信专业部署传统的高度中心化数据库对通信资源进行管理,数据库大多通过服务器构架来实现。基于重要性和安全性考虑,无论数据库是否基于云服务器,仍然需要管理员对数据库进行控制,由管理员对用户设定相关权限,保证系统的安全、可靠,所有用户必须信任数据库管理员。当前,成熟的数据管理模式也存在以下弊端:
(1)数据溯源困难。传统数据库允许不断修改、永久删除数据,若要追溯历史数据,数据库可以不断滚动备份不同时间版本的数据,但数据备份的周期难以设定为无限小,理论上,存在两次备份周期内数据变动信息丢失的可能。
(2)数据安全问题。高度中心化数据库赋予管理员对数据维护最高的权利,用户高度信任管理员。管理员有权对数据做任何事情,通常是企业员工或外委单位人员,难以分辨管理员恶意或失误操作导致数据被删,即使用户输入了正确的数据,管理员还是可以进行删修。
(3)维护成本高。通信资源数据库一般部署一主一备服务器进行数据备份,以防数据丢失,如果主服务器接受了数据更改,而备用服务器数据备份失败,还可能存在数据不一致的情况,提高了日常维护难度和成本。
“区块链”已走进大众视野,成为社会关注的焦点。从应用角度来看,区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点,可以很好地解决上述电力通信系统资源管理的弊端[1]。
一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。(1)数据层,封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法。(2)网络层,包括分布式组网机制、数据传播机制和数据验证机制等。(3)共识层,主要封装网络节点的各类共识算法,是分布式网络正常运行的保障。(4)激励层,将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等,是区块链应用于虚拟货币的必要条件,但在电力企业通信资源管理的场景中不是必须的。(5)合约层,主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础。(6)应用层,封装了区块链的各种应用场景和案例[2]。区块链的分层结构如图1所示。
图1 区块链的分层结构
结合目前电力系统通信专业的特点与生产数据运行管理经验,采用联盟链与私有链混组类型,合理调整区块链中的去中心化程度与共识机制,是基于区块链技术的电力专业通信资源管理思路。联盟链是用于机构间的区块链,根据联盟链网络中心化程度的不同,分化出3种不同应用场景下的联盟链[3]。
(1)全网公开,无用户授权机制的区块链,称为公有链。(2)允许授权的节点加入网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链。(3)所有网络中的节点都掌握在一家机构手中,称为私有链。
参与电力系统通信资源管理的成员主要是企业内部单位部门或员工、数量有限的外企业单位,如合作单位、与电力系统密切相关的行业单位(气象、水利、通信公网、国防、金融、司法部门单位)等,所以选用联盟链与私有链,其各节点不需要彼此争夺记账权,彼此的基本利益立场一致,完全可以由系统内的最重要节点持有记账权,或者由每宗交易的发起方获得记账权,并通过共识机制去中心化。
电力系统通信资源管理宜采用联盟链和私有链混合形组建形式。联盟链通常会选择使用拜占庭将军问题的实用拜占庭容错算来进行各节点间的共识机制算法。首先,其优势在于系统可以跳出加密代币的条框,算法共识各节点由业务的参与方或监管方组成,安全性与稳定性由业务相关方保证;其次,参与节点数量有限,只限于若干机构之间,共识算法所耗时间最短,基本达到商用实时处理的要求;最后,有限的节点数量可以使交易性能提高、共识效率高,满足高频交易量的需求,与公有链的共识机制相比优势明显。
系统的私有链由电力企业内部各单位组成,各节点通过P2P网络传播机制组织等,可采取蓝牙、ZigBee,WiFi、以太网、4G/5G等通信技术进行组网。指定系统中的“电力调度机构单位”节点作为记账人,每个块的生成由指定节点共同决定,只有电力调度机构才有资格对数据账本进行维护。企业外部单位可以通过该区块链开放的权限进行限定数据录入、查询。系统的联盟链由电力企业和外单位企业的区块链组成,电力企业和外单位企业都是系统的共同记账人,每个块的生成由指定节点共同决定[4]。
系统中的每个节点都是一个分布式储存数据库,区块链中每条资源记录数据包含时间戳及唯一的加密签名,完整的记录可供任何合法用户进行验证与审核。可访问到账本的合法用户是被授权的指定节点。数据库划分为电力内网通信资源与竞争性业务通信资源两部分,电力内网通信资源需有权限进行访问和操作,而竞争性通信业务资源是公开的数据库,不设权限。对于电力调度机构与电力通信检修人员,有权对两部分数据库进行访问,而对于企业外部单位,仅可访问竞争性通信业务资源库。
当联盟链中的某个外部企业需要查看电力企业通信资源信息时,先检索系统中是否存在对应的索引(仅获取索引目录,不获取真正数据内容)。如果存在,则得到此索引对应的全部索引信息,包括信息简介、价格、提供企业的密匙、签名等。外部企业将包含主要关键字的HASH值、密匙对、请求需求等,发送给电力企业。电力企业提取公匙信息并确认系统合法角色后,将符合标准要求的数据利用公匙加密、私匙签名后,生成数据包,发送给外单位企业。外单位企业通过提取公匙,验证合法后,用私匙解密记录并核对是否为请求的HASH值,如果是,则使用数据,形成交易记录。当P2P交易完成后,需要对相关交易结果记录在区块链上取得共识时,外单位企业会以自己的私钥对交易结果进行数字签名并进行全网广播,每一个接收到广播的节点都会以发起方的公钥来验证数字签名的真伪,再以自己的私钥对该交易结果进行数字签名并全网广播,如此循环往复,直到每个节点都收到超过总节点数量一半的其他节点发来的带有数字签名的广播交易结果,即可自行更新自己的账本记录,并最终实现分布式数据账本的同步和系统整体一致性。
智能合约是一种构建在区块链系统上的可自动执行的程序,当智能合约的启动条件被触发后、即按照事先预设的条款实施,不受外界人为影响。在区块链网络上使用智能合约是安全的、可信任和去中心化、点对点式的。因此,在合约层里可以结合电力企业通信资源管理需要设计几个应用场景的智能合约激发机制和脚本代码。例如,联盟链上各企业节点有偿共享有价值的资源数据,通信公网企业向电网企业请求共享竞争性资源数据,当满足双方约定的要求后,系统自动生成数字化智能合约,促成双方有偿数据共享的交易,若通信公网企业有意向进一步租用电力通信资源,同样,当满足双方约定要求的条件触发后,系统自动生成数字化智能合约,促成双方资源租赁的交易,区块链智能合约不仅快速高效,节约企业成本,而且也处在电网企业向服务型企业转型,放开非管制性业务的大背景下,不失为一种理想可靠的技术手段。
有关电力通信运行方式风险分析的应用场景,一条光传输段的信息通过共识机制,并且按时间顺序储存在联盟链的每一个区块里,数据不可被销毁或修改,区块链不可篡改的特点恰好保存了该光传输段的创建、投运、变更、退运等信息,具有可溯源性,真正意义上实现了通信资源的全生命周期管理,传统数据库通信资源溯源困难的问题迎刃而解。进一步挖掘应用场景,假设过去某一时间点该光传输段的运行方式为A状态,被写进一区块a中经过共识算法保存至每一节点,经过一段时间后,资源管理人员将该光传输段的运行方式修改为B状态,写进一区块z中并保存至每一节点,通过预先设计好的算法和规则,系统识别到链上两个区块中同一个光传输段的状态发生变化,无论该变化发生是否合理,是否由资源管理人员有意安排或失误安排,是否现场检修人员正常录入或误操作引起,系统均作为触发条件,生成智能合约,不是传统意义上的合约,而是相当于“运行风险揭示单据”同等效果的合约,向资源管理人员和资源使用单位发起确认请求,双方收到智能合约后再考虑后续是否需要重新安排运行方式以达到化解风险的效果。该场景同样适用于通信资源长时间处于临时运行方式的风险提示,假设一条光传输段因施工需将原方式A更改为方式B,只要设定同一条资源的运行方式发生改变的允许时长(通常与施工时间相当),映射至区块链为两区块的时间戳之差,超过时限的,系统自动触发合约生成条件,自动生成风险揭示合约,未超时限的不触发生成合约条件,视作施工未完成,无需恢复正常运行方式。
(1)联盟链实用的拜占庭容错算法存在扩展性较弱的缺陷,计算效率依赖于参与协议的节点数量,不适用于节点数量过大的区块链系统,因此,系统不宜大量增加外企业节点,不利于电网企业竞争性业务在市场上的推广。(2)区块链的共识算法中规定,系统的失效节点数量不得超过全网节点的1/3,由于联盟链的节点数量较少,容错率相对较低,不排除多个节点联合欺诈作恶的可能。