首页 / 专利库 / 资料储存系统 / 分布式账本 / 区块链 / 区块链账本 / 一种适用于能源区块链的分层交易方法

一种适用于能源链的分层交易方法

阅读:408发布:2020-05-11

专利汇可以提供一种适用于能源链的分层交易方法专利检索,专利查询,专利分析的服务。并且本 发明 提出一种适用于 能源 区 块 链 的分层交易方法,根据参与 节点 的地理 位置 进行片区划分;一个片区内所有参与节点共同维护一个子链账本,参与节点为能源产销者;每个片区虚拟设置一个共有账户,该共有账户的金额为片区所有参与节点的账户金额之和;在每一个片区的参与节点中选取1个作为子链主节点,其余参与节点为从节点;全部片区的子链主节点形成主链,从主链中选取1个子链主节点作为主链主节点;所有主节点共同维护一个主链账本。本发明针对能源区块链特有的交易按照地理位置分布特点,将记账内容局限在关联度最高的少数节点中,极大的节省了存储空间;两层的交易具有更好的 稳定性 ,灵活简单,实用性高。,下面是一种适用于能源链的分层交易方法专利的具体信息内容。

1.一种适用于能源链的分层交易方法,其特征在于,包括以下步骤:
1)分层交易的区块链构建:根据参与节点的IP地址查找其IP地理信息库按照其地理位置进行片区划分;一个片区内所有参与节点共同维护一个子链账本,该子链账本记录了所有涉及该片区的交易,所述参与节点为能源产销者;每个片区虚拟设置一个共有账户,该共有账户的金额为片区所有参与节点的账户金额之和;在每一个片区的参与节点中选取1个作为子链主节点,其余参与节点为从节点;全部片区的子链主节点形成主链,从主链中选取
1个子链主节点作为主链主节点;所有主节点共同维护一个主链账本;
2)客户端发送交易请求:客户端根据自己的IP地址查找所属片区后,向所属子链主节点发送交易请求,子链主节点通过实用拜占庭容错算法PBFT算法将交易请求扩散到片区内参与点中;
3)片区内参与节点在PBFT共识达成之后将交易记录到自己的交易池中;
4)当子链记账周期到达,子链主节点对交易进行记账:
4-1)子链主节点从自己的交易池中按入池的时间顺序选取交易,并将选取的交易记录打包为区块并广播到分区所有从节点;在打包区块时,如交易的对方客户端的IP地址不在当前分区,出现跨区交易,则根据对方客户端的IP地址查找所在分区,子链主节点一方面根据跨区转账数额构造从片区内共有账户中转入或转出的虚拟交易,并将虚拟交易关联交易记录后打包到区块中;另一方面向分区所有从节点广播生成虚拟交易的主链交易请求到分区所有从节点;
4-2)子链主节点广播的区块经实用拜占庭容错算法PBFT在片区内达成共识后,各参与节点保存该区块到本地的子链账本中;当出现跨区交易时广播的虚拟交易的主链交易请求被片区内2/3以上的从节点签名回复后,子链主节点再构造关联了虚拟交易的主链交易并在主链中广播该主链交易;主链交易的账户为发起主链交易的子链主节点所在片区的共有账户;
5)主链收集主链交易:各主链节点收到广播的主链交易请求后,将关联了子链虚拟交易的主链交易存储到主链节点的交易池中;
6)当主链记账周期到达,主链主节点对收集到的主链交易记录进行记账:主链主节点从自己的交易池中按入池的时间顺序选取主链交易,并将选取的主链交易记录打包为区块并在主链广播;主链主节点广播的区块经实用拜占庭容错算法PBFT在主链内达成共识后,各参与节点保存该区块到本地的主链账本中。
2.如权利要求1所述方法,其特征在于,还包括,客户端查询片区内的交易:
7-1)客户端向所在分区广播交易查询请求;
7-2)分区内的参与节点接收到交易查询请求后,查找本地的子链账本中是否保存有该交易记录,如是,则签名查询结果并返回给客户端,如否,则返回查询失败给客户端;
7-3)客户端接收到分区内的参与节点数2/3以上的签名查询结果则认为交易成功。
3.如权利要求2所述方法,其特征在于,当客户端查询跨区交易:
7-1)客户端向所在分区广播交易查询请求;
7-2)分区内的参与节点接收到交易查询请求后,查找本地的子链账本中是否保存有该交易记录;如是且发现该交易记录关联有虚拟交易,则从节点向客户端返回签名的本分区内交易查询结果和虚拟交易;
7-3)客户端的子链主节点向主链广播主链交易查询请求,主链内的参与节点接收到主链交易查询请求后,查找本地的主链账本中是否保存有该主链交易记录,如是,则返回签名的主链交易查询结果;
7-4)客户端的子链主节点向客户端转发主链内的参与节点返回的签名的主链交易查询结果;子链主节点在接收到主链参与节点数2/3以上的签名的主链交易查询结果后,向对方客户端所在分区的子链主节点发送分区交易查询请求;
7-5)对方客户端的子链主节点接收到分区交易查询请求后,在所在分区内广播该分区交易查询请求;分区内的参与节点接收到分区交易查询请求后,查找本地的子链账本中是否保存有该交易记录,如是,则向子链主节点返回签名查询结果和虚拟交易;对方客户端接收到分区内的参与节点数2/3以上的签名查询结果和虚拟交易后,向客户端的子链主节点转发;客户端的子链主节点再向客户端转发来自于另一个分区的签名查询结果和虚拟交易;
7-6)客户端判断在设定时间内是否接收到返回的分区内的参与节点数2/3以上的本分区内交易查询结果和虚拟交易、主链参与节点数2/3以上的签名的主链交易查询结果以及对方客户端所在分区内的参与节点数2/3以上的签名查询结果和虚拟交易,如是,则认为交易成功,否则认为交易未成功。
4.如权利要求1所述方法,其特征在于,客户端在生成交易请求时、子链主节点在生成虚拟交易、主链交易请求和主链交易时均会产生一个哈希值,所述哈希值用于使用交易双方身份标识、时间戳、交易数额、交易发起端的数字签名来对应此次交易;
虚拟交易关联交易记录的方法是,在虚拟交易的区块中存入客户端在生成交易请求的哈希值;
主链交易关联虚拟交易的方法是,在主链交易的区块中存入子链主节点在虚拟交易的哈希值;
客户端的子链主节点向主链广播主链交易查询请求时,该主链交易查询请求中包含有主链交易的哈希值;
客户端的子链主节点向对方客户端的子链主节点发送分区交易查询请求,该分区交易查询请求包含有对应主链交易的哈希值。

说明书全文

一种适用于能源链的分层交易方法

技术领域

[0001] 本发明涉及能源区块链技术,具体涉及一种基于分层区块链的能源区块链交易技术。

背景技术

[0002] 能源是社会运作的基础,能源改革正在推动社会的发展。近年来,以可再生能源为主的分布式发电技术获得了快速的发展。与传统电系统的“大机组、大电厂和大电网”不同的是,分布式能源具有规模小、波动大、分布广泛等特点。传统的大电网难以充分利用分布式能源的优势,需要进行分布式发电的局部消纳。由于分布式能源的交易往往具有交易规模小、交易频繁的特点,传统中心化的交易机构往往认为分布式能源交易无利可图,拒绝提供信用背书,分布式能源交易迫切需要一种可信的双边交易机制。
[0003] 自2008年中本聪提出了“比特币:一种完全通过点对点技术实现的电子现金货币”开始,区块链技术正在逐步的得到重视。区块链具有去中心化,分布式,点对点等特点,可以将区块链技术用于分布式能源交易。随着区块链技术的发展,各种共识机制层出不穷,比如POW、POS、DPOS、PBFT、RAFT等,这些共识机制针对不同的适用范围作出了不同的优化,优化目标为在解决拜占庭将军问题的同时尽可能的提高共识效率。
[0004] 目前的共识算法中,Paxos和Raft算法是经典的分布式一致性算法,也是这些分布式算法中,达成共识较快的算法,但是Paxos算法和Raft算法没有解决拜占庭问题,没有考虑到节点中的恶意节点,一旦恶意节点发送虚假消息,那么整个系统将会受到影响。
[0005] PBFT算法能够有效的解决拜占庭问题,能够容忍不超过(n-1)/3的节点失效,但是PBFT需要多次广播,通信量随着节点的增加呈平方增长,对于有大量节点参与的分布式能源交易来说,如此高的通信量是难以忍受的。并且,PBFT共识机制需要节点存储全量的账本信息,占用了大量存储空间。

发明内容

[0006] 本发明所要解决的技术问题是,针对分布式能源交易的特点,基于PBFT算法提出一种适用于分布式能源交易的基于地理位置的分层交易方法。
[0007] 本发明为解决上述技术问题所采用的技术方案是,一种适用于能源区块链的分层交易方法,其特征在于,包括以下步骤:
[0008] 1)分层交易的区块链构建:根据参与节点的IP地址查找其IP地理信息库按照其地理位置进行片区划分;一个片区内所有参与节点共同维护一个子链账本,该子链账本记录了所有涉及该片区的交易,所述参与节点为能源产销者;每个片区虚拟设置一个共有账户,该共有账户的金额为片区所有参与节点的账户金额之和;在每一个片区的参与节点中选取1个作为子链主节点,其余参与节点为从节点;全部片区的子链主节点形成主链,从主链中选取1个子链主节点作为主链主节点;所有主节点共同维护一个主链账本;
[0009] 2)客户端发送交易请求:客户端根据自己的IP地址查找所属片区后,向所属子链主节点发送交易请求,子链主节点通过实用拜占庭容错算法PBFT算法将交易请求扩散到片区内参与点中;
[0010] 3)片区内参与节点在PBFT共识达成之后将交易记录到自己的交易池中;
[0011] 4)当子链记账周期到达,子链主节点对交易进行记账:
[0012] 4-1)子链主节点从自己的交易池中按入池的时间顺序选取交易,并将选取的交易记录打包为区块并广播到片区所有从节点;在打包区块时,如交易的对方客户端的IP地址不在当前片区,出现跨区交易,则根据对方客户端的IP地址查找所在片区,子链主节点一方面根据跨区转账数额构造从片区内共有账户中转入或转出的虚拟交易,并将虚拟交易关联交易记录后打包到区块中;另一方面向片区所有从节点广播生成虚拟交易的主链交易请求到片区所有从节点;
[0013] 4-2)子链主节点广播的区块经PBFT在片区内达成共识后,各参与节点保存该区块到本地的子链账本中;当出现跨区交易时广播的虚拟交易的主链交易请求被片区内2/3以上的从节点签名回复后,子链主节点再构造关联了虚拟交易的主链交易并在主链中广播该主链交易;主链交易的账户为发起主链交易的子链主节点所在片区的共有账户;
[0014] 5)主链收集主链交易:各主链节点收到广播的主链交易请求后,将关联了子链虚拟交易的主链交易存储到主链节点的交易池中;
[0015] 6)当主链记账周期到达,主链主节点对收集到的主链交易记录进行记账:主链主节点从自己的交易池中按入池的时间顺序选取主链交易,并将选取的主链交易记录打包为区块并在主链广播;主链主节点广播的区块经实用拜占庭容错算法PBFT在主链内达成共识后,各参与节点保存该区块到本地的主链账本中。
[0016] 本发明的有益效果是,基于分布式电网购电地理位置片区特点,针对能源区块链特有的交易按照地理位置分布特点,将记账内容局限在关联度最高的少数节点中。极大的节省了存储空间;并且两层的交易网络能够具有更好的稳定性,恶意攻击难以对整个区块链网络进行攻击,具有灵活简单,高实用性的特点。附图说明
[0017] 图1为本发明所述能源区块链的架构。
[0018] 图2为本发明所述分层区块链结构。
[0019] 图3为本发明所述交易过程。

具体实施方式

[0020] 下面结合附图和实施例,对本发明进行进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
[0021] 参见图1,本发明所述分层共识机制所涉及的架构,包括以下分层:
[0022] 1:应用层:用于接收来自于客户端的分布式电网交易请求;
[0023] 2:交易层:为本发明所述交易机制,节点间通过共识机制达成账本的同步更新;
[0024] 3:存储层:为本发明所述账本存储方案,通过片区存储的特性,将大量的区块存储到不同片区中。
[0025] 参见图2,为本发明所述共识机制子链与主链关系,有以下特点:
[0026] 1:有多个子链(片区),子链之间的节点互不重合;
[0027] 2:子链和主链各自维护各自的账本;
[0028] 3:主链参与节点为子链主节点;
[0029] 4:主链中的账户为子链片区共有,具体的账户信息记录在子链中。
[0030] 具体的实现方法如图3所示:
[0031] 1)分层交易的区块链构建:根据参与节点的IP地址查找其IP地理信息库按照其地理位置进行片区划分;一个片区内所有参与节点共同维护一个子链账本,该子链账本记录了所有涉及该片区的交易,所述参与节点为能源产销者;每个片区虚拟设置一个共有账户,该共有账户的金额为片区所有参与节点的账户金额之和;在每一个片区的参与节点中选取1个作为子链主节点,其余参与节点为从节点;全部片区的子链主节点形成主链,从主链中选取1个子链主节点作为主链主节点;所有主节点共同维护一个主链账本;当片区内的节点有变化时,其子链主节点会将节点变化向主链广播;
[0032] 2)客户端发送交易请求:客户端根据自己的IP地址查找所属片区后,向所属片区主节点发送生成的交易请求;客户端可以通过向其子链主节点查询到主链以及其他子链(片区)的参与节点基本信息,包括公钥、IP地址等;
[0033] 3)片区中节点收集客户端的交易:片区内参与节点通过PBFT算法对交易达成共识,将交易存储到自己节点维护的交易池中;
[0034] 4)当子链记账周期到达,子链主节点对交易进行记账:
[0035] 4-1)子链主节点从自己的交易池中按入池的时间顺序选取交易,并将选取的交易记录打包为区块并广播到片区所有从节点;在打包区块时,如交易的对方客户端的IP地址不在当前片区,出现跨区交易,则根据对方客户端的IP地址查找所在片区,子链主节点一方面根据跨区转账数额构造从片区内共有账户中转入或转出的虚拟交易,并将虚拟交易关联交易记录后打包到区块中;另一方面向片区所有从节点广播生成虚拟交易的主链交易请求到片区所有从节点;
[0036] 4-2)子链主节点广播的区块经实用拜占庭容错算法PBFT在片区内达成共识后,各参与节点保存该区块到本地的子链账本中;当出现跨区交易时广播的虚拟交易的主链交易请求被片区内2/3以上的从节点签名回复后,子链主节点再构造关联了虚拟交易的主链交易并在主链中广播该主链交易;主链交易的账户为发起主链交易的子链主节点所在片区的共有账户;
[0037] 5)主链收集主链交易:各主链节点收到广播的主链交易请求后,将关联了子链虚拟交易的主链交易存储到主链节点的交易池中;
[0038] 6)当主链记账周期到达,主链主节点对收集到的主链交易记录进行记账:主链主节点从自己的交易池中按入池的时间顺序选取主链交易,并将选取的主链交易记录打包为区块并在主链广播;主链主节点广播的区块经实用拜占庭容错算法PBFT在主链内达成共识后,各参与节点保存该区块到本地的主链账本中。
[0039] 7)客户端查询步骤:
[0040] 客户端查询片区内的交易时:
[0041] 7-1)客户端向所在片区广播交易查询请求;
[0042] 7-2)片区内的参与节点接收到交易查询请求后,查找本地的子链账本中是否保存有该交易记录,如是,则签名查询结果并返回给客户端,如否,则返回查询失败给客户端;
[0043] 7-3)客户端接收到片区内的参与节点数2/3以上的签名查询结果则认为交易成功。
[0044] 客户端查询跨区交易时:
[0045] 7-1)客户端向所在片区广播交易查询请求;
[0046] 7-2)片区内的参与节点接收到交易查询请求后,查找本地的子链账本中是否保存有该交易记录;如是且发现该交易记录关联有虚拟交易,则从节点向客户端返回签名的本片区内交易查询结果和虚拟交易;
[0047] 7-3)客户端的子链主节点向主链广播主链交易查询请求,主链内的参与节点接收到主链交易查询请求后,查找本地的主链账本中是否保存有该主链交易记录,如是,则返回签名的主链交易查询结果;
[0048] 7-4)客户端的子链主节点向客户端转发主链内的参与节点返回的签名的主链交易查询结果;子链主节点在接收到主链参与节点数2/3以上的签名的主链交易查询结果后,向对方客户端所在片区的子链主节点发送片区交易查询请求;
[0049] 7-5)对方客户端的子链主节点接收到片区交易查询请求后,在所在片区内广播该片区交易查询请求;片区内的参与节点接收到片区交易查询请求后,查找本地的子链账本中是否保存有该交易记录,如是,则向子链主节点返回签名查询结果和虚拟交易;对方客户端接收到片区内的参与节点数2/3以上的签名查询结果和虚拟交易后,向客户端的子链主节点转发;客户端的子链主节点再向客户端转发来自于另一个片区的签名查询结果和虚拟交易;
[0050] 7-6)客户端判断在设定时间内是否接收到返回的片区内的参与节点数2/3以上的本片区内交易查询结果和虚拟交易、主链参与节点数2/3以上的签名的主链交易查询结果以及对方客户端所在片区内的参与节点数2/3以上的签名查询结果和虚拟交易,如是,则认为交易成功,否则认为交易未成功。
[0051] 在这个本发明方案涉及两种哈希值hash。一类是通用区块链技术中的区块hash:整个区块打包的所有交易的hash值,用于标志一个区块,另一类是交易hash,对交易参数进行hash运算,这里是唯一标志一个交易。
[0052] 具体的,客户端在生成交易请求时、子链主节点在生成虚拟交易、主链交易请求和主链交易时均会产生一个hash,所述哈希值用于使用交易双方身份标识、时间戳、交易数额、交易发起端的数字签名来对应此次交易;
[0053] 虚拟交易关联交易记录的方法是,在虚拟交易的区块中存入客户端在生成交易请求的hash;主链交易关联虚拟交易的方法是,在主链交易的区块中存入子链主节点在虚拟交易的hash;客户端的子链主节点向主链广播主链交易查询请求时,该主链交易查询请求中包含有主链交易的hash;客户端的子链主节点向对方客户端的子链主节点发送片区交易查询请求,该片区交易查询请求包含有对应主链交易的hash。
[0054] 一个典型的客户端交易请求经过以下过程:
[0055] 1:客户端向主节点发送交易请求,通过一个PBFT过程各个参与节点达成共识,达成之后各参与节点将交易放入节点各自的交易池中。
[0056] 2.主节点在PBFT过程达成之后将结果返回给客户端,客户端保存交易hash以供查账。
[0057] 3:在记账周期开始之后,主节点从交易池中抓取若干交易,打包为区块,在区块中添加时间戳、摘要和当前参与节点等信息,并将该区块发送给从节点,参与节点通过PBFT达成共识;
[0058] 4所有节点将区块保存在本地账本中
[0059] 5:客户端异步通过交易hash查账验证交易是否打包到区块中。
[0060] 实施例1
[0061] 一个不涉及跨片区交易的过程:假设客户端A、B都在片区一,从A转账到B。
[0062] 1.首先客户端A、B向所在片区一主节点发送各自签名后的交易请求;
[0063] 2.片区一主节点收到交易请求之后,通过PBFT达成共识,将交易放入交易池;
[0064] 3.当到达下一个记账周期之后,片区一主节点将交易打包到区块中,通过PBFT共识将该区块存储在片区内各参与节点所维护的子链账本中;
[0065] 4.客户端A、B向片区一查询本次交易;
[0066] 5.片区一各参与节点从子链账本中找到该交易,没有涉及到跨片区,返回查询结果;
[0067] 6.客户端A、B通过接收到片区一的查询结果来验证交易是否成功。
[0068] 实施例2
[0069] 一个涉及到跨片区交易的场景,A在片区一,B在片区二,A向B转账。
[0070] 1.客户端A、B分别对交易请求签名,发送到片区一和片区二的主节点;
[0071] 2.片区一和片区二主节点在收到交易请求之后,通过PBFT所有参与节点达成共识,放入各自交易池中;
[0072] 3.到达下一个记账周期之后,片区一和片区二发现交易双方涉及跨区交易,构造虚拟交易,片区一构造A账户转入共有账户交易,片区二构造B账户从共有账户获取余额交易,并将虚拟交易关联实际交易;
[0073] 4.片区一和片区二统计转账总额,构造主链交易,具体来说,片区一的主节点将所有涉及到与片区二转账的交易统计,统计方法为所有片区一转入到片区二的总额减去所有片区二转入到片区一的总额,计算得出需要从共有账户转账金额,构造片区一转入片区二交易请求,并关联子链中的虚拟交易,关联方法为将所有片区一到片区二的虚拟交易hash打包到主链交易请求中。主节点将主链交易请求发送到所有节点中,节点验证之后为主链交易请求签名,片区中主节点和大部分从节点签名后主节点将签名之后的请求发送到主链中;
[0074] 5.主链节点接受到主链请求之后,将交易放入主链交易池中;
[0075] 6.到达主链记账周期后,主链首先将各个片区目前的区块hash记录到区块头中,然后打包主链交易和关联的虚拟交易;
[0076] 7.客户端A查找此交易,首先发送查询请求到片区一中,片区一接受到查找请求后,查找发现为虚拟交易,说明为跨链交易,返回查询结果;
[0077] 8.片区一中的主节点发送查询请求到主链中,主链根据虚拟交易查找出实际的跨链交易,返回查询结果;
[0078] 9.片区一的主节点发现跨链交易的目的是片区二,向片区二发送查询请求,片区二通过主链交易查找出关联的虚拟交易,返回查询结果;
[0079] 10.客户端A通过片区一和片区二的查询结果和主链交易的查询结果来验证整个交易是否成功。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈