1.一种基于电网区块链的共识方法,其特征在于,它包括以下步骤:
步骤1,电网节点(101)广播电力交易订单(300);电网(100)用户每产生一笔新的电力交易,则将该笔电力交易订单(300)向电网(100)进行全网广播;
具体的,参与电力交易的电网节点(101)为发电单元或用电单元,即是产销者;电网节点(101)根据电力交易订单(300)预测可售电量为E,其中电网节点(101)的可售电量等于发电量减去用电量,同时电网区块链(200)为电网节点(101)A生成产销者的2个密钥bα和bβ,并将其记录在电网区块链(200)的数据库中;
步骤2,候选区块(102)封装电力交易订单(300);
具体的,在封装电力交易订单(300)时,电网节点使用加密的方式进行封装;两个电网节点(101)A和B使用相应的公钥和私钥创建一对新地址:μAddr1和μAddr2;其中,μAddr1为交易地址,用于两个电网节点(101)A和B执行电力交易;μAddr2为匿名通信地址,通过匿名信息流的方式实现匿名通信,并可传输隐私和保密的信息;
在电网节点(101)A生成密钥bα和bβ后,电网节点(101)B使用SHA256生成一个静态密钥jα和一个临时密钥jγ;
jα=SHA256(pubkeyzB||E||pubkeyPPB||Timestamp)
jγ=SHA256(jα||RamdomNumber)
其中,SHA256(·)为哈希函数;pubKeyB为电网节点(101)B的公钥信息;Timestamp为时间戳;pubKeyPPB为电网节点(101)B对应的发电设备的公钥;RandomNumber为随机数;jα是静态密钥,用于验证电网节点(101)B对可售电量E的所有权;jγ是临时密钥,又称动态密钥,用于锁定以防止双重支付电量E;电网区块链(200)向电网节点(101)B的地址μAddr2发送消息jα和jγ,然后电网节点(101)B使用μAddr2向全网广播电力交易信息,电网节点(101)B的广播函数为I1(E,P,μAddr1B,μAddr2B),包含电网节点(101)A可售电量E、保留价格P、交易地址μAddr1B以及匿名消息流地址μAddr2B;
步骤3,候选区块(102)提交电量证明(301);所有电网节点(101)均在自己的候选区块(102)中提交电量证明(301);
步骤4,候选区块(102)电力交易记账;候选区块(102)对电力交易订单(300)记账;当某个电网节点(101)完成了电量证明(301),便在本节点的候选区块(102)创建电力交易订单(300)的账本,并将本节点的电量证明(301)和电力交易订单(300)的账本封装起来向电网(100)广播,供全网进行共识;
具体的,当某个电网节点(101)B完成了电量证明(301)和候选区块(102)创建后,使用μAddr2B加密电力交易订单(300)的账本,并向电网(100)上其他电网节点(101)全网广播,每个电网节点(101)都会收到该电网节点(101)B的广播信息;如果电网节点(101)A根据需要参与电网节点(101)B的电量交易,则电网节点(101)A使用匿名地址μAddr2向电网区块链(200)发送消息,要求验证电网节点(101)B对电量E的所有权证明,电网区块链(200)进行解密,验证数据库记录并回复真假;验证成功后,电网节点(101)B会向电网节点(101)A所售电量进行交易,电网节点(101)A使用匿名地址μAddr2向电网(100)中广播匿名竞价信息,其竞价函数为η(μAddr2A,μAddr2B,E1,P1),其中E1为电网节点(101)B想要交易的电量,P1为电网节点(101)A交易该电量的出价;
电网(100)根据收到的出售信息和竞价信息进行订单匹配;电网(100)完成电力交易订单(300)匹配,进行电力交易订单(300)账本的全网广播,广播函数为I1(μAddr2A,μAddr2B,E1,P1),为了防止双重支付电量E1,系统会对电量E1进行上锁,锁定请求消息由电网节点(101)B发送到电网(100)中,其中包含证明电网节点(101)B所有权的密钥jγ,锁定请求直到电量交易成功,当更换电量的所有权时取消锁定;锁定电量E1后,电网节点(101)B和电网节点(101)A将同时确认电力交易订单(300)的交易细节并写入智能合约中;电网节点(101)A和B共同支付一定的手续费;
步骤5,电网节点(101)共识验证;电网节点(101)对电力交易订单(300)进行电量传输和电量使用;电网(100)上其他电网节点(101)验证该电网节点(101)的电量证明(301)和电力交易订单(300)记账,并与各自节点中候选区块(102)的封装信息进行对比;
具体的,所有电网节点(101)参与该笔电力交易订单(300)账本的共识验证,共识过程由智能合约自动执行;电网节点(101)B需向智能合约写入函数为ψ(μAddr1B,jγ,pubKeyPPB),电网节点(101)A需向智能合约写入函数定义为ψ(μAddr1A,P1);当交易双方中的任何一方没有向智能合约发送相应的信息时,智能合约生成失败,该笔电力交易订单(300)交易不成功;智能合约生成后,智能合约会将电量所有权证明密钥jγ、pubKeyPPB发送给电网节点(101)A的匿名消息地址μAddr2A,进行解密;电网节点(101)A用匿名消息地址μAddr2A向电网区块链(200)发送共识请求A(jγ,pubKeyPPB,unlock,update),电网区块链(200)接收到信息并验证jγ,对请求进行解密,并生成一对新的密钥tα和tγ分别替换jα和jγ,其中,tα和tγ分别如下式所示:tα=SHA256(pubKeyA||E1||pubKeyPPB||Timestamp);
tγ=SHA256(tα||RandomNumber);
此时,电网节点(101)B的使用电量所有权属于电网节点(101)A,电网节点(101)B可以使用tα和tγ来消耗电量E1;其中可能会出现特殊的情况,电网节点(101)A所售电量可以同时满足2个电网节点(101)B和C,甚至更多电网节点(101),即,两个以上的电网节点(101)B、C和电网节点(101)A,以及本次电力交易订单使用的变电单元的电网节点(101),输配电单元的电网节点(101),均具有同等的电量证明,均可竞争本次交易的记账权;经过智能合约匹配后,电网节点(101)A所售电量E可以同时满足电网节点(101)B和C的需求,电网节点(101)A的可售电量E并将其分成E1和E2两部分;电网区块链(200)可以为2个电网节点(101)B和C创建2个jα密钥,按照下式所示等式生成每一个新密钥;
jα+1=SHA256(jγ||E1/E);
新密钥生成后,进入电量物理传输阶段,在该阶段内电网节点(101)B使用新密钥tα和tγ来消耗电网节点(101)A所产生的电量;所有节点进行解密,按照智能合约继续进行共识;电力供应更多电网节点(101)的情形可以类推;电网(100)上所有电网节点(101)接到广播消息,均参与验证该电网节点(101)的电量证明(301)和电力交易订单(300)记账,并与本节点中候选区块(102)的封装信息进行对比;
步骤6,电网区块链(200)添加电网区块(201);如果电网(100)上所有电网节点(101)对电量证明(301)和电力交易记账均验证通过,便可将该候选区块(102)添加到电网区块链(200)中;否则,电网节点(101)放弃该笔交易记账和区块创建,未接入电网区块链(200)的电网节点(101)删除本地的候选区块(102);
具体的,所有电网节点(101)对比后确认该广播消息与本地的封装信息是否一致,如是则返回消息1,如否则返回消息0;如果所有电网节点(101)均返回消息1,本次电量证明(301)和电力交易订单(300)记账的共识才算成功;本次电力交易订单(300)规定的电量传输时间截止后,智能合约向双方的智能电表查询电量传输信息,智能合约根据智能电表所发送的电量传输信息进行电量结算,并核对是否完全履行本次电力交易订单(300)的情况和服务质量进行计算;当电网节点(101)A所产生或传输的电量小于电力交易订单(300)约定的电量时,智能合约会减少电网节点(101)A的服务质量值,并对电网节点(101)A的服务质量值进行更新;当电网节点(101)B使用电量大于智能合约约定的电量时,智能合约会将重新将电力交易订单(300)发送给电网节点(101)A,并重新评估服务质量;在电网中工作时间较长,电量证明(301)数值较大,电力交易订单(300)服务质量越高,随机值越大的电网节点(101)可竞争到记账权,将该电网节点(101)对本次电力交易订单(300)进行记账的候选区块(102)连接到电网区块链(200);其他电网节点(101)失去本次记账权,删除本地节点上的候选区块(102)。
2.根据权利要求1所述的方法,其特征在于,
所述候选区块(102),指电网节点(101)中创建的临时性数据区块,具有记账功能,但在未被所有节点共识之前,候选区块(102)只是暂时存在;如果某个候选区块(102)被所有电网节点(101)共识,则该节点中的候选区块(102)会被链接入电网区块链(200),并转为正式的电网区块(201);未被所有电网节点(101)共识的候选区块(102),则在共识过程结束后会被删除;
所述电网区块链(200),指电网(100)中分布式数据区块组成的链式数据库,由地理上分布的电网区块组成;电网区块链(200)记载了所有被共识的交易账本,能够运行智能合约完成电力交易过程;
所述电网区块(201),指电网区块链(200)的基本组成单元,所有区块前后互相连接,共同组成区块链;每一个电网区块(201)都是一个交易账本,记载了被共识的电网交易记录;
所述电力交易订单(300),指电网供电和用电双方之间就电力使用达成的交易凭证,电力交易订单(300)记载了电力交易的时间戳,发电单元名称,用电单元名称,发电量的数值或使用电量的数值,电力交易订单编号;电力交易订单(300)能够加密方式记录本次订单交易使用的发电单元、变电单元、输配电单元、用电单元;
所述电量证明(301),指电力系统中各种发电单元、变电单元、输配电单元、用电单元对电网(100)的贡献证明;发电单元通过向电网(100)发电来提供电量证明,发电量的多少决定了电量证明的数值大小;变电单元通过向电网(100)变电来提供电量证明,变电量的多少决定了电量证明的数值大小;输配电单元通过向电网(100)输配电来提供电量证明,输配电量的多少决定了电量证明的数值大小;用电单元通过电网(100)消耗电量来提供电量证明,使用电量的多少决定了电量证明的数值大小;电量证明允许电网(100)中所有具有计算功能的设备参与电力交易记账和区块链构建。
3.根据权利要求1所述的方法,其特征在于,在步骤3中,所有候选区块(102)均可提交电量证明(301)竞争记账权;所有电网节点(101),包括各种发电单元、变电单元、输配电单元、用电单元的节点,均具有同等的记账权;发电单元的发电量,变电单元的变电量,输配电单元的输配电量,用电单元的使用电量,均具有同等的电量证明,能够有效防止记账权过度集中在某个或某些电网节点上,也可有效防止攻击;电量证明(301)的计算过程,需要考虑每个电网节点(101)在电网中的工作时间长短,不同时段的电量大小,以及在不同的电力交易订单(300)中服务质量的好坏;在电网中工作时间越长,电量证明(301)数值越大,电力交易订单(300)服务质量越好的节点,越容易竞争到记账权;电量证明(301)可以根据实际需要选择是否考虑不同时段、不同地域、不同发电单元的阶梯电价;电量证明(301)中增加一个随机变量,防止攻击者利用计算电量证明(301)的方式预测记账节点并攻击记账节点。
4.根据权利要求1所述的方法,其特征在于,所述电网(100)由多个电网节点(101)互相连接组成,电网节点(101)通过电力交易订单(300)进行交易,电网节点(101)可以创建候选区块(102)进行临时记账,电网节点(101)通过电量证明(301)竞争记账权,最终的电力交易记账经过共识后保存在电网区块(201)中,多个电网区块(201)互相连接组成电网区块链(200)。