logo好方法网

一种基于块链式存储的实用拜占庭容错共识方法


技术摘要:
本发明公开了一种基于块链式存储的实用拜占庭容错共识方法。客户端发送包含处理请求、视图编号的请求消息给所有节点;由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节  全部
背景技术:
实用拜占庭容错共识方法可以在分布式网络中存在恶意节点的情况下,保障非恶 意节点之间的数据一致。该方案选取了一个节点作为网络中的主节点,该节点将客户端的 请求按照接受到的顺序进行排序后发送给所有节点,节点之间进行消息通信来达成一致, 从而确保系统的安全性。并且通过客户端来监控请求是否被正确执行,从而保证系统的活 性,防止主节点出现问题。 假定网络中存在f个恶意节点,实用拜占庭容错共识方法为了保证非恶意节点的 大多数节点能够形成共识,并且形成共识的节点数量大于恶意节点数量,则需要至少有2f 1个节点是非恶意的,节点的总数至少为3f 1。在实用拜占庭容错共识方法中节点分为节点 可以分为客户端、主节点、副本节点,完成共识过程需要5个阶段步骤,包括: 1)请求阶段:客户端发送请求到主节点。由主节点负责将客户端请求转发到全网。 2)预准备阶段:主节点收到客户端请求消息后,对其进行安全性校验。之后将请求 通过预准备消息广播发送给其它的副本节点。 3)准备阶段:在该阶段节点对收到的请求进行校验。如果消息检查无误之后节点 会发送准备消息到其它副本节点。同一时刻系统中可能存在若干个不同节点同时执行该过 程,节点之间需要互相交换准备消息。在规定的时间范围内,如果节点收到了来自2f 1个不 同节点的准备消息,就表示该阶段完成。 4)确认阶段:准备阶段完成后,节点发送确认消息到所有节点。同样的,该节点也 会等待接受来自其它节点的取人消息。当节点收到来自2f 1个不同节点的确认消息之后就 意味着该请求达成共识,接着节点就会在本地执行该请求并将数据持久化。 5)响应阶段:请求执行完毕之后,节点会向客户端发送响应消息,告诉客户端节点 该请求在本节点执行成功。客户端收到f 1条来自不同节点的响应消息之后就可以确认该 请求至少在一个正常节点上被成功执行。 由于实用拜占庭容错共识方法需要执行5个阶段步骤来完成共识过程,存在共识 效率不高的问题,因此通过减少实用拜占庭容错共识步骤可有效提高共识效率。 (三)
技术实现要素:
本发明的目的在于提供一种基于块链式存储的实用拜占庭容错共识方法,旨在解 决上述的技术问题或者至少部分地解决上述问题。 根据本发明,提供了一种基于块链式存储的实用拜占庭容错共识方法,该方法包 括如下步骤: 客户端发送包含处理请求、视图编号的请求消息给所有节点; 3 CN 111555858 A 说 明 书 2/4 页 由所有节点选出的主节点对收到的请求消息验证后,将收到的请求消息、主节点 存储的最新区块高度信息打包进区块,并将包含该区块的预准备消息向所有节点发送; 节点对收到的预准备消息验证后,将预准备消息中的区块的哈希值放入准备消 息,并向所有节点发送; 节点对收到的准备消息进行验证,当同一区块的准备消息通过验证的数量超过预 设的阈值数量时,将该区块中的数据和验证节点的数字签名加入到块链式存储的区块中, 并执行区块中的客户端处理请求后,向客户端发送执行完毕消息。 可选地,该方法进一步包括: 每个节点会按照预设的时间周期发送包含节点存储的最新区块的哈希值和高度 信息的检查点消息给其它所有节点,收到检查点消息的节点验证通过发送节点的数字签名 后,如果发现发送节点的最新区块的高度高于本节点存储的最新区块高度则向发送节点请 求缺失的区块,收到缺失区块并经过验证后,加入本地存储的区块链中。 可选地,该方法进一步包括: 客户端对收到的执行完毕消息进行验证,如果在预设超时时间内验证通过的消息 数量达不到根据节点数量预设的执行完毕阈值数量时,客户端节点就会广播视图变更消 息,申请更换主节点; 当下一个视图对应的主节点收到的视图变更消息数量超过根据节点数量预设的 视图变更阈值数量时,成为新的主节点,并广播包含有本地存储的最新区块高度的新视图 消息; 收到新视图消息的节点验证后,更新主节点标示,并同步缺失的区块,使本地存储 的区块高度和主节点区块高度相同。 可选地,所述对消息进行验证包括: 如果消息是请求消息,收到请求消息的节点判断消息中的时间是否不大于当前时 间、视图编号是否和本地存储的视图编号一致,如果不满足则验证不通过; 如果消息是预准备消息,收到预准备消息的节点判断其中的区块的请求消息是否 和之前收到的客户端发送的请求消息一致、消息中的区块高度是否和本地存储的最新区块 高度一致,如果不满足则验证不通过; 如果消息是准备消息,收到准备消息的节点判断其中的区块的哈希值是否与之前 收到的预准备消息中的区块的哈希值相同,如果不满足则验证不通过。 可选地,所述对消息进行验证还包括如下中的一种或多种: 验证消息的数据格式是否符合预设的数据格式条件,如果不符合则验证不通过; 验证消息的数字签名是否符合预设的签名条件,如果不符合则验证不通过。 (四)附图说明 图1示出了根据本发明一个实施例的基于块链式存储的实用拜占庭容错共识方法 的流程示意图。 (五)
分享到:
收藏