【技术实现步骤摘要】
一种基于一致性hash的能源区块链区块存储方法
本专利技术涉及能源区块链技术,具体涉及一种基于一致性hash的能源区块链区块存储方法。
技术介绍
能源行业的交易和传统交易相比,有着交易频率高,数据量大的特点,传统的联盟链区块链方案将所有数据存储到所有节点中,并且交易验证需要通过主节点进行,这对存储空间和主节点的性能都有较大的影响。能源行业对安全的要求没有金融类交易的要求高,可以考虑将区块存储到少数节点中,在节点出现故障的时候通过存储的备份进行恢复。
技术实现思路
本专利技术所要解决的技术问题是,针对分布式能源交易的特点,提出一种存储效率高,故障恢复快的适用于能源交易的区块存储方案。本专利技术为解决上述技术问题所采用的技术方案是:一种基于一致性hash的能源区块链区块存储方法,包括以下步骤:(1)节点状态初始化:对每一个节点IP进行hash运算,得到hash值h(T),通过对h(T)进行取模运算,得到m(T)=h(T)%n,其中n=2^N,N为最大节点数。每个节点将全局所有节点的m(T)以及IP地址记录到本地,并与hash环上一个节点和下一个节点建立TCP长连接。所有通过PBFT算法对主节点达成共识,选出主节点;(2)客户端提交交易:客户端将交易发送到主节点,主节点将交易记录到本地交易池中;(3)主节点打包交易并备份存储区块体:主节点将当前交易池中所有交易打包到区块中,并通过hash运算得出区块hash,h(B)。主节点通过对h(B)进行取模运算m(B)=h( ...
【技术保护点】
1.一种基于一致性hash的能源区块链区块存储方法,其特征在于,包括以下步骤:/n(1)节点状态初始化:对每一个节点IP进行hash运算,得到hash值h(T),通过对h(T)进行取模运算,得到m(T)=h(T)%n,其中n=2^N,N为最大节点数;每个节点将全局所有节点的m(T)以及IP地址记录到本地,并与hash环上一个节点和下一个节点建立TCP长连接;所有通过PBFT算法对主节点达成共识,选出主节点;/n(2)客户端提交交易:客户端将交易发送到主节点,主节点将交易记录到本地交易池中;/n(3)主节点打包交易并备份存储区块体:主节点将当前交易池中所有交易打包到区块中,并通过hash运算得出区块hash,h(B);主节点通过对h(B)进行取模运算m(B)=h(B)%n,得到区块在hash环中的位置,通过对比本地所有节点的位置m(T),找到m(T)>m(B)和m(T)<m(B)的两个节点L和H,将区块体发送到节点L和H中,L和H记录到本地;/n(4)所有节点记录区块头:主节点将区块hash、时间戳、merkle根、前一区块hash打包为区块头,发送给所有节点,节点收到区块头 ...
【技术特征摘要】
1.一种基于一致性hash的能源区块链区块存储方法,其特征在于,包括以下步骤:
(1)节点状态初始化:对每一个节点IP进行hash运算,得到hash值h(T),通过对h(T)进行取模运算,得到m(T)=h(T)%n,其中n=2^N,N为最大节点数;每个节点将全局所有节点的m(T)以及IP地址记录到本地,并与hash环上一个节点和下一个节点建立TCP长连接;所有通过PBFT算法对主节点达成共识,选出主节点;
(2)客户端提交交易:客户端将交易发送到主节点,主节点将交易记录到本地交易池中;
(3)主节点打包交易并备份存储区块体:主节点将当前交易池中所有交易打包到区块中,并通过hash运算得出区块hash,h(B);主节点通过对h(B)进行取模运算m(B)=h(B)%n,得到区块在hash环中的位置,通过对比本地所有节点的位置m(T),找到m(T)>m(B)和m(T)<m(B)的两个节点L和H,将区块体发送到节点L和H中,L和H记录到本地;
(4)所有节点记录区块头:主节点将区块hash、时间戳、merkle根、前一区块hash打包为区块头,发送给所有节点,节点收到区块头之后,记录到本地中;
(5)客户端查账:客户端向主节点发送查账请求,主节点返回包含该交易的区块hash;客户端通过区块hash和节点hash环计算得到存储区块体的节点IP,对存储区块体的两个节点发起查账请求,节点L和H在接受到查账请求之后,将区块中的交易数据返回;客户端验证交易签名,验证通过则表示交易成功。
2.根据权利权利要求1所述的一种基于一致性hash的能源区块链区块存储方法,其特征在于,还包括节点加入,具体包括以下步骤:
(1)当节点加入时,节点向主节点发送节点加入请求,主节点接受到加入请求之后,验证节点数目是否大于最大节点数N,如果大于,则否决加入请求;如果小于,则将节点数加一;
(2)主节点向所有参与节点发送节点加入请求,包括节点IP、时间戳;每个节点对新进入的节点计算其在hash环中的位置h(T),如果h(T)不在本节点hash环的上一个或者下一个位置;
(3)如果h(T)在本节点上一位置或者下一位置,则与新节点建立连接,并将结果发送到主节点中;
(4)主节点将新加入节点记录为观察者节点,新的区块hash环位置m(B)在新节点m(T)中时,区块即发送到原来的节点,也发送到新节点中;
(5)新加入的节点从与其连接的上下游节点中获取需要本节点保存的区块,保存在本地;当区块获取完成后,向主节点和连接的上下游节点发送状态转换请求,主节点接受到之后,...
【专利技术属性】
技术研发人员:何涛,桂勋,姚兰,
申请(专利权)人:成都汉为科技有限公司,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。