基于区块链的能源交易隐私保护方法与流程

文档序号:23688445发布日期:2021-01-23 09:45阅读:179来源:国知局
基于区块链的能源交易隐私保护方法与流程

[0001]
本发明属于隐私保护技术领域,特别涉及一种基于区块链的能源交易隐私保护方法。


背景技术:

[0002]
近年来,能源行业形势日趋复杂,诸如光、风、热等清洁可再生能源迅速发展,导致现有的能源架构难以满足不断增长的能源消耗和多样化的能源需求,而能源互联网通过融合互联网技术和分布式可再生能源技术,来构建新型能源供需架构,获得了广泛的关注。
[0003]
现阶段在能源互联网中,实现满足用户需求的能源交易是重中之重。一方面,大量个体发电用户涌现并加入能源互联网,可供用户选择的电力能源类型逐渐增多,电力交易逐渐从单一的能源集中交易发展为多元化的综合能源交易;另一方面,需要考虑电力传输成本和环境保护,尽可能实现能源就近消纳,以降低电力传输成本,增加清洁能源的使用比例。而传统的能源交易方式已不再适用,能源交易体系的建立急需一种新的技术结构。
[0004]
区块链是一种去中心化的分布式数据账本,由多个对等节点组成,所有节点共同维护一个公开的数据账本,账本数据通过共识机制达成一致,去中心化是区块链最主要的特征。而能源互联网也强调开放、互联、对等以及分享的设计理念,与区块链的特性高度契合。同时,智能合约技术可以让区块链系统能够完成更加复杂的程序计算,且能够保证程序运行的自动化和正确性,因此可以更好地实现能源互联网中复杂的多元化综合能源交易。
[0005]
然而,将区块链应用于能源交易也有一些缺陷,具体体现在如下方面:
[0006]
(1)区块链中的用户交易数据公开透明,随之带来的是用户的隐私保护问题。攻击者能够通过分析交易记录获得有价值的信息,例如资金流向和交易内容等,而用户往往不希望这些信息被其他人探知。(2)在某些交易流程中,攻击者甚至可以探知交易计划和匹配记录,进而掌握用户交易动向,破坏市场秩序。(3)此外,区块链去中心化的网络分布结构,难以阻断交易数据的传播和外泄,因此,用户的匿名性也就是身份隐私也需要考虑在内。


技术实现要素:

[0007]
本发明的目的在于提出一种基于区块链的能源交易隐私保护方法,以解决现有的区块链能源交易中存在的数据隐泄露问题以及用户身份暴露问题。
[0008]
本发明为了实现上述目的,采用如下技术方案:
[0009]
基于区块链的能源交易隐私保护方法,包括如下步骤:
[0010]
s1.售电用户结合自身的发电记录,制定售电计划,并根据发电记录和售电计划生成零知识证明,同时生成售电计划密文;
[0011]
将发电记录、售电计划、零知识证明和售电计划密文发送到区块链中进行验证并存储;
[0012]
s2.购电用户结合自身需求制定购电计划,并根据购电用户的账户余额和购电计划生成零知识证明,同时生成购电计划密文;
[0013]
将账户余额、购电计划、零知识证明和购电计划密文发送到区块链中进行验证并存储;
[0014]
s3.管理者依据现有的售电计划,为购电计划进行匹配计算,将生成的匹配记录上传到区块链中进行存储,并将匹配记录参数通过链下告知匹配双方;
[0015]
其中,管理者进行匹配计算的具体过程如下:
[0016]
对于一个购电计划,从现有的售电计划中取一个售电计划,利用该购电计划对应的购电计划密文与当前售电计划对应的售电计划密文进行匹配计算;
[0017]
重复以上匹配计算过程,直到现有的售电计划中所有售电计划均与该购电计划完成匹配计算,然后选取匹配结果最优的售电计划与该购电计划进行匹配,得到匹配记录;
[0018]
匹配记录参数包括售电计划、购电计划、交易电量以及交易价格;
[0019]
管理者使用同态加密算法将匹配记录参数中的交易电量进行加密处理,生成交易电量密文;将生成的交易电量密文与匹配记录一起存储;
[0020]
s4.匹配双方分别生成零知识证明,并上传到区块链中验证并存储,确认匹配记录;
[0021]
s5.匹配双方分别按照经过确认后的匹配记录进行供电和用电,进而得到实际供/用电记录,实际供/用电记录由硬件设备接口提供并上传;
[0022]
硬件设备接口使用同态加密算法将实际供/用电量加密,生成实际供/用电量密文;
[0023]
管理者基于交易电量密文与实际供/用电量密文,利用偏差计算函数,计算交易电量与实际供/用电量之间的偏差,根据偏差是否合理,确定结算定量;
[0024]
s6.匹配双方分别生成零知识证明,发送到区块链中验证,确认参与交易并完成结算。
[0025]
优选地,步骤s1中,售电用户使用同态加密算法将售电计划中的出售电量、售电价格以及用于匹配计算的参数进行加密,生成售电计划密文,售电计划密文与售电计划一起存储。
[0026]
优选地,步骤s2中,购电用户使用同态加密算法将购电计划中的购买电量、购电价格以及用于匹配计算的参数进行加密,生成购电计划密文,购电计划密文与购电计划一起存储。
[0027]
优选地,步骤s4中,确认匹配记录的具体过程如下:
[0028]
对于匹配记录参数中的售电计划,售电用户需要生成零知识证明,证明该售电用户是匹配记录中的售电方,验证通过后,售电确认完成;
[0029]
同时,对于匹配记录参数中的购电计划,购电用户需要生成零知识证明,证明该购电用户是匹配记录中的购电方,验证通过后,购电确认完成。
[0030]
优选地,步骤s5中,判断偏差是否合理的具体过程为:
[0031]
设定容忍偏差,判断偏差值是否小于容忍偏差值;
[0032]
经过判断,若偏差小于容忍偏差,则按照匹配记录中的交易电量进行结算;若偏差不小于容忍偏差,则按照实际供/用电量进行结算;得到结算电量。
[0033]
优选地,步骤s6的具体过程为:
[0034]
购电用户依据实际供/用电记录,从其账户余额中减去交易费用;购电用户生成的
零知识证明需要证明其对账户余额的更新,还要证明该购电用户参与了交易过程;
[0035]
售电用户依据实际供/用电记录,在其账户余额中加上交易费用;售电用户生成的零知识证明需要证明其对账户余额的更新,还要证明该售电用户参与了交易过程;
[0036]
另外,售电用户需要在区块链中减去交易电量,同时售电用户的发电记录也需要更新。
[0037]
优选地,零知识证明算法采用zk-snark算法。
[0038]
本发明具有如下优点:
[0039]
如上所述,本发明述及了一种基于区块链的能源交易隐私保护方法。其中,该方法使用零知识证明算法,在实现保护用户身份隐私的情况下对区块链能源交易中各个流程进行验证;同时,该方法还使用同态加密算法,在实现保护数据隐私的同时支持用户之间的匹配计算,能够在不泄露具体数值的情况下完成最优匹配;本发明方法基于零知识证明算法与同态加密算法,既保证用户在区块链中存储的数据不被探知和分析,又能够保护能源交易过程中双方用户的身份隐私,实现了对区块链能源交易中用户身份隐私和数据隐私的双重保护。
附图说明
[0040]
图1为本发明实施例中基于区块链的能源交易隐私保护方法的流程示意图。
[0041]
图2为本发明实施例中匿名资产的实现原理图;
[0042]
图3为本发明实施例中匿名交易计划的实现原理图;
[0043]
图4为本发明实施例中匹配记录的表示示意图;
[0044]
图5为本发明实施例中实际供/用电记录的表示示意图;
[0045]
图6为本发明实施例中基于区块链的能源交易隐私保护方法中参与用户的示意图。
具体实施方式
[0046]
术语解释:
[0047]
1、零知识证明:
[0048]
一种用于隐私保护的密码学技术,证明者可以证明一组数据满足某种关系,而不透露该数据的具体内容。零知识证明技术可以用来实现私密状态下的数据验证,以实现隐私保护。
[0049]
2、同态加密:
[0050]
同态加密是基于数学难题的计算复杂性理论的密码学技术。
[0051]
对经过同态加密的数据进行处理得到一个输出,将这一输出进行解密,其解密后的结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。
[0052]
下面结合附图以及具体实施方式对本发明作进一步详细说明:
[0053]
如图1所示,基于区块链的能源交易隐私保护方法,包括如下步骤:
[0054]
s1.售电用户结合自身的发电记录,制定售电计划,并根据发电记录和售电计划生成零知识证明,将发电记录、售电计划以及零知识证明发送到区块链中进行验证并存储。
[0055]
同时,售电用户使用同态加密算法将售电计划中的出售电量、售电价格以及用于
匹配计算的参数进行加密,生成售电计划密文,售电计划密文与售电计划一起存储。
[0056]
本实施例中发电记录至少包括发电量以及私密值。
[0057]
其中,发电记录在区块链中的存储形式为发电量和私密值合并生成的哈希值。
[0058]
本实施例中售电计划至少包括售电量、售电价格以及私密值。
[0059]
其中,售电计划在区块链中的存储形式为售电量、售电价格、私密值合并生成的哈希值。
[0060]
s2.购电用户结合自身需求制定购电计划,并根据购电用户的账户余额和购电计划生成零知识证明,将账户余额、购电计划以及零知识证明发送到区块链中进行验证并存储。
[0061]
同时,购电用户使用同态加密算法将购电计划中的购买电量、购电价格以及用于匹配计算的参数进行加密,生成购电计划密文,购电计划密文与购电计划一起存储。
[0062]
本实施例中账户余额至少包括余额数量以及私密值。
[0063]
其中,账户余额在区块链中的存储形式为余额数量、私密值合并生成的哈希值。
[0064]
本实施例中购电计划至少包括购电量、购电价格以及私密值。
[0065]
其中,购电计划在区块链中的存储形式为购电量、购电价格、私密值合并生成的哈希值。
[0066]
s3.管理者依据现有的售电计划,为购电计划进行匹配计算,将生成的匹配记录上传到区块链中进行存储,并将匹配记录参数通过链下告知匹配双方。
[0067]
其中,匹配计算指的是使用购电计划和售电计划中的密文以某种匹配算法进行计算,得出最优的匹配结果。需要说明的是,匹配算法有多种,本实施例对此并不作具体限制。
[0068]
具体的,管理者进行匹配计算的具体过程如下:
[0069]
对于一个购电计划,从现有的售电计划中取一个售电计划,利用该购电计划对应的购电计划密文与当前售电计划对应的售电计划密文进行匹配计算;
[0070]
重复以上匹配计算过程,直到现有的售电计划中所有售电计划均与该购电计划完成匹配计算,然后选取匹配结果最优的售电计划与该购电计划进行匹配,得到匹配记录。
[0071]
其中,匹配记录参数至少包括售电计划、购电计划、交易电量、交易价格以及私密值;匹配记录参数在区块链中的存储形式为以上信息合并生成的哈希值。
[0072]
管理者使用同态加密算法将匹配记录参数中的交易电量进行加密处理,生成交易电量密文;将生成的交易电量密文与匹配记录一起存储。
[0073]
s4.匹配双方分别生成零知识证明,并上传到区块链中验证并存储,确认匹配记录。
[0074]
确认匹配记录的具体过程如下:
[0075]
对于匹配记录参数中的售电计划,售电用户需要生成零知识证明,证明该售电用户是匹配记录中的售电方,验证通过后,售电确认完成;
[0076]
同时,对于匹配记录参数中的购电计划,购电用户需要生成零知识证明,证明该购电用户是匹配记录中的购电方,验证通过后,购电确认完成。
[0077]
s5.匹配双方分别按照经过确认后的匹配记录进行供电和用电,进而得到实际供/用电记录,实际供/用电记录由硬件设备接口提供并上传。
[0078]
实际供/用电记录至少应包括匹配记录、实际供/用电量、私密值。实际供/用电记
录在区块链中的存储形式为匹配记录、实际供/用电量、私密值合并生成的哈希值。
[0079]
硬件设备接口使用同态加密算法将实际供/用电量加密,生成实际供/用电量密文;
[0080]
管理者基于交易电量密文与实际供/用电量密文,利用偏差计算函数,计算匹配记录中交易电量与实际供/用电量之间的偏差,根据偏差是否合理,确定结算定量。
[0081]
其中,判断偏差是否合理的具体过程为:
[0082]
设定容忍偏差,判断偏差值是否小于容忍偏差值;
[0083]
经过判断,若偏差小于容忍偏差,则按照匹配记录中的交易电量进行结算;若偏差不小于容忍偏差,则按照实际供/用电量进行结算;
[0084]
通过以上偏差判断方式,进而得到结算电量。
[0085]
s6.匹配双方分别生成零知识证明,发送到区块链中验证,确认参与交易并完成结算。
[0086]
该步骤s6的具体过程为:
[0087]
购电用户依据实际供/用电记录,从其账户余额中减去交易费用;购电用户生成的零知识证明需要证明其对账户余额的更新,还要证明该购电用户参与了交易过程;
[0088]
售电用户依据实际供/用电记录,在其账户余额中加上交易费用;售电用户生成的零知识证明需要证明其对账户余额的更新,还要证明该售电用户参与了交易过程;
[0089]
另外,售电用户需要在区块链中减去交易电量,同时售电用户的发电记录也需要更新。
[0090]
本实施例优选采用zk-snark算法作为零知识证明算法。
[0091]
在对本发明具体算法过程说明之前,先介绍一下零知识证明和同态加密算法。
[0092]
零知识证明技术,指的是根据要证明的关系等式预设证明密钥gk及验证密钥vk,使用gk生成证明proof,使用vk验证proof的正确性。
[0093]
生成函数用gen(gk,data)表示;验证函数用ver(vk,data)表示。
[0094]
生成proof需要使用关系等式中包含的所有参数,而验证proof只能用公开的参数。
[0095]
同态加密技术,指的是非对称同态加密,即使用公钥pk进行加密,使用私钥sk进行解密。加密函数用enc(pk,data)表示;解密函数用dec(sk,data)表示。
[0096]
该基于区块链的能源交易隐私保护方法所提及的隐私保护处理,包括能源用户在区块链中的匿名资产,以及匿名交易计划。
[0097]
匿名资产是利用零知识证明技术实现的链上数据资产,这种数据资产不直接标明所有者的身份,所有者通过持有一组私密数据来获取该资产,并通过生成零知识证明来对外验证资产的所有权。匿名资产没有明确的身份标记,不能通过系统直接转账的方式进行资产转移。
[0098]
匿名资产的实现原理如图2所示,表征链上资产的数据被隐藏在一个哈希值当中。匿名资产可以用h表示,h的计算方法为:h=h(data||r)。
[0099]
data指的是表征该资产的具体数据,例如该资产为发电记录,则data应包含发电量等数据;r为一个随机的私密值,其作用为防止资产被暴力破解。
[0100]
由于匿名资产不带有身份标识,因此除所有者以外的用户无法从链上得知资产的
归属。
[0101]
匿名资产的使用规则为:
[0102]
用户根据资产中包含的数据生成零知识证明proof;
[0103]
在使用过程中附带该proof用于验证,共识过程中,其他用户将会计算该proof是否满足验证需要,满足则可以证明该用户拥有该项资产。
[0104]
例如:用户要使用发电记录,则该用户用发电记录g、发电量v、私密值r生成零知识证明proof,证明其满足的关系为:g=h(v||r)。
[0105]
所有参数中可以公开的仅仅为g和proof,其他用户在对该事务进行共识时,只需要使用g来验证proof的正确性,即可承认该用户对该匿名资产使用的合法性。
[0106]
考虑到某项资产使用后会有剩余,则剩余资产仍以该形式表示,用户需要为剩余资产生成新的私密值,该新资产同样需要证明。
[0107]
例如某用户账户余额b的数值为b,使用部分余额b
n
后,剩余余额b

的数值为b

,则该用户应当为剩余余额提供一个新的私密值r

,且证明这些数据满足如下关系:
[0108]
1)b=h(b||r);
[0109]
2)b

=h(b

||r

);
[0110]
3)b-b
n
=b


[0111]
对于该关系下生成的proof,其他用户可以用公开的b和b

来验证proof的正确性。
[0112]
匿名交易计划的实现原理如图3所示,主要有售电计划和购电计划两种类型,其结构是相似的,可以用p来表示,p的计算方法为:
[0113]
p=h(v||p||r);其中,v表示计划售/购电量;p表示计划售/购电价格;r为一个随机的私密值,其作用为防止资产被暴力破解。
[0114]
对于售电计划来说,其售电量不能超过该用户所拥有的发电量。售电用户要制定一个售电计划时,需要构造上述参数并生成零知识证明,证明其满足如下关系:
[0115]
1)g=h(v
g
||r
g
);
[0116]
2)p
s
=h(v
s
||p
s
||r
s
);
[0117]
3)v
g
>=v
s

[0118]
其中公开用于验证的参数为发电记录g和售电计划p
s

[0119]
对于购电计划来说,其购电计划的总费用不能超过该用户所拥有的余额。购电用户要制定一个购电计划,需要构造上述参数并生成零知识证明,证明其满足如下关系:
[0120]
1)b=h(b||r
b
);
[0121]
2)p
p
=h(v
p
||p
p
||r
p
);
[0122]
3)b>=v
p
×
p
p

[0123]
其中,公开用于验证的参数为账户余额b和购电计划p
p

[0124]
如图6所示,本实施例中基于区块链的能源交易隐私保护方法中的用户分为三类:
[0125]
第一类是普通用户,普通用户可以作为售电用户或者购电用户参与能源交易;
[0126]
第二类是管理者,即负责管理系统的密钥和参与隐私保护交易的处理和监督;
[0127]
第三类是硬件设备、充值接口,负责提供可靠的数据记录和资产。
[0128]
其中,普通用户拥有gk、vk和pk;管理者拥有全部类型的密钥,包括gk、vk、pk和sk,能够与普通用户进行数据分享;硬件设备、充值接口拥有pk,能够与普通用户进行数据分
享。
[0129]
从功能模块上来说,与本发明实施例中区块链的能源交易隐私保护方法相对应的区块链的能源交易隐私保护系统,大致分为以下四个功能模块:
[0130]
m1、匿名资产模块:
[0131]
用于记录所有用户的匿名资产,参与者为普通用户和硬件设备、充值接口。
[0132]
所述匿名资产,至少应包括发电记录和账户余额,对于某项匿名资产,只有该资产的所有者知道其明确数值且具有使用权,区块链中的其他用户则无法得知。
[0133]
该匿名资产模块的功能为:
[0134]
新增一项资产记录;查找某个特定的资产记录;删除使用过的资产记录。
[0135]
其中,匿名资产包括发电记录和账户余额,发电记录由相应的硬件设备接口上传存储;账户余额可以通过相关充值接口获取,也可以通过交易获取。
[0136]
m2、交易计划模块:
[0137]
用于用户制定并记录交易计划,参与者为售/购电用户。
[0138]
该交易计划模块的功能为:依据发电记录制定售电计划;依据账户余额制定购电计划。
[0139]
m3、交易匹配模块:
[0140]
用于完成购电和售电用户的最佳匹配,参与者为管理者、售/购电用户。
[0141]
该交易匹配模块的功能为:对系统中存在的售/购电计划执行匹配计算,完成最佳匹配;生成匹配记录;交易双方对匹配记录进行确认。
[0142]
m4、交易结算模块:
[0143]
用于完成购电用户与售电用户间的结算,其中购电用户根据实际用电记录支付费用,并生成支付记录,售电用户将支付费用转入自己的账户;
[0144]
交易结算模块的参与者为管理者、售/购电用户、硬件设备接口。
[0145]
该交易结算模块的功能为:上传实际供/用电记录;计算实际供/用电量与匹配记录中电量的偏差;购电用户支付费用;售电用户收取费用。
[0146]
本实施例中区块链指的是一般意义下的区块链技术。特殊地,出于该方法的目的需要,即隐私保护需要,该方法流程中未提及使用数字签名的步骤中将不包含数字签名。
[0147]
该基于区块链的能源交易隐私保护方法中所使用到的参数,除非直接说明其公开或存储于区块链中,默认只有操作者知晓,且使用过程不被区块链所记录。
[0148]
下面对利用零知识证明算法以及同态加密算法以实现本发明的具体算法过程进行说明:
[0149]
s1.售电用户结合自身的发电记录,制定售电计划,并根据发电记录和售电计划生成零知识证明,发送到区块链中进行验证并存储。
[0150]
售电用户拥有的发电量为v
g
,其发电记录g表示为:
[0151]
g=h(v
g
||r
g
);
[0152]
其中,r
g
表示一个随机的私密值;
[0153]
售电用户计划的出售电量为v
s
,售电价格为p
s
,其售电计划p
s
表示为:
[0154]
p
s
=h(v
s
||p
s
||r
s
)
[0155]
其中,r
s
表示一个随机的私密值;
[0156]
售电用户使用参数g、v
g
、r
g
、p
s
、v
s
、p
s
、r
s
生成零知识证明proof
s
,其生成方法为:
[0157]
proof
s
=gen
s
(gk,g,v
g
,r
g
,p
s
,v
s
,p
s
,r
s
);
[0158]
其中,gk表示证明秘钥;
[0159]
售电用户将发电记录g、售电计划p
s
以及零知识证明proof
s
发送到区块链中验证并存储,区块链中其他用户验证该售电计划p
s
是否合法的方法为:
[0160]
1)发电记录g为区块链中存在的发电记录;
[0161]
2)r=ver
s
(vk,g,p
s
,proof
s
)且r为真;
[0162]
其中,vk表示验证秘钥;验证通过后该售电计划p
s
合法,并存储到区块链中。
[0163]
同时,售电用户还要使用同态加密算法将出售电量v
s
、售电价格p
s
以及其他用于匹配计算的参数para
s
加密生成密文,密文的生成方法为:
[0164]
ct
s
=enc(pk,v
s
,p
s
,para
s
)
[0165]
其中,pk表示公钥,ct
s
表示售电计划密文;
[0166]
将生成的售电计划密文ct
s
与售电计划p
s
放在一起存储。
[0167]
s2.购电用户结合自身需求制定购电计划,并根据账户余额和购电计划生成零知识证明,发送到区块链中进行验证并存储。
[0168]
购电用户的账户余额b表示为:
[0169]
b=h(b||r
b
);
[0170]
其中,b表示账户余额b的数值,r
b
表示一个随机的私密值;
[0171]
购电用户计划的购买电量为v
p
,购电价格为p
p
,其购电计划p
p
表示为:
[0172]
p
p
=h(v
p
||p
p
||r
p
);
[0173]
其中,r
p
表示一个随机的私密值;
[0174]
购电用户使用参数b、b、r
b
、p
p
、v
p
、p
p
、r
p
生成零知识证明proof
p
,其生成方法为:
[0175]
proof
p
=gen
p
(gk,b,b,r
b
,p
p
,v
p
,p
p
,r
p
);
[0176]
其中,gk表示证明秘钥;
[0177]
购电用户将账户余额b、购电计划p
p
以及零知识证明proof
p
发送到区块链中验证并存储,区块链中其他用户验证该购电计划p
p
是否合法的方法为:
[0178]
1)账户余额b为区块链中存在的账户余额;
[0179]
2)r=ver
p
(vk,b,p
p
,proof
p
)且r为真;
[0180]
其中,vk表示验证秘钥;验证通过后该购电计划合法,并存储到区块链中;
[0181]
同时,购电用户还要使用同态加密算法将购买电量v
p
、购电价格p
p
以及其他用于匹配计算的参数para
p
加密生成购电计划密文,密文的生成方法为:
[0182]
ct
s
=enc(pk,v
p
,p
p
,para
p
)
[0183]
其中,pk表示公钥,ct
s
表示购电计划密文;
[0184]
将生成的购电计划密文ct
p
与购电计划p
p
放在一起存储。
[0185]
s3.管理者依据现有的售电计划和购电计划进行匹配计算,将加密匹配结果上传到区块链中进行存储,并将解密后的结果由链下告知双方。
[0186]
管理者进行匹配计算的方法为:
[0187]
对于一个购电计划p
p
,取一个售电计划p
s
,使用购电计划密文ct
p
和售电计划密文ct
s
进行安全计算,交易最佳匹配算法表示为f,则匹配计算的方法为:
[0188]
1)ct
r
=f(ct
p
,ct
s
);
[0189]
2)t=dec(sk,ct
r
);
[0190]
其中,ct
r
为加密的匹配结果,t为解密后的匹配结果,sk表示私钥;
[0191]
管理者重复以上匹配计算过程,直到所有售电计划均与该购电计划完成匹配计算,然后选取匹配结果最优的售电计划与该购电计划进行匹配;
[0192]
如图4所示,匹配记录mr表示为:mr=h(p
s
||p
p
||v
m
||p
m
||r
m
);
[0193]
其中,v
m
为交易电量,p
m
为交易价格,r
m
为私密值;
[0194]
管理者将匹配记录mr发送到区块链中存储,并将匹配记录的参数通过链下告知双方;
[0195]
管理者使用同态加密算法将交易电量v
m
加密生成密文,密文的生成方法为:
[0196]
ct
m
=enc(pk,v
m
);
[0197]
其中,pk表示公钥,ct
m
表示交易电量密文;
[0198]
将生成的交易电量密文ct
m
与匹配记录mr放在一起存储。
[0199]
s4.售电和购电用户分别生成零知识证明确认匹配记录,并上传到区块链中进行存储。
[0200]
匹配记录生成后不会立即生效,需要等待匹配双方(即交易双方)进行确认,任何一方不进行确认(不同意匹配结果),交易都不会进行下去。
[0201]
售电用户进行确认时需要证明自己是该匹配记录的售电方,而拥有售电计划的证明是拥有全部参数v
s
、p
s
、r
s
,因此:
[0202]
对于匹配记录中的售电计划p
s
,售电用户需要生成零知识证明proof
ms
证明如下关系:
[0203]
1)mr=h(p
s
||p
p
||v
m
||p
m
||r
m
);
[0204]
2)p
s
=h(v
s
||p
s
||r
s
);
[0205]
其中,mr和p
s
公开用于验证;零知识证明proof
ms
的生成方法为:
[0206]
proof
ms
=gen
ms
(gk,mr,p
s
,p
p
,v
m
,p
m
,r
m
,v
s
,p
s
,r
s
);
[0207]
其他用户验证该确认操作是否合法的方法为:
[0208]
1)匹配记录mr为区块链中存在的匹配记录;
[0209]
2)r=ver
ms
(vk,mr,p
s
,proof
ms
)且r为真;
[0210]
验证通过后,售电用户售电确认完成。
[0211]
购电用户进行确认时需要证明自己是该匹配记录的购电方,而拥有购电计划的证明是拥有全部参数v
p
、p
p
、r
p
,因此:
[0212]
对于匹配记录中的购电计划p
p
,购电用户需要生成零知识证明proof
mp
证明如下关系:
[0213]
1)mr=h(p
s
||p
p
||v
m
||p
m
||r
m
);
[0214]
2)p
p
=h(v
p
||p
p
||r
p
);
[0215]
其中,mr和p
p
公开用于验证;零知识证明proof
mp
的生成方法为:
[0216]
proof
mp
=gen
mp
(gk,mr,p
s
,p
p
,v
m
,p
m
,r
m
,v
p
,p
p
,r
p
);
[0217]
其他用户验证该确认操作是否合法的方法为:
[0218]
1)匹配记录mr为区块链中存在的匹配记录;
[0219]
2)r=ver
mp
(vk,mr,p
p
,proof
mp
)且r为真;
[0220]
验证通过后,购电用户购电确认完成。
[0221]
s5.售电用户和购电用户分别按照经双方确认的匹配记录进行供电和用电,得到实际供/用电记录,并与匹配记录进行比对,确定结算电量。
[0222]
实际供/用电记录由硬件设备接口提供并上传,如图5所示,实际供/用电记录ar表示为:
[0223]
ar=h(mr||v
a
||r
a
);
[0224]
其中,v
a
为实际供/用电量,r
a
为私密值,v
a
和r
a
与售电用户和购电用户共享;硬件设备接口使用同态加密算法将实际供/用电量v
a
加密生成密文,密文的生成方法为:
[0225]
ct
a
=enc(pk,v
a
);
[0226]
其中,ct
a
表示实际供/用电量密文;
[0227]
考虑到实际情况下用户用电很难与计划完全一致,管理者将实际供/用电量v
a
与匹配记录中的交易电量v
m
进行比对,以确定实际传输中的偏差是否在合理的范围内。
[0228]
偏差计算函数表示为dev,该偏差计算方法为:
[0229]
1)ct
d
=dev(ct
a
,ct
m
);
[0230]
2)d=dec(sk,ct
d
);
[0231]
其中,ct
d
表示加密的偏差结果,d表示解密的偏差结果;
[0232]
判断偏差是否在合理的范围内的方式为:
[0233]
设定容忍偏差σ,判断偏差d是否小于容忍偏差σ;经过判断:
[0234]
若偏差d小于容忍偏差σ,则按照匹配记录中的交易电量v
m
进行结算;若偏差d不小于容忍偏差σ,则按照实际供/用电量v
a
进行结算,并对实际交易过程中违规的一方进行处罚;
[0235]
最终,结算电量用v
f
表示。
[0236]
s6.双方生成零知识证明,并发送到区块链中进行验证,证明参与交易,并完成结算。
[0237]
购电用户依据实际供/用电记录,从自己的账户余额中减去交易费用;购电用户不仅需要证明其对账户余额的更新,还要证明购电用户参与了交易过程。
[0238]
其中,交易费用即结算电量v
f
与交易价格p
m
的乘积。
[0239]
因此,购电用户需要生成零知识证明proof
fp
,证明如下关系:
[0240]
1)b
p
=h(b
p
||r
bp
);
[0241]
2)b
p

=h(b
p

||r
bp

);
[0242]
3)b
p

=b
p-v
f
×
p
m

[0243]
4)mr=h(p
s
||p
p
||v
m
||p
m
||r
m
);
[0244]
5)ar=h(mr||v
a
||r
a
);
[0245]
6)v
f
=v
m
或v
a

[0246]
其中,b
p
表示账户余额b
p
的数值,b
p

表示表示账户余额b
p

的数值;r
bp
、r
bp

分别表示一个随机私密值;参数b
p
、b
p

、mr、ar公开用于验证;
[0247]
区块链中其他用户验证该确认操作是否合法的方法为:
[0248]
1)b
p
为区块链中存在的账户余额;
[0249]
2)ar为区块链中存在的实际供/用电记录;
[0250]
3)r=ver
fp
(vk,b
p
,mr,ar,b
p

,proof
fp
)且r为真;
[0251]
验证通过后账户余额b
p
更新为账户余额b
p

,购电用户付款完成;
[0252]
售电用户依据实际供/用电记录,在自己的账户余额中加上交易费用;售电用户不仅需要证明其对账户余额的更新,还要证明其参与了交易过程;
[0253]
此外,售电用户需要在区块链中减去交易的电量,发电记录也需要更新;
[0254]
因此,售电用户需要生成零知识证明proof
fs
,证明如下关系:
[0255]
1)b
s
=h(b
s
||r
bs
);
[0256]
2)b
s

=h(b
s

||r
bs

);
[0257]
3)b
s

=b
s
+v
f
×
p
m

[0258]
4)mr=h(p
s
||p
p
||v
m
||p
m
||r
m
);
[0259]
5)ar=h(mr||v
a
||r
a
);
[0260]
6)v
f
=v
m
或v
a

[0261]
7)g=h(v
g
||r
g
);
[0262]
8)g

=h(v
g

||r
g

);
[0263]
9)v
g

=v
g-v
f

[0264]
其中,b
s
表示表示账户余额b
s
的数值,b
s

表示账户余额b
s

的数值;r
bs
、r
bs

分别表示一个随机私密值;参数b
s
、b
s

、mr、ar、g、g

公开用于验证;
[0265]
区块链中其他用户验证该确认操作是否合法的方法为:
[0266]
1)b
s
为区块链中存在的账户余额;
[0267]
2)ar为区块链中存在的实际供/用电记录;
[0268]
3)g为区块链中存在的发电记录;
[0269]
4)r=ver
fs
(vk,b
s
,b
s

,mr,ar,g,g

,proof
fs
)且r为真;
[0270]
验证通过后,账户余额b
s
更新为b
s

,发电记录g更新为g

,售电用户收款完成。
[0271]
由以上算法过程不难看出,本发明方法使用零知识证明算法,能够在实现保护用户身份隐私的情况下,对区块链能源交易中各个流程进行验证;
[0272]
同时,本发明方法还使用同态加密算法,能够在实现保护数据隐私的同时,支持用户之间的匹配计算,在不泄露具体数值的情况下完成最优匹配;
[0273]
本发明方法通过以上零知识证明算法与同态加密算法的组合,既保证用户在区块链中存储的数据不被探知和分析,又能够保护能源交易过程中双方用户的身份隐私。
[0274]
当然,以上说明仅仅为本发明的较佳实施例,本发明并不限于列举上述实施例,应当说明的是,任何熟悉本领域的技术人员在本说明书的教导下,所做出的所有等同替代、明显变形形式,均落在本说明书的实质范围之内,理应受到本发明的保护。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1