基于信用评分的电力交易区块链改进RAFT共识机制

2022-07-14 07:18邹贤沈力张伟曹武杨铭
南方电网技术 2022年6期
关键词:日志共识领导人

邹贤,沈力,张伟,曹武,杨铭

(1. 昆明电力交易中心有限责任公司,昆明650011;2. 南京南瑞继保工程技术有限公司,南京211102;3. 东南大学,南京210096)

0 引言

当前电力市场建设已经取得了一定进展,首批8个试点电力现货市场完成了结算试运行;国家发展改革委办公厅、国家能源局在2019年印发了《关于深化电力现货市场建设试点工作的意见》、2020年印发了《关于做好电力现货市场试点连续试结算相关工作的通知》[1],均提出了对电力市场的机制设计、运营能力、电力市场运营平台、配套机制等进一步发展的要求[2 - 6]。随着“碳中和、碳达峰”要求的提出,电网的新能源比例越来越高,分布式风电场/光伏电站、储能系统、微单元发电系统、可控负荷等作为分布式交易主体也越来越多地参与到电力市场交易中,交易主体的激增使得电力市场交易的管理复杂度快速增加,电力市场交易频繁,其清算过程需与银行等第三方金融机构进行频繁且慢速的信息校对,海量的交易信息数据存在丢失或篡改的可能性,且当前的电力交易平台已无法应对大规模数据处理,同时各省级电力市场复杂的管理构成也制约了各类分布式资源的统一优化配置[7 - 10]。

区块链是一种分布式数据库或共享账本,数据按区块组织并加密,具有可追溯性、防篡改、去中心化等特点和优势,其特点与大规模电力市场交易的需求相契合[11 - 15]。基于区块链的电力市场交易平台已有了一定的研究成果,既有对平台建设的研究,也有对其中关键技术的研究。文献[16]分析了能源互联网对区块链的技术需求和引入区块链的适用性。文献[17]提出了一种大用户直购电链路框架,结合直购电交易特点对分布式共识机制进行改进。文献[18]提出了基于区块链技术的分布式电力市场交易平台,利用区块链技术去中心化、开放性、匿名性及安全有效性等优势,建立基于电力交易智能合约的分布式电力交易机制。文献[19]提出了基于有向无环图(direct acyclic graph,DAG)拓扑的公平委托权益证明(fair delegated proof of stake,F-DPoS)共识机制的分布式能源交易区块链技术。文献[20]提出了基于区块链的智能合约应用。

共识机制作为区块链技术中的核心[21],是保证节点在分布式网络中达成共识,保障数据安全的基础,也是提高区块链处理速度、运行性能的关键。共识机制随着区块链应用场景的扩展不断发展,在电力系统中已有实际应用[22]。当前主要的共识机制种类有:工作量证明机制(proof of work,PoW)、股权证明机制(proof of stake,PoS)、股权授权证明机制(delegated proof of stake,DPoS)、拜占庭容错机制(practical Byzanine fault tolerant,PBFT)、Paxos和RAFT机制。其中PoW和PoS都存在计算量大,功耗高的缺点;PBFT及其进化机制对含有动态变化节点的区块链适应性较差。Paxos和RAFT机制则更适合没有拜占庭容错的分布式交易系统[23 - 25]。

当前的电力市场交易平台共识机制设计主要以PoS为主,随着大规模分布式交易节点的加入,节省系统功耗是必须的工作,为此本文提出了电力交易区块链的RAFT共识机制。分析了电力市场多动态变化节点、备份充足、交易主体职责明确等特点与RAFT应用的适应性,在此基础上设计了多层次RAFT结构,并设计了信用评分机制对RAFT选主机制进行改进,在保证有效性的前提下提高共识过程的速度,节省能耗。

1 RAFT适应性分析

区块链基本架构可以分为数据层、网络层、共识层和应用层,如图1所示。数据层包括数据存储区块和链式结构,哈希指针为每个节点进行统一链接,通过加密保证数据的安全性;网络层用来通过组网方式和网络传输协议连接并组织各分布节点,最早的区块链网络架构基于P2P网络;共识层通过设定的共识机制达成各个区块间的一致共识,是区块链系统分布式和去中心化的核心;应用层是系统开发和应用部署的接口,包括各种加密货币、应用软件等。

图1 区块链基本架构Fig.1 Basic architecture of blockchain

各个电力交易主体经过预定的撮合交易策略达成交易,交易完成后通过网络扩散到电力市场的各个节点,进而全系统各个节点对达成的交易形成共识。电力交易的分布式共识要求各个服务器节点存储的交易信息保持一致,以便于进行交易记录溯源、竞价策略撤回等相关操作。每个服务器节点可以建模为一个复制状态机,采用日志复制的机制实现复制状态机的状态日志,每个服务器建有日志,日志由按顺序编号。RAFT是用来管理复制日志的一种一致性协议。一致性算法允许多个节点作为一个集群协同工作,并且当其中的某些节点退出或故障时集群仍具备快速达成一致性共识的能力。因此RAFT算法可以用来建立可靠的大规模软件系统。RAFT算法设置领导人(Leader)、跟随者(Follower)和候选人(Candidate)3种角色,任意节点都可以写日志。RAFT算法更便于选举出一个强领导人角色,领导人选取之后其日志必须进行补全。RAFT算法中所有跟随者的日志都是领导人的子集。

RAFT算法易于理解,其重要工作流程如下。

1)选主,即Leader选举。现任Leader有可能因故障或任期结束等原因,RAFT集群需要重新选主,Leader周期性地向所有Follower发送心跳以确认在集群中作用的存在,如果一个Follower在设定时间内没有接收到心跳信息,即可认为此时需要进行选主工作。

2)强制日志复制。Leader从某个节点接收日志后,必须将该日志复制到系统其他节点,强制要求其他节点的日志与自己保持一致,Leader选举完成后,响应应用层的请求。Leader把应用层的每请求中包含的复制状态机执行的指令追加到日志中去,并发给给其他的服务器,让该条目得以复制。执行的结果通过Leader返回给应用层。如果Follower运行缓慢或网络丢包,Leader会不断地重试直到所有的Follower最终都存储了所有的日志条目。

3)安全性。在存在Leader的集群中新加入的节点将分配为Follower角色,新加入的节点可以再参与接下来的选主过程;如果系统中没有Leader,所有节点变成Candidate,Candidate会向其他节点请求投票,最先获得最多票数的Candidate节点将成为新一任Leader,新一任Leader选出后,剩余的Candidate节点即变为Follower节点;同时RAFT有一套机制保证Leader选举过程中仍能保证所有日志的复制和保存。

RAFT算法中节点3种状态的变化可用图2表示。

图2 状态变化示意图Fig.2 Diagram of state changing

电力市场交易系统与RAFT算法的适应性主要体现在以下几个方面。

1)因电力系统的高有效性要求,大多数参与交易的节点都具备备份服务器,备份服务器也要求与实际的交易情况保持一致,RAFT的强制复制日志可以保证备份服务器信息的随时更新;

2)电力市场交易节点是动态变化的,因检修或故障等原因其退出交易的时间是不固定的,其加入交易的时间也具有随机性,RAFT算法适合于节点动态变化的应用场景;

3)电力市场准入门槛较高,属于私有链,交易节点的行为在可约束的范围内,出现拜占庭错误的概率可控。

4)电力市场参与节点易于分类,职责清晰,参与电力交易的节点主要包含售电企业、发电企业、负荷用户、电网企业、金融机构以及政府机构,各类节点参与交易的职责不同以及投入交易的成本不同,天然有利于Leader的选取。

2 基于信用评分的RAFT选主策略

RAFT算法在选主过程中可能产生投票分歧问题,尤其在集群中节点数量较多的情况下,当多个节点获得了相同数量的选票时无法选取唯一的节点作为领导人,解决方法是重新进行选主,这样的过程会增加系统运行的时间和复杂度。同时对于电力系统相关的交易,各个服务器通信时间处于异步状态,当交易节点过多时,原有的RAFT算法的缺点就会放大,影响正常交易的进行,需要对RAFT算法的领导人选举过程进行改进。

电力交易包含碳交易、绿证配额交易、中长期交易、现货交易等多种交易形式[26]。在各种电力交易系统中,各参与节点的职责分工是明确的:电源生产电力,负荷消耗电力,电网公司负责线路输送。电力公司和运营商可以对交易起到监督的作用,监管部门、交易中心和市场主体可以共同对交易的最终结果进行校核以保证市场的公平和高信用[27]。在电力市场的交易过程中,电力公司、运营商、电力负荷大户、电厂大户在交易过程中会形成天然的主导地位。本文设计采用信用评分的方式来表征交易的主导地位,以改进RAFT投票选取领导人的过程,提高选主的有效性和快速性。对节点的信用评分基于节点的行为记录,根据交易记录日志中所接收到的节点交易行为信息,若节点反馈了正确的交易信息,则此节点可以增加信用积分,若节点反馈了错误的交易信息,则认为此节点需要减少信用积分。交易的电量、交易是否成功都可以用来进行信用评分。其中节点交易行为信息的公正性由主要监管部门进行最终校核。

基于节点的成功交易的历史交易量、节点稳定程度形成正常信用积分,而基于节点的错误反馈、惩罚因子等形成积分扣除制度,对正常信用积分进行修正,从而综合完成对节点的信用评分。信用评分的计算公式如式(1)所示。

(1)

式中:Ri为第i个节点的信用积分;Vs为累计的成功交易量;Vw为因错误信息涉及的累计交易量;α为节点稳定因子;N为电力市场交易天数;Ni为节点i参与电力市场交易没有出现因故障等退出现象的天数;β为节点惩罚因子,为当前信用值的函数;β1, …,βj为各信用值区间对应的分段函数值,一般有β1<…<βj;R1, …,Rj为对应的区间边界值。

采用交易量作为信用评分的主要依据能够包含跨区域的电力交易场景。实际应用中节点的稳定程度也是需要考虑的因素,相比较而言,电网公司因大量备用服务器的存在,其稳定性比负荷和电源节点的稳定度要高,同时对于同一地区来说,所有的电力交易都会通过电力公司或者运营商,基于交易量和稳定程度的信用积分方式有利于区域中的大电网企业主导电力交易区块链共识。

惩罚因子的设计是为避免出现利用优势地位进行错误校核的问题,当前信用值高的节点产生错误行为时,将大幅降低其信用积分作为惩罚措施,即对应的惩罚因子也较大。本文中惩罚因子采用基于信用值的分段函数形式,即每个区间段对应一个惩罚因子。

改进后的基于信用评分的选举过程如下所述,并由图3表示。

图3 选举关键流程Fig.3 Election critical process

1)跟随者在设定的超时时间内没有收到来自领导人的心跳,则认为此时的服务器集群网络发生了某种变化,可能情况包括领导人服务器宕机、网络故障、领导人节点任期结束而新的领导人尚未确定,此时主动发起选举,增加当前任期(term)并将节点的身份改为候选人;

2)候选人并行向其他节点发送投票请求和当前的信用文档,接收到投票请求的节点比较自身和请求发送方的信用值,若发送节点信用值比自身节点的信用值高,节点将退出选举并变成跟随者节点;在接受到的所有其他节点信用值比自身节点的信用值低的情况下,节点为自身进行投票;最后通过得票数确定领导人;对于两个或多个节点拥有相同的信用值的情况,则以最先确定给自己投票的节点为领导人;

3)领导人一经确定,即向其他节点发送确认信息,选主过程结束,其他节点会切换到跟随者状态。

通过信用积分的方式,利用电力交易自身的交易特点和交易主体各自的身份区别,避免了RAFT算法中的交易分歧问题,并简化了RAFT选主过程,总体上提高了RAFT选主过程的效率和有效性。

3 基于改进RAFT的共识机制

当选主过程结束后,共识系统可以正常工作。电力交易的共识机制主要为了完成分布式交易结果的确认,本文提出的RAFT共识机制也主要是为了记录电力交易智能合约的执行结果。领导人节点将统一对交易结果的确认及记录请求进行处理,并对这些并发请求的顺序进行调度。当电力市场中按照智能合约完成一次交易后,参加交易的主体首先对交易的过程和结果进行确认,确认后的交易结果会经监管部门审核,完成后发往领导人节点进行记账操作。

根据规约任何节点的任期和同步号是单调递增的;单节点只会对任期与同步号相同的日志执行修改,而不会对任期小于同步号的日志执行修改操作。领导人节点首先将当前任期与请求内容组成一条条目添加到日志中,随后将新条目发送给其他跟随者节点,当该新条目被过半数的节点收到并添加到自己的本地日志后,领导人节点可以确认提交这一新条目,这些新条目可以应用到状态机。RAFT算法中已经确认的条目需要保证永远存在。跟随者节点完全处于被动状态,收到领导人节点发送来的新条目时需要比较其日志条目目录是否与自己的一致,如果比领导人节点的目录小,说明自己没有补全所有的日志,此时需要向领导人节点发送更新存储请求,让领导人节点调整发送,保证跟随节点的日志记录与领导人保持一致,为适应电网交易主体的动态环境,领导人节点只对尚且有心跳的跟随者节点补全日志信息,通过提高动态更新效率的方式更好地适应动态环境;当出现新加入的节点时,领导人节点对新加入的节点进行当前日志补全,并适当考虑软件平台实施部署过程中的多线程并行操作。

RAFT算法保证系统节点信息一致性的前提是没有恶意节点,传统RAFT算法抵抗恶意节点的能力较弱,极大限制了RAFT算法的应用范围和安全性,同时本文的选主过程基于信用评分,信用评分不能被恶意节点所篡改,否则会极大降低整体共识机制的安全性[27]。作为电力交易市场交易的各个主体,其存在恶意节点的可能性较低,但仍不可避免受到网络攻击的可能,因此本文的RAFT共识算法在恶意节点方面也做了一定的改进。

若某个跟随者节点受到网络攻击转变为恶意节点,该恶意节点可能会删除自身节点日志项或者篡改日志,也会将接收领导人节点的信息私自篡改后保存到日志目录,同时这种行为不会被其他节点包括领导人节点所察觉;若领导人节点受到网络攻击转变为恶意节点,该恶意领导人节点可能会删除或者篡改客户端、跟随者节点发来的日志,并向其他的跟随者节点发送有错误的数据信息并提交。为弥补这一缺点,在共识机制中加入了审核者的角色,审核者是固定的,不随选举过程发生变化,一般由监管机构、政府部门担任,审核者节点负责日志信息的完整性和准确性,对领导人节点的日志信息进行校对,维护信用值及其计算的可靠性。审核者节点的工作包括以下几点。

1)当电力市场交易完成后,交易信息先由审核者节点进行审核,核对完成后发往领导人节点;

2)领导人节点发往跟随者节点的补全日志信息和当前提交的新日志信息,要经审核者节点根据时间戳进行校核,若信息与前次校核的信息一致,则将该新日志条目提交至审核节点日志目录;若信息不一致,该条目日志的交易过程和结果需要进一步进行核实处理,同时对恶意节点进行信用评分,恶意节点也须退出选举,并发起新一轮选主过程;

3)当选领导人节点的存储日志内容需要审核者节点的核对,按照时间戳、任期和交易结果进行核对,存在不一致的条目则当前领导人选举失效,恶意节点退出选举,并对该节点进行信用评分,并发起新一轮选主过程。

综上,基于改进RAFT的共识机制可用图4表示。

图4 改进RAFT共识机制Fig.4 Improved RAFT consensus mechanism

4 应用实例

本文实验环境为Windows10操作系统,系统内存为8 GB,CPU为Intel Core-i5 2.5 GHz处理器。从选主过程用时、完成共识日志用时和吞吐量3个方面分析本文提出的用于电力市场交易的改进RAFT共识机制在快速性和有效性方面的优势,在没有恶意节点情况下与传统RAFT算法比较选主过程用时、完成共识日志用时,在含有恶意节点情况下与已提出的R-RAFT算法[28]比较吞吐量。为模拟电力市场的交易场景,在测试中的每个节点都主动分配不同的信用值以便选主过程的实施;信用评分中的节点稳定因子通过实际交易数据根据式(1)进行计算,惩罚因子采用倍数惩罚的方式,即依据因错误信息涉及的累计交易量进行倍数罚分,本仿真中将信用段分为5段,惩罚因子为[10, 9, 8.5, 8, 7]。

1) 场景一:选主用时的比较

分别对电力市场交易节点数为50,选主次数由10递增至300次,以及选主次数为300次,节点数由20个递增至200个两种条件进行模拟测试,比较这两种情况下传统RAFT和本文改进RAFT算法在选主方面的用时区别,每组进行5次重复测试,取平均值作为测试结果,结果如图5—6所示。

图5 共识次数递增下选主用时Fig.5 Election time under increasing consensus numbers

图6 节点数递增下选主用时Fig.6 Election time under increasing node numbers

由图5—6可知,传统RAFT和本文改进RAFT算法的选主用时都是波动上升,本文改进算法的选主用时要小于传统RAFT算法。在不存在恶意节点攻击时,传统RAFT和本文改进共识算法需要一轮交互,节点间进行投票的通信时间是用时的主要因素,改进算法在交互时通过信用值比较减小了通信节点的规模,因此取得了选主时间上的优势。

2)场景二:完成共识日志用时的比较

比较以上两种情况下传统RAFT和本文改进RAFT算法在完成共识日志用时方面的区别,每组进行5次重复测试,取平均值作为测试结果,结果如图7—8所示。

图7 共识次数递增下完成共识日志用时Fig.7 Consensus log time under increasing consensus numbers

图8 节点数递增下完成共识日志用时Fig.8 Consensus log time under increasing node numbers

本文的改进算法在选主结束后的日志复制过程与传统RAFT算法是一致的,本文改进算法在复制开始增加了一个对领导人节点发出日志的审核过程,但这个时间较短,同时由于选主过程用时的优势,使得本文改进算法在完成日志复制的用时结果上仍具有一定的优势。

3)场景三:吞吐量的比较

共识算法的一个关键指标是吞吐量(throughput,TPS),其表征了系统节点集群单位时间内处理请求的能力。吞吐量的计算公式如式(2)所示。

(2)

式中:QTPS为吞吐量;Δtrans为共识过程的交易总量;Δt为总的共识时间。

由于传统RAFT算法中无法对恶意节点进行安全性容错,吞吐量测试选取R-RAFT作为对比对象,R-RAFT采用的是多轮核对的方法。在节点数为50,包含10%,15%恶意节点的情况下对两种算法下共识次数由100增至300时的系统吞吐量进行对比。对比结果如图9—10所示。

通过对比可以看出本文的改进算法吞吐量有一定的优势,本文改进RAFT算法的审核环节在日志复制开始和选主结束时刻,因此当恶意节点增多时有概率会发起多次选主过程,由于选主过程的快速性,使得改进RAFT共识算法在提高容错性的同时仍有一定快速优势。

图9 10%恶意节点下吞吐量Fig.9 TPS under 10% malicious nodes

图10 15%恶意节点下吞吐量Fig.10 TPS under 15% malicious nodes

综合以上模拟电力市场相关区块链的测试结果可以看出,本文提出的改进RAFT算法相比传统RAFT算法具有更快的选主速度和更好的容错性,可以很好地解决电力系统中多备份节点的一致性问题,也满足了电力市场交易区块链分布式共识的快速性和有效性的要求。

5 结语

本文根据电力市场交易区块链分布式共识对一致性及快速性的要求,结合电力市场交易主体的特点,针对传统RAFT易产生选举纠纷和无法适用于恶意节点的缺点,改进了传统RAFT算法。改进后的RAFT算法采用信用值评估节点的稳定性和交易地位,基于信用值进行领导人选举,替代原有RAFT算法中的投票方式,加快了选主过程,避免了选举纠纷;同时为提高RAFT算法对恶意节点的抵抗能力,提出了采用审核者节点对复制日志和领导人选举审核的方法,提高了共识的有效性,并通过实例对比了不同算法的结果。结果显示本文所提的改进RAFT算法实现了提高分布式共识算法快速性和有效性的目标。

猜你喜欢
日志共识领导人
一名老党员的工作日志
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
扶贫日志
夏朝
中共第一代国家领导人带头廉洁自律
商量出共识
雅皮的心情日志
雅皮的心情日志
领导人的访美瞬间