首页 / 专利库 / 银行与财务事项 / 区块链处理实体 / 一种基于区块链的智能电动汽车电网安全支付系统及方法

一种基于链的智能电动汽车电网安全支付系统及方法

阅读:823发布:2020-07-29

专利汇可以提供一种基于链的智能电动汽车电网安全支付系统及方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种基于 区 块 链 的智能电动 汽车 电网 安全 支付系统 及方法,属于V2G网络的支付领域。本发明的系统按照 角 色划分,包括电动汽车用户、注册机构(RA)和区块链网络。按照功能划分,包括注册模块、支付执行模块和数据共享模块。基于区块链技术和 密码学 技术,采用特殊的注册机制、验证机制和新支付机制。本发明所述方法可以解决V2G网络支付领域的数据共享和用户的身份隐私保护问题,可以实现有效监管与隐私保护。能够降低外部攻击威胁,实现数据共享,更加符合实际的应用场景。能够支持有效的审计,能在支持审计的条件下保护隐私数据。能够兼顾交易数据共享和防止隐私信息泄露两方面的需求。,下面是一种基于链的智能电动汽车电网安全支付系统及方法专利的具体信息内容。

1.一种基于链的智能电动汽车电网安全支付系统,其特征在于:按照功能划分,包括注册模块、支付执行模块和数据共享模块;
其中,注册模块的主要任务是将用户自行生成的账号提交给RA进行验证和注册;
其中,支付执行模块确保付款方能够顺利支付电费,收款方能够验证到账情况;在本方法中,即支付电费用区块链交易实现,因此支付执行模块执行的过程就是一笔区块链交易被写入全局账本的过程;
其中,数据共享模块实现支付数据的共享方式;本方案中所有的合法交易记录都将写入全局账本;区块链系统中全局账本是共享给所有参与者的,因此任意参与者都可以通过运行区块链客户端运维本地全局账本,并与网络中全局账本保持同步;当需要查询特定交易时,只需直接查询本地全局账本即可;
支付系统按照色划分,包括电动汽车用户、注册机构(RA)和区块链网络;
其中,电动汽车用户指支付系统中的用户包括电动车以及参与交易过程的实体,此实体可以是充电设施,他们既可以作为支付系统中的付款方,也可以作为收款方;
每一个电动汽车用户通过安装区块链客户端来处理交易信息和维护全局账本;大多数现代电动车的计算和通信功能可以满足运行区块链客户端的需求;
其中,注册机构(RA):RA代表一个获得授权的仲裁机构,负责账号注册和交易记录审计;
RA通过运行一个区块链客户端来维护包含所有交易信息的全局账本;RA还运维一个证书库,证书库中存储了所有合法账号以及对应的身份信息;RA被认为是可信实体,不仅能够查看所有交易记录,还能够获得任意匿名交易记录对应的交易者身份信息;
其中,区块链网络:区块链网络指区块链基础设施,包含相关的通信机制和共识机制;
主要对交易格式和交易验证方法进行改进,其他部分和传统区块链网络类似。
2.一种基于区块链的智能电动汽车电网安全支付方法,其特征在于:包括如下步骤:
步骤1:用户账号注册与验证,具体包括如下子步骤:
步骤1.1用户自行生成账号,具体为:用户使用非对称加密算法生成密钥对(Pk_user;
Sk_user);
其中,非对称加密算法可以采用RSA及ECC为主的算法;
步骤1.2将步骤1.1用户生成的Pk_user以及用户的身份信息提交给RA进行签名;
其中,用户的身份信息是指身份证或者驾驶证为主的信息;
步骤1.2中的RA进行签名,具体为:RA检查完身份信息后,使用RA的私钥Sk_RA对用户的Pk_user进行签名,输出δ=Sign(Sk_RA;Pk_user);
其中,Sign是ECDSA数字签名机制中的签名函数,可以从OPENSSL为主的密码库中获得;
步骤1.3将步骤1.2输出的签名信息δ发送给用户;
步骤1.4RA存储用户信息,具体为:RA在其维护的证书库中保存用户的合法账号和用户的身份信息;
其中,RA的证书库中保存的用户的合法账号的格式具体表示为account=(Pk_user,δ);
步骤1.5用户使用Pk_user和δ合成合法账号;
步骤1.6用户进行交易时,付款方验证account是否合法;
其中,付款方是交易过程中的付款的用户;
付款方验证account是否合法具体通过v=Verify(Pk_RA;account.Pk_user;account.δ)实现;
其中,Verify是ECDSA数字签名机制中的验证函数,可以从OPENSSL为主的密码库中获得;Pk_RA是RA的公钥,RA负责公开发布此参数,任何用户都可以从公开渠道获得Pk_RA;
account.Pk_user是待验证账号的公钥,任何用户都可以从账号(account)中直接获得account.Pk_user;account.δ是待验证账号的签名,任何用户都可以从账号(account)中直接获得account.δ;
当输出的v=1代表签名是合法的,跳至步骤2;
否则,v不等于1,表明签名无效,账号account属于非法账号,跳至步骤1.1;
其中,步骤1.1到步骤1.6用户一次性向RA申请合法账号,并在使用完之后进行重复申请;
其中,用户一次性向RA申请合法账号的个数大于等于1个;
步骤2:电费支付;
其中,电费支付采用区块链交易实现,因此,电费支付的过程就是一笔区块链交易被写入全局账本的过程,电费支付需要确保付款方能够顺利支付电费,收款方能够验证到账情况,收款方为每次交易生成不同的账号以便隐藏交易规律;收款方是交易过程中的收款的用户;
其中,账号和合法账号都表示为:account=(Pk_user,δ);
其中,合法账号是指account=(Pk_user,δ)中的δ是RA生成的,是经过了RA验证;
其中,步骤2中的账号是指account=(Pk_user,δ)中的δ要么是RA生成的,否则就是伪造的;
步骤2,具体包括如下子步骤:
步骤2.1初始化发送次数n=1,并设定最大发送次数Nmax;
其中,Nmax的数值大于等于1小于5;
步骤2.2收款方将账号和电费信息发送给付款方;
其中,账号是account=(Pk_user,δ);
其中,电费信息包括单价和总金额;其中,总金额是收款方基于单价计算出来的电费总价格;
步骤2.3付款方接收收款方在步骤2.2发送的账号和电费信息,付款方按照步骤1.6验证收款方的账号是否合法,具体为:
付款方从公开渠道获得RA的公钥Pk_RA,再计算Verify(Pk_RA;account.Pk_user;
account.δ)函数的值,当输出的函数值为1代表签名是合法的,跳至步骤2.5;
否则,输出的函数值不等于为1,表明签名无效,收款方的账号属于非法账号,则付款方拒绝收款方的支付请求,给收款方返回“收款方的账号是非法的”这一消息,跳至步骤2.4;
步骤2.4收款方再将账号和电费信息发送给付款方,将n更新为n+1,并判断n是否大于等于Nmax,根据判断结果决定顺序执行还是跳至步骤1.1,具体为:若n大于等于Nmax,表明已经重新发送了Nmax次,跳至步骤1.1;若n小于Nmax,表明未达到重新发送Nmax次,跳至步骤2.4;
步骤2.5付款方利用区块链客户端创建一笔区块链交易;
其中,区块链客户端简称为客户端;
其中,一笔区块链交易格式包含3部分:源地址区域、价格区域和目的地址区域;
其中,源地址区域包含交易输入信息,源地址中的输入信息不是直接列出付款者的账号,而是指向前一个交易的一个输出信息,被表示为signature>;
其中,交易输入信息的个数的大于等于1个;
其中,sn_sf代表当前输入信息在交易源地址区域中的序号,pre_txhash是前一个交易的txhash,可以通过此哈希值找到当前输入的来源交易,pre_sn_df是指当前输入信息在前一个交易目的地址区域中对应的序号,signature是前一个交易中对应账号所有者的签名;
任意用户都可以通过验证签名的合法性检测当前输入信息是否经过合法授权;
其中,价格区域包含单价和总金额;
其中,单价记录当前交易对应时刻的电价格,此数据可以被用于分析电价的变化趋势;
其中,总金额代表当前交易一共支付的费用;支付系统进行交易验证过程时,将验证所有的输入金额是否大于或等于总金额;
其中,收款方的账号和收款金额组成交易的输出信息,被表示为
其中,sn_df代表此输出信息在目的地址区域中的序号,account代表收款方的账号,amount代表收款金额;支付系统要求所有的输出金额之和等于交易输入金额之和;当输入金额之和超过当前交易的电费总金额时,付款方在创建交易时会将自己的一个账号列在目的地址区域,以便接收找零资金;
Signature生成过程表示为:signature=Sk(tx);Sk表示付款方在交易源地址区域每个输入account对应的私钥;tx表示交易信息中的所有数据;每一个签名都是付款方用自己的私钥对当前交易的所有元素签名;交易签名过程具体如下所示:
其中,signature=Sk_user(txid,txhash,SF,PF,DF)
SF={[sn_sf,pre_txhash,pre_sn_df];[sn_sf,pre_txhash,pre_sn_df]...}PF={unit price,total amount}
DF={[sn_df,account,amount];[sn_df,account,amount]...};
步骤2.5又具体包括如下子步骤:
步骤2.5.1付款方在客户端中输入步骤2.2接收到的电费信息;
步骤2.5.2付款方在客户端中输入步骤2.2接收到的收款方的账号;
步骤2.5.3付款方客户端自动选择付款方已有的账号作为交易的输入;
步骤2.5.4付款方客户端验证交易所有的输入金额是否大于或等于总金额,并根据判断结果进行相应操作:
2.5.4A当交易所有的输入金额大于或等于总金额,表示交易金额合法,跳至步骤2.6;
2.5.4B否则,交易所有的输入金额小于总金额,表示交易金额不合法;客户端提示付款方“账号金额不足”,跳至步骤2.5;
步骤2.6付款方发送交易并持续检查交易状态;
步骤2.6.1付款方利用客户端发送交易到区块链网络中;
其中,区块链交易进入区块链网络后,将按照区块链数据传播机制泛洪到网络中的所有节点
步骤2.6.2付款方将持续检查自己的全局账本,直到交易状态在客户端显示为完成状态;其中,完成状态的交易的头部包含1个唯一的交易ID,交易ID表示为:txid,和一个唯一的交易哈希值,交易哈希值表示为:txhash;其中,哈希值用于作为交易的索引值;
步骤2.6.3付款方将交易ID发送给收款方;
步骤2.7区块链网络节点验证交易;
其中,区块链网络节点简称为节点;节点验证内容包括四个方面:验证交易中所有的账号是否合法、交易所有输入信息中的签名信息是否合法、交易的所有输入的总金额是否大于或等于输出总金额和交易格式是否满足规定的格式;
步骤2.7又具体包括如下子步骤:
步骤2.7.1节点验证交易中所有的账号是否合法,具体为:
其中,交易中所有的账号包括输入账号和输出账号,且输入账号的个数大于等于1、输出账号的个数大于等于1;
这里例如收款方账号为:account_payee=(Pk_user_payee,δ_payee);付款方账号为:
account_payer=(Pk_user_payer,δ_payer);
节点从公开渠道获得RA的公钥Pk_RA;
其中,节点验证收款方账号是否合法:计算Verify(Pk_RA;account_payee.Pk_user_payee;account_payee.δ_payee)的值,当输出的v=Verify(Pk_RA;account_payee.Pk_user_payee;account_payee.δ_payee)=1代表账号合法,跳至步骤2.7.2;否则,v不等于1,表明账号无效,账号account_payee属于非法账号,跳至步骤2.8;
其中,节点验证付款方账号是否合法:计算Verify(Pk_RA;account_payer.Pk_user_payer;account_payer.δ_payer)的值,当输出的v=Verify(Pk_RA;account_payer.Pk_user_payer;account_payer.δ_payer)=1代表账号合法,跳至步骤2.7.2;否则,v不等于1,表明账号无效,账号account_payer属于非法账号,跳至步骤2.8;
步骤2.7.2节点验证交易所有输入信息中的签名信息是否合法,并根据签名信息合法与否,进行相关操作;节点验证交易所有输入信息中的签名信息是否合法的具体过程为:节点从交易的输入信息对应账号中提取验证签名所需要的公钥信息;
其中,交易签名验证过程:v=Verify(Pk_RA;signature)实现;
其中,交易的输入信息对应的账号是由输入信息中的pre_txhash和pre_sn_df参数指定
节点根据签名信息合法与否,进行相关操作,具体为:若签名信息合法,跳至步骤
2.7.3;若签名信息不合法,跳至步骤2.8;
步骤2.7.3节点验证交易的所有输入的总金额是否大于或等于输出总金额,具体过程为:节点计算交易的所有输入的总金额记为Sum_input,节点计算交易输出的总金额Sum_output,节点比较计算结果Sum_input和Sum_output的差值Value_bal;并根据输入的总金额是否大于等于输出总金额的判断结果进行如下操作:
2.7.3A若输入的总金额大于等于输出总金额,跳至步骤2.7.4;
2.7.3B若输入的总金额小于输出总金额,跳至步骤2.8;
步骤2.7.4节点验证交易的交易格式是否合法,并根据交易格式合法与否,进行相关操作;节点验证交易格式是否合法的具体过程为:节点比较收到的交易的格式和规定的格式是否一致;节点根据交易的交易格式是否合法,进行相关操作,具体为:若节点收到的交易的格式和规定的格式一致,表示交易的交易格式合法,跳至步骤2.9;若节点收到的交易的格式和规定的格式不一致交易的交易格式不合法,跳至步骤2.8;
步骤2.8节点直接丢弃此交易,不将此交易转播给节点的邻居节点,跳至步骤4;
步骤2.9节点转播交易给自己的邻居节点;
步骤2.10矿工节点挖矿,并将交易写入全局账本;
其中,矿工节点是一种特殊的区块链网络节点;
步骤2.10.1矿工节点验证交易;
步骤2.10.2矿工节点完成共识机制的计算问题,将交易写入全局账本;其中,交易被写入全局账本,这笔交易就变为完成状态;
步骤2.10.3经过步骤2.10.2后,全局账本变化;
步骤3:付款方查询交易并提供服务;
步骤3.1付款方客户端同步全局账本的数据;
其中,付款方客户端按照询问请求模式同步全局账本;
步骤3.1.1付款方客户端加入区块链网络;
步骤3.1.2付款方客户端向邻居节点询问邻居节点的最新的区块号Cur_Net_Block_ID;
步骤3.1.3付款方客户端比较自己本地全局账本中存储的最新的区块号Local_Block_ID和Cur_Net_Block_ID的大小;并根据Local_Block_ID和Cur_Net_Block_ID的大小,进行相关操作:
3.1.3A如果Cur_Net_Block_ID大于Local_Block_ID,表示区块链网络中全局账本变化,付款方客户端向邻居节点请求从Local_Block_ID+1到Cur_Net_Block_ID的区块数据;
邻居节点向付款方客户端发送请求的数据;
3.1.3B如果Cur_Net_Block_ID小于或等于Local_Block_ID,表示付款方客户端的本地全局账本已经是最新的全局账本;
步骤3.2收款方验证交易并提供服务;
步骤3.2.1收款方在客户端输入在步骤2.6.3接收到的交易ID,查询交易的具体内容和状态;
步骤3.2.2收款方客户端显示所查询交易的具体信息;
具体信息包括:交易的交易ID(txid)、交易哈希值(txhash)、交易格式中源地址区域、价格区域和目的地址区域为主的信息;
步骤3.2.3收款方查看交易中的收款方账号是否是自己持有的账号;若有自己的账号,就查看付款方对这个账号支付了多少金额;跳至步骤3.2.4;若交易中的收款方账号没有自己持有的账号,则拒绝提供服务;
步骤3.2.4收款方根据付款方支付给自己的金额和电费单价,提供对应量的电力传输服务;
其中,收款方提供的服务可以是电力传输为主的服务;
步骤4:收款方和付款方结束交易。

说明书全文

一种基于链的智能电动汽车电网安全支付系统及方法

技术领域

[0001] 本发明涉及一种基于区块链的智能电动汽车电网安全支付系统及方法,属于V2G网络的支付领域。技术背景
[0002] V2G网络中电动汽车具有电能消耗者和电能提供者的双重身份,能够根据电网需求从电网获取电能或者向电网释放多余电能,不仅能够帮助智能电网完成调峰储能任务,还能够为电动车持有人赚取收入,因此V2G网络正在快速成为未来智能电网的重要发展方向。
[0003] 在V2G网络中,所有参与者(包括电动车和电网)之间的双向电能传输伴随着大量的电费支付记录,这些支付数据经过分析之后可以用于提供附加服务,例如电能负载预测、电费价格预测、能耗最优调度以及电动车参与辅助服务的行为建模。但是,支付记录共享有可能带来隐私数据泄露威胁,包括用户身份信息、位置信息以及电动车的充放电规律等。因此,非常有必要认真研究V2G网络中数据共享和隐私保护的平衡关系。
[0004] 然而,传统的支付机制(例如信用卡和电子支付)以及V2G网络中现有的匿名支付机制,通常是中心化架构的,数据隐私依赖于处理支付流程的可信节点的安全性。一旦可信节点遭受攻击,支付系统将面临单点崩溃的险,而且在支付数据需要共享给多方实体进行分析的场景下,这种匿名支付机制很难提供相同的隐私保护性能。
[0005] 因此,为了能够同时满足V2G支付场景中用户身份隐私保护和数据共享的需求,必须设计一种合适的匿名支付机制。
[0006] 在V2G网络中,电动车通常通过无线网络连接LAG。因此,支付信息有可能被攻击者窃取。由于支付记录将共享给所有参与者,潜在的攻击者有可能推测电动车的敏感信息,例如充电位置和充电周期。此外,攻击者有可能通过与恶意用户合谋从支付记录中获得隐私信息。例如,分布式充电模式中,一个恶意的电动车车主有可能将自己的位置信息和支付记录泄露给攻击者,然后攻击者就可以推测出交易中的另外一个电动车的位置信息。此外,攻击者有可能通过创建不可靠支付欺骗诚实用户,包括伪造交易和双重支付(即同一笔数字货币支付两次或更多次)。在一个没有可信第三方节点的分布式系统中,很难检测和拒绝不可靠支付。

发明内容

[0007] 本发明的目的在于克服现有V2G网络支付领域的支付机制很难保证所需的数据共享和隐私保护需求的问题,提出了一种基于区块链的智能电动汽车电网安全支付系统及方法。
[0008] 一种基于区块链的智能电动汽车电网安全支付系统及方法包括一种基于区块链的智能电动汽车电网安全支付系统及一种基于区块链的智能电动汽车电网安全支付方法;
[0009] 其中,一种基于区块链的智能电动汽车电网安全支付系统,简称支付系统;一种基于区块链的智能电动汽车电网安全支付方法,简称本方法;
[0010] 支付系统按照功能划分,包括注册模块、支付执行模块和数据共享模块;
[0011] 其中,注册模块的主要任务是将用户自行生成的账号提交给RA进行验证和注册;
[0012] 其中,支付执行模块确保付款方能够顺利支付电费,收款方能够验证到账情况;在本方法中,即支付电费用区块链交易实现,因此支付执行模块执行的过程就是一笔区块链交易被写入全局账本的过程;
[0013] 其中,数据共享模块实现支付数据的共享方式;本方案中所有的合法交易记录都将写入全局账本;区块链系统中全局账本是共享给所有参与者的,因此任意参与者都可以通过运行区块链客户端运维本地全局账本,并与网络中全局账本保持同步;当需要查询特定交易时,只需直接查询本地全局账本即可;
[0014] 支付系统按照色划分,包括电动汽车用户、注册机构(RA)和区块链网络;
[0015] 其中,电动汽车用户指支付系统中的用户包括电动车以及参与交易过程的实体,此实体可以是充电设施,他们既可以作为支付系统中的付款方,也可以作为收款方;
[0016] 每一个电动汽车用户通过安装区块链客户端来处理交易信息和维护全局账本;大多数现代电动车的计算和通信功能可以满足运行区块链客户端的需求;
[0017] 其中,注册机构(RA):RA代表一个获得授权的仲裁机构,负责账号注册和交易记录审计;
[0018] RA通过运行一个区块链客户端来维护包含所有交易信息的全局账本;RA还运维一个证书库,证书库中存储了所有合法账号以及对应的身份信息;RA被认为是可信实体,不仅能够查看所有交易记录,还能够获得任意匿名交易记录对应的交易者身份信息;
[0019] 其中,区块链网络:区块链网络指区块链基础设施,包含相关的通信机制和共识机制;主要对交易格式和交易验证方法进行改进,其他部分和传统区块链网络类似;
[0020] 一种基于区块链的智能电动汽车电网安全支付方法,包括如下步骤:
[0021] 步骤1:用户账号注册与验证,具体包括如下子步骤:
[0022] 步骤1.1用户自行生成账号,具体为:用户使用非对称加密算法生成密钥对(Pk_user;Sk_user);
[0023] 其中,非对称加密算法可以采用RSA及ECC为主的算法;
[0024] 步骤1.2将步骤1.1用户生成的Pk_user以及用户的身份信息提交给RA进行签名;
[0025] 其中,用户的身份信息是指身份证或者驾驶证为主的信息;
[0026] 其中,RA进行签名,具体为:RA检查完身份信息后,使用RA的私钥Sk_RA对用户的Pk_user进行签名,输出δ=Sign(Sk_RA;Pk_user);
[0027] 其中,Sign是ECDSA数字签名机制中的签名函数,可以从OPENSSL为主的密码库中获得;
[0028] 步骤1.3将步骤1.2输出的签名信息δ发送给用户;
[0029] 步骤1.4RA存储用户信息,具体为:RA在其维护的证书库中保存用户的合法账号和用户的身份信息;
[0030] 其中,RA的证书库中保存的用户的合法账号的格式具体表示为account=(Pk_user,δ);
[0031] 步骤1.5用户使用Pk_user和δ合成合法账号;
[0032] 步骤1.6用户进行交易时,付款方验证account是否合法;
[0033] 其中,付款方是交易过程中的付款的用户;
[0034] 付款方验证account是否合法具体通过v=Verify(Pk_RA;account.Pk_user;account.δ)实现;
[0035] 其中,Verify是ECDSA数字签名机制中的验证函数,可以从OPENSSL为主的密码库中获得;Pk_RA是RA的公钥,RA负责公开发布此参数,任何用户都可以从公开渠道获得Pk_RA;account.Pk_user是待验证账号的公钥,任何用户都可以从账号(account)中直接获得account.Pk_user;account.δ是待验证账号的签名,任何用户都可以从账号(account)中直接获得account.δ;
[0036] 当输出的v=1代表签名是合法的,跳至步骤2;
[0037] 否则,v不等于1,表明签名无效,账号account属于非法账号,跳至步骤1.1;
[0038] 其中,步骤1.1到步骤1.6用户一次性向RA申请合法账号,并在使用完之后进行重复申请;
[0039] 其中,用户一次性向RA申请合法账号的个数大于等于1个;
[0040] 步骤2:电费支付;
[0041] 其中,电费支付采用区块链交易实现,因此,电费支付的过程就是一笔区块链交易被写入全局账本的过程,电费支付需要确保付款方能够顺利支付电费,收款方能够验证到账情况,收款方为每次交易生成不同的账号以便隐藏交易规律;收款方是交易过程中的收款的用户;
[0042] 其中,账号和合法账号都表示为:account=(Pk_user,δ);
[0043] 其中,合法账号是指account=(Pk_user,δ)中的δ是RA生成的,是经过了RA验证;
[0044] 其中,步骤2中的账号是指account=(Pk_user,δ)中的δ要么是RA生成的,否则就是伪造的;
[0045] 步骤2,具体包括如下子步骤:
[0046] 步骤2.1初始化发送次数n=1,并设定最大发送次数Nmax;
[0047] 其中,Nmax的数值大于等于1小于5;
[0048] 步骤2.2收款方将账号和电费信息发送给付款方;
[0049] 其中,账号是account=(Pk_user,δ);
[0050] 其中,电费信息包括单价和总金额;其中,总金额是收款方基于单价计算出来的电费总价格;
[0051] 步骤2.3付款方接收收款方在步骤2.2发送的账号和电费信息,付款方按照步骤1.6验证收款方的账号是否合法,具体为:
[0052] 付款方从公开渠道获得RA的公钥Pk_RA,再计算Verify(Pk_RA;account.Pk_user;account.δ)函数的值,当输出的函数值为1代表签名是合法的,跳至步骤2.5;
[0053] 否则,输出的函数值不等于为1,表明签名无效,收款方的账号属于非法账号,则付款方拒绝收款方的支付请求,给收款方返回“收款方的账号是非法的”这一消息,跳至步骤2.4;
[0054] 步骤2.4收款方再将账号和电费信息发送给付款方,将n更新为n+1,并判断n是否大于等于Nmax,根据判断结果决定顺序执行还是跳至步骤1.1,具体为:若n大于等于Nmax,表明已经重新发送了Nmax次,跳至步骤1.1;若n小于Nmax,表明未达到重新发送Nmax次,跳至步骤2.4;
[0055] 步骤2.5付款方利用区块链客户端创建一笔区块链交易;
[0056] 其中,区块链客户端简称为客户端;
[0057] 其中,一笔区块链交易格式包含3部分:源地址区域、价格区域和目的地址区域;
[0058] 其中,源地址区域包含交易输入信息,源地址中的输入信息不是直接列出付款者的账号,而是指向前一个交易的一个输出信息,被表示为
[0059] 其中,交易输入信息的个数的大于等于1个;
[0060] 其中,sn_sf代表当前输入信息在交易源地址区域中的序号,pre_txhash是前一个交易的txhash,可以通过此哈希值找到当前输入的来源交易,pre_sn_df是指当前输入信息在前一个交易目的地址区域中对应的序号,signature是前一个交易中对应账号所有者的签名;任意用户都可以通过验证签名的合法性检测当前输入信息是否经过合法授权;
[0061] 其中,价格区域包含单价和总金额;
[0062] 其中,单价记录当前交易对应时刻的电价格,此数据可以被用于分析电价的变化趋势;
[0063] 其中,总金额代表当前交易一共支付的费用;支付系统进行交易验证过程时,将验证所有的输入金额是否大于或等于总金额;
[0064] 其中,收款方的账号和收款金额组成交易的输出信息,被表示为
[0065] 其中,sn_df代表此输出信息在目的地址区域中的序号,account代表收款方的账号,amount代表收款金额;支付系统要求所有的输出金额之和等于交易输入金额之和;当输入金额之和超过当前交易的电费总金额时,付款方在创建交易时会将自己的一个账号列在目的地址区域,以便接收找零资金;
[0066] Signature生成过程表示为:signature=Sk(tx);Sk表示付款方在交易源地址区域每个输入account对应的私钥;tx表示交易信息中的所有数据;每一个签名都是付款方用自己的私钥对当前交易的所有元素签名;交易签名过程具体如下所示:
[0067] 其中,signature=Sk_user(txid,txhash,SF,PF,DF)
[0068] SF={[sn_sf,pre_txhash,pre_sn_df];[sn_sf,pre_txhash,pre_sn_df]...}[0069] PF={unit price,total amount}
[0070] DF={[sn_df,account,amount];[sn_df,account,amount]...};
[0071] 步骤2.5又具体包括如下子步骤:
[0072] 步骤2.5.1付款方在客户端中输入步骤2.2接收到的电费信息;
[0073] 步骤2.5.2付款方在客户端中输入步骤2.2接收到的收款方的账号;
[0074] 步骤2.5.3付款方客户端自动选择付款方已有的账号作为交易的输入;
[0075] 步骤2.5.4付款方客户端验证交易所有的输入金额是否大于或等于总金额,并根据判断结果进行相应操作:
[0076] 2.5.4A当交易所有的输入金额大于或等于总金额,表示交易金额合法,跳至步骤2.6;
[0077] 2.5.4B否则,交易所有的输入金额小于总金额,表示交易金额不合法;客户端提示付款方“账号金额不足”,跳至步骤2.5;
[0078] 步骤2.6付款方发送交易并持续检查交易状态;
[0079] 步骤2.6.1付款方利用客户端发送交易到区块链网络中;
[0080] 其中,区块链交易进入区块链网络后,将按照区块链数据传播机制泛洪到网络中的所有节点;
[0081] 步骤2.6.2付款方将持续检查自己的全局账本,直到交易状态在客户端显示为完成状态;其中,完成状态的交易的头部包含1个唯一的交易ID,交易ID表示为:txid,和一个唯一的交易哈希值,交易哈希值表示为:txhash;其中,哈希值用于作为交易的索引值;
[0082] 步骤2.6.3付款方将交易ID发送给收款方;
[0083] 步骤2.7区块链网络节点验证交易;
[0084] 其中,区块链网络节点简称为节点;节点验证内容包括四个方面:验证交易中所有的账号是否合法、交易所有输入信息中的签名信息是否合法、交易的所有输入的总金额是否大于或等于输出总金额和交易格式是否满足规定的格式;
[0085] 步骤2.7又具体包括如下子步骤:
[0086] 步骤2.7.1节点验证交易中所有的账号是否合法,具体为:
[0087] 其中,交易中所有的账号包括输入账号和输出账号,且输入账号的个数大于等于1、输出账号的个数大于等于1;
[0088] 这里例如收款方账号为:account_payee=(Pk_user_payee,δ_payee);付款方账号为:account_payer=(Pk_user_payer,δ_payer);
[0089] 节点从公开渠道获得RA的公钥Pk_RA;
[0090] 其中,节点验证收款方账号是否合法:计算Verify(Pk_RA;account_payee.Pk_user_payee;account_payee.δ_payee)的值,当输出的v=Verify(Pk_RA;account_payee.Pk_user_payee;account_payee.δ_payee)=1代表账号合法,跳至步骤2.7.2;否则,v不等于1,表明账号无效,账号account_payee属于非法账号,跳至步骤2.8;
[0091] 其中,节点验证付款方账号是否合法:计算Verify(Pk_RA;account_payer.Pk_user_payer;account_payer.δ_payer)的值,当输出的v=Verify(Pk_RA;account_payer.Pk_user_payer;account_payer.δ_payer)=1代表账号合法,跳至步骤2.7.2;否则,v不等于1,表明账号无效,账号account_payer属于非法账号,跳至步骤2.8;
[0092] 步骤2.7.2节点验证交易所有输入信息中的签名信息是否合法,并根据签名信息合法与否,进行相关操作;节点验证交易所有输入信息中的签名信息是否合法的具体过程为:节点从交易的输入信息对应账号中提取验证签名所需要的公钥信息;
[0093] 其中,交易签名验证过程:v=Verify(Pk_RA;signature)实现;
[0094] 其中,交易的输入信息对应的账号是由输入信息中的pre_txhash和pre_sn_df参数指定
[0095] 节点根据签名信息合法与否,进行相关操作,具体为:若签名信息合法,跳至步骤2.7.3;若签名信息不合法,跳至步骤2.8;
[0096] 步骤2.7.3节点验证交易的所有输入的总金额是否大于或等于输出总金额,具体过程为:节点计算交易的所有输入的总金额记为Sum_input,节点计算交易输出的总金额Sum_output,节点比较计算结果Sum_input和Sum_output的差值Value_bal;并根据输入的总金额是否大于等于输出总金额的判断结果进行如下操作:
[0097] 2.7.3A若输入的总金额大于等于输出总金额,跳至步骤2.7.4;
[0098] 2.7.3B若输入的总金额小于输出总金额,跳至步骤2.8;
[0099] 步骤2.7.4节点验证交易的交易格式是否合法,并根据交易格式合法与否,进行相关操作;节点验证交易格式是否合法的具体过程为:节点比较收到的交易的格式和规定的格式是否一致;节点根据交易的交易格式是否合法,进行相关操作,具体为:若节点收到的交易的格式和规定的格式一致,表示交易的交易格式合法,跳至步骤2.9;若节点收到的交易的格式和规定的格式不一致交易的交易格式不合法,跳至步骤2.8;
[0100] 步骤2.8节点直接丢弃此交易,不将此交易转播给节点的邻居节点,跳至步骤4;
[0101] 步骤2.9节点转播交易给自己的邻居节点;
[0102] 步骤2.10矿工节点挖矿,并将交易写入全局账本;
[0103] 其中,矿工节点是一种特殊的区块链网络节点;
[0104] 步骤2.10.1矿工节点验证交易;
[0105] 步骤2.10.2矿工节点完成共识机制的计算问题,将交易写入全局账本;其中,交易被写入全局账本,这笔交易就变为完成状态;
[0106] 步骤2.10.3经过步骤2.10.2后,全局账本变化;
[0107] 步骤3:付款方查询交易并提供服务;
[0108] 步骤3.1付款方客户端同步全局账本的数据;
[0109] 其中,付款方客户端按照询问请求模式同步全局账本;
[0110] 步骤3.1.1付款方客户端加入区块链网络;
[0111] 步骤3.1.2付款方客户端向邻居节点询问邻居节点的最新的区块号Cur_Net_Block_ID;
[0112] 步骤3.1.3付款方客户端比较自己本地全局账本中存储的最新的区块号Local_Block_ID和Cur_Net_Block_ID的大小;并根据Local_Block_ID和Cur_Net_Block_ID的大小,进行相关操作:
[0113] 3.1.3A如果Cur_Net_Block_ID大于Local_Block_ID,表示区块链网络中全局账本变化,付款方客户端向邻居节点请求从Local_Block_ID+1到Cur_Net_Block_ID的区块数据;邻居节点向付款方客户端发送请求的数据;
[0114] 3.1.3B如果Cur_Net_Block_ID小于或等于Local_Block_ID,表示付款方客户端的本地全局账本已经是最新的全局账本;
[0115] 步骤3.2收款方验证交易并提供服务;
[0116] 步骤3.2.1收款方在客户端输入在步骤2.6.3接收到的交易ID,查询交易的具体内容和状态;
[0117] 步骤3.2.2收款方客户端显示所查询交易的具体信息;
[0118] 具体信息包括:交易的交易ID(txid)、交易哈希值(txhash)、交易格式中源地址区域、价格区域和目的地址区域为主的信息;
[0119] 步骤3.2.3收款方查看交易中的收款方账号是否是自己持有的账号;若有自己的账号,就查看付款方对这个账号支付了多少金额;跳至步骤3.2.4;若交易中的收款方账号没有自己持有的账号,则拒绝提供服务;
[0120] 步骤3.2.4收款方根据付款方支付给自己的金额和电费单价,提供对应量的电力传输服务;
[0121] 其中,收款方提供的服务可以是电力传输为主的服务;
[0122] 步骤4:收款方和付款方结束交易。
[0123] 有益效果
[0124] 本发明一种基于区块链的智能电动汽车电网安全支付方法,与现有安全支付方法相比,具有如下有益效果:
[0125] 1.本发明所述方法可以解决V2G网络支付领域的数据共享和用户的身份隐私保护问题,可以实现有效监管与隐私保护;
[0126] 2.本发明所述方法基于区块链技术建立,针对所有注册用户,包括电动车、LAG和RA,交易记录能够轻易实现数据共享,任意注册成员都能够通过运行一个区块链客户端自行维护包含所有交易数据的全局账本,针对非注册用户,即未加入区块链网络的用户,交易数据是不可见的,这种设计能够降低外部攻击威胁,实现数据共享,更加符合实际的应用场景;本发明所述方法通过采用特殊的注册机制和验证机制,即步骤1中的注册和验证,能够支持有效的审计;
[0127] 3.本发明所述方法提出了一种特殊的支付机制,该支付机制能够在支持审计的条件下保护隐私数据;
[0128] 4.本发明所述方法能够兼顾交易数据共享和防止隐私信息泄露两方面的需求。附图说明
[0129] 图1是本发明一种基于区块链的智能电动汽车电网安全支付系统及方法的系统模型架构和方法工作流程图
[0130] 图2是本发明一种基于区块链的智能电动汽车电网安全支付方法的交易格式。
[0131] 实施方式
[0132] 下面结合附图对本发明所述的一种基于区块链的智能电动汽车电网安全支付方法进行详细叙述。实施例1
[0133] 本实施例进一步详细叙述了本发明所述方法的步骤。
[0134] 图1是一种基于区块链的智能电动汽车电网安全支付系统及方法的系统模型架构和方法工作流程图,如图1所示,包括以下步骤:
[0135] 步骤I、用户Alice账号注册与验证;具体包括如下子步骤:
[0136] 步骤I.1用户Alice使用RSA算法生成密钥对(Pk_user;Sk_user);
[0137] 步骤I.2将步骤I.1用户Alice生成的Pk_user以及Alice的身份证号码:510723199007195415,姓名:Alice,性别:女和家庭住址:北京市海淀区中关村南大街5号和驾驶证号码:123456789提交给RA进行签名;
[0138] 其中,RA进行签名,具体为:RA检查用户Alice提交的信息,包括:身份证号码、姓名、性别、家庭住址和驾驶证号码;
[0139] 当RA对用户Alice的信息检查通过后,RA使用私钥Sk_RA对Alice的Pk_user进行签名,输出δ=Sign(Sk_RA;Pk_user);
[0140] 否则,RA发现Alice的身份证号码和驾驶证号码不相符合,RA拒绝给Alice账号注册,反馈出错信息给Alice,提示Alice提交正确信息;
[0141] 步骤I.3RA将步骤I.2输出的签名信息δ发送给用户Alice;
[0142] 步骤I.4RA存储用户Alice信息,具体为:RA在其维护的证书库中保存用户Alice的Pk_user和Alice的身份证号码、姓名、性别、家庭住址和驾驶证号码信息;
[0143] 步骤I.5Alice使用Pk_user和δ合成合法账号,合法账号的格式具体表示为account=(Pk_user,δ);
[0144] 步骤II、用户Bob三个不同的账号注册与验证;具体包括如下子步骤:
[0145] 步骤II.1用户Bob使用RSA算法生成三个密钥对(Pk_user_Bob;Sk_user_Bob)、(Pk_user_Bob_1;Sk_user_Bob_1)和(Pk_user_Bob_2;Sk_user_Bob)
[0146] 步骤II.2将步骤I.1用户Bob生成的Pk_user_Bob以及Bob的身份证号码:510723199007190000,姓名:Bob,性别:男和家庭住址:北京市海淀区中关村南大街8号和驾驶证号码:123498765提交给RA进行签名;
[0147] 其中,RA进行签名,具体为:RA检查用户Bob提交的信息,包括:身份证号码、姓名、性别、家庭住址和驾驶证号码;
[0148] 当RA对用户Bob的信息检查通过后,RA使用私钥Sk_RA对Bob的Pk_user_Bob进行签名,输出δ_Bob=Sign(Sk_RA;Pk_user_Bob);
[0149] 否则,RA发现Bob的身份证号码和驾驶证号码不相符合,RA拒绝给Bob账号注册,反馈出错信息给Bob,提示Bob提交正确信息;
[0150] 步骤II.3RA将步骤I.2输出的签名信息δ_Bob发送给用户Bob;
[0151] 步骤II.4RA存储用户Bob信息,具体为:RA在其维护的证书库中保存用户Bob的Pk_user_Bob和Bob的身份证号码、姓名、性别、家庭住址和驾驶证号码信息;
[0152] 步骤II.5Bob使用Pk_user_Bob和δ合成合法账号,合法账号的格式具体表示为account_Bob=(Pk_user_Bob,δ_Bob);
[0153] 步骤II.6Bob重复步骤II.2至步骤II.5,完成另外两个账号的注册与验证,另外两个账号为:account_Bob_1=(Pk_user_Bob_1,δ_Bob_1)和account_Bob_2=(Pk_user_Bob_2,δ_Bob_2);
[0154] 步骤III、Bob向Alice支付电费200元人民币;步骤III,具体包括如下子步骤:
[0155] 步骤III.1Alice将账号:account=(Pk_user,δ)和电费价格:5元/度,发送给Bob;
[0156] 步骤III.2Bob验证Alice发送过来的account=(Pk_user,δ)是否合法;Bob从公开渠道获得RA的公钥Pk_RA;
[0157] Bob计算v=Verify(Pk_RA;account.Pk_user;account.δ)输出的v=1代表Alice的账号account合法;
[0158] 步骤III.3Bob利用区块链客户端创建一笔区块链交易;
[0159] 其中,Bob的两个账号有可使用的资金,account_Bob_1=(Pk_user_Bob_1,δ_Bob_1)账号内有资金120RMB和account_Bob_2=(Pk_user_Bob_2,δ_Bob_2)账号内有资金
80RMB。分别对应Bob的历史交易的Hash值分别是:pre_txhash_Bob1交易的第1个输出和pre_txhash_Bob2交易的第2个输出;
[0160] 其中,交易的头部包含1个唯一的交易ID:000003,和一个唯一的交易哈希值:111ab3;其中,哈希值用于作为交易的索引值;
[0161] 其中,一笔区块链交易内容包含3部分:源地址区域、价格区域和目的地址区域;
[0162] 其中,源地址区域为<0;pre_txhash_Bob1;1;signature1>和<1;pre_txhash_Bob2;2;signature2>;
[0163] SF={[0,pre_txhash_Bob1,1],[1,pre_txhash_Bob2,2]}
[0164] PF={5,200}
[0165] DF={0,account=(Pk_user,δ),200}
[0166] signature1=Sk_user_Bob_1(000003,111ab3,SF,PF,DF);
[0167] signature2=Sk_user_Bob_2(000003,111ab3,SF,PF,DF);
[0168] 其中,输出信息为<0,account=(Pk_user,δ),200>;
[0169] 步骤III.3又具体包括如下子步骤:
[0170] 步骤III.3.1Bob客户端验证交易所有的输入金额200等于总金额200,表示交易金额合法;
[0171] 步骤III.4Bob在客户端点击发送交易按钮,发送交易,并持续刷新客户端交易页面,检查交易状态;
[0172] 步骤III.4.1Bob利用客户端发送交易到区块链网络中;
[0173] 步骤III.4.2Bob持续检查自己的全局账本,直到交易状态在客户端显示为完成状态;
[0174] 步骤III.4.3Bob将交易ID:000003发送给Alice。
[0175] 步骤III.5区块链网络节点验证交易并传播交易;
[0176] 步骤III.5又具体包括如下子步骤:
[0177] 步骤III.5.1节点验证交易中account=(Pk_user,δ)和account_Bob=(Pk_user_Bob,δ_Bob)是否合法,具体为:节点从公开渠道获得RA的公钥Pk_RA,再计算Verify(Pk_RA;account.Pk_user;account.δ)=1代表δ是合法的;再计算Verify(Pk_RA;account_Bob.Pk_user_Bob;account_Bob.δ_Bob)=1代表δ_Bob是合法的;
[0178] 步骤III.5.2节点验证所有输入信息中的签名信息signature1和signature1是否合法;
[0179] 步骤III.5.2又具体包括如下子步骤:
[0180] 步骤III.5.2.1节点从交易的输入信息对应账号中提取验证签名所需要的公钥信息;
[0181] 交易签名验证过程:v=Verify(Pk_RA;signature)实现;
[0182] 其中,节点根据交易输入信息中的pre_txhash和pre_sn_df参数计算如下内容:
[0183] v 0=Verify(Pk_user_Bob_1;signature1);
[0184] v 1=Verify(Pk_user_Bob_2;signature2);
[0185] v0=v1=1,交易签名验证通过;
[0186] 步骤III.5.3节点计算交易的所有输入的总金额:120+80=200,输入总金额等于输出总金额200,交易金额验证通过
[0187] 步骤III.5.4节点比较收到的交易的格式和规定的格式,节点收到的交易的格式和规定的格式一致;
[0188] 步骤III.6节点转播交易给自己的邻居节点;
[0189] 步骤III.7矿工节点挖矿,并将交易写入全局账本;
[0190] 步骤III.7.1矿工节点验证交易;
[0191] 步骤III.7.2矿工节点完成共识机制的计算问题,将交易写入全局账本;其中,交易被写入全局账本,这笔交易就变为完成状态;
[0192] 步骤III.7.3经过步骤III.7.2后,全局账本变化;
[0193] 步骤IV、Alice查询交易并提供服务;
[0194] 步骤IV.1Alice客户端同步全局账本的数据;
[0195] 其中,Alice客户端按照询问请求模式同步全局账本;
[0196] 步骤IV.1.1Alice客户端加入区块链网络;
[0197] 步骤IV.1.2Alice客户端向邻居节点询问邻居节点的最新的区块号Cur_Net_Block_ID=9876;
[0198] 步骤IV.1.3Alice客户端比较自己本地全局账本中存储的最新的区块号Local_Block_ID=9870和Cur_Net_Block_ID=9876的大小Cur_Net_Block_ID=9876大于Local_Block_ID=9870,表示区块链网络中全局账本变化,付款方客户端向邻居节点请求从9871到9876的区块数据;邻居节点向付款方客户端发送请求的数据;
[0199] 步骤V、Alice验证交易并提供服务;
[0200] 步骤V.1Alice在客户端输入在步骤2.4.3接收到的交易ID:000003,查询交易的具体内容和状态;
[0201] 步骤V.2Alice查看交易000003是否包含自己合法的账号account=(Pk_user,δ);
[0202] 步骤V.3Alice通过客户端检查交易的金额200;
[0203] 步骤V.4Alice验证通过,开始向Bob提供电力传输服务,传输电力40度;
[0204] 八、其他有助于理解本申请提案的技术资料
[0205] https://baike.baidu.com/item/V2G/9556389?fr=aladdin百度百科:V2Ghttps://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/
13465666?fr=aladdin百度百科:区块链
[0206] h t t p : / / b a i k e . b a i d u . c o m / l i n k ?u r l =DDK6rhEtYMSxNRDCg5AE8UI7sA9uxT3m6fGh6foddi_XctIvBf4ofMSRXd62CnST7x7JYxE2c4fL-4unFMAgOIgURmnkKDECpRTumZ5iEo6Pz78yK8MeXQPfExdbp3cT百度百科:比特币[0207] https://baike.baidu.com/item/%E8%B6%85%E7%BA%A7%E8%B4%A6%E6%9C%AC/17262292?fr=aladdin百度百科:超级账本
[0208] https://zh.wikipedia.org/zh-hans/%E6%8C%96%E7%A4%A6_(%E6%AF%94%E7%89%B9%E5%B9%A3)维基百科:挖矿
[0209] 综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈