logo好方法网

适用于能源区块链的并行merkle树构建与验证方法


技术摘要:
本发明提出一种适用于能源区块链的并行merkle树构建与验证方法,节点开启N个线程,并对每一个线程进行编号;主节点对交易进行验证,通过之后根据交易请求的hash对N取模,得到处理此请求的线程,将交易发送到线程中处理;线程接收到交易请求,异步对发送到本线程的交易  全部
背景技术:
能源行业的交易和传统交易相比,有着交易频率高,数据量大的特点,传统merkle 树生成方法主节点需要在打包区块的时候进行单线程merkle树生成,从节点接收到区块之 后,也需要通过merkle树单线程验证交易信息,验证通过之后再返回结果,两次单线程运算 在交易很多的情况下对性能有较大的影响,在需要快速对交易进行打包的能源应用场景 下,这种多次单线程运算极大的降低了区块打包和共识效率。
技术实现要素:
本发明所要解决的技术问题是,针对分布式能源交易高频、数据量大的特点,提出 一种能够并发进行merkle树生成和验证的方案。 本发明为解决上述技术问题所采用的技术方案是,一种适用于能源区块链的并行 merkle树构建以及验证方法,包括以下步骤: 首先,主节点并发merkle树生成方法: (1)通过配置读取到线程数N,N为2的k次幂,创建N个线程,并对每一个线程进行编 号; (2)主线程接收交易请求并验证,验证通过之后对交易进行hash运算,并将hash结 果对N取模,得到处理该交易的子线程,将交易发送到该线程中,此时主线程返回客户端; (3)子线程将交易插入到merkle树中,具体步骤如下: (3-1)子线程将交易保存到与本线程关联的存储文件中; (3-2)子线程判断最底一层是否为奇数,如果为奇数则将交易hash插入到最后一 层中,并逐一更改最后一层最后节点的父节点hash直到hash  root; (3-2)如果为偶数,则将交易hash插入最后一层中,并逐一构建父节点,直到构建 到hash  root,并将hash  root和新节点hash共同的父节点作为新的hash  root; (4)当一个记账周期到达时,主线程合并所有子线程的记账,具体步骤如下: (4-1)主线程将所有子线程merkle根取出并放入到一个队列中; (4-2)从队列中取出两个merkle节点,将其合并进行hash运算之后得到父节点的 hash值,将父节点关联到两个子节点,并将父节点放入队列中; (4-3)持续执行步骤4-2直到队列中只剩下一个merkle节点,将该merkle节点则为 merkle树的根节点; (4-5)从子线程0开始,依次从子线程中获取交易存储文件,归并到一个目录中并 压缩; (5)将步骤(4)合并的merkle树以及交易归档文件写入到区块中,并将merkle根和 3 CN 111581214 A 说 明 书 2/3 页 区块hash、上一区块hash、时间戳、子线程数N等信息记录到区块头中;将整个区块发送到所 有节点进行记录。 进一步的,还包括从节点并发验证方法,具体包括以下步骤: (1)从节点接收到主节点发送的区块之后,首先从区块头中获取merkle树根、子线 程树N等; (2)从区块体中获取整个交易merkle树,根据子线程数N创建子线程并编号,将 merkle树log2N层的merkle树节点依次传入子线程中; (3)子线程通过自己的线程编号依次从交易目录中获取编号为线程编号的交易文 件; (4)子线程并发的通过merkle树对所有交易进行验证; (5)验证通过则认为区块未被篡改,可以记录到本地。 本发明提供的适用于能源区块链的并行merkle树构建与验证方法,能够更好的减 少IO等待的时间,提高merkle树生成和验证效率。 附图说明 图1为本发明所述merkle树结构。 图2为本发明所述merkle树生成过程。 图3为本发明所述merkle树并发验证过程。
下载此资料需消耗2积分,
分享到:
收藏