一种基于区块链的主节点公平选举方法
文献发布时间:2023-06-19 11:49:09
技术领域
本发明属于计算机科学领域,涉及区块链技术应用,具体涉及一种基于区块链的主节点公平选举方法。
背景技术
在区块链系统中,必须通过一种共识方法来保证系统运作的公平。目前常见的共识方法有POW(Proof of Work),POS(Proof Of Stake),PBFT(Practical Byzantine FaultTolerance),DBFT(DelegatedByzantineFaultTolerant)等。POW和POS这类的共识方法本质上属于算力或权益大小的比拼,这就导致了网络中一部分节点并没有作为生产节点的机会,且会造成一定程度的资源浪费。PBFT算法有很多优点,但它也有致命的缺点。首先,它在一个完全封闭的环境中工作,其中想要加入或离开的节点必须停止整个系统。其次,PBFT中许多系统成员更希望依靠其他人进行繁琐的工作以降低成本,这对系统安全具有破坏性。DBFT解决了BFT算法的扩容性问题,但是由于该共识方法主要由7个固定的超级节点来决定,因此被外界质疑为过于中心化,且固定暴露的节点容易被攻击,不够安全。上述共识方法存在资源浪费、选举不公平、网络节点加入退出难和被选举的节点固定且暴露这些问题。本发明提出了一种基于区块链的主节点公平选举方法,可以适用于动态网络,方便节点的加入与退出,同时增加网络的公平性。
发明内容
针对上述共识方法存在的资源浪费、选举不公平、网络节点加入退出难和被选举的节点固定且暴露的这些问题,本发明提供一种基于区块链的主节点公平选举方法。
为了实现上述目的,本发明的解决方案是:
一种基于区块链的主节点公平选举方法,将系统中的节点类型分为监管节点(Supervision)、主节点(Primary)和从节点(Slave),包括节点的加入与退出、主节点的选举和系统共识三个部分,其中,节点的加入与退出包含如下步骤:
第一步:在NodeCA处注册加入的新节点,通过NodeCA维护一个记录节点身份信息的列表,列表信息包括节点ID、IP地址、公钥和节点状态;如果新加入节点的身份信息通过了检查,NodeCA将在节点信息列表的末尾添加其身份信息,并为其分配一个数字编号j;
第二步:节点j将向所有副本多播加入请求消息
第三步:如果节点j要离开网络,则它在NodeCA处吊销其证书和相关信息,然后,节点j将退出请求消息
主节点的选举包含如下步骤:
第一步:确定系统中节点总数量为n,用1,2,3···n为每个节点编号,为系统设置一个最近生产队列,其中队列的容量由系统中的节点数量来决定,队列中存储的是最近几轮被选为主节点的节点编号,队列的容量为m,则队列中存储的是最近m轮被选为主节点的节点编号;
第二步:使用随机函数随机选择一个节点作为主节点;
第三步:假如本轮中被选中的主节点的编号与生产队列中的节点编号重复,则重复第二步骤重新选举,直到本轮被选中的主节点的编号不与生产队列中的节点编号重复为止;
系统共识流程包含如下步骤:
第一步:request阶段,客户端向主节点发送请求信息;
第二步:prepare阶段,主节点接收到客户端请求后将请求数据里的主要信息提出,并向其余节点发送;
第三步:commit阶段,节点们接收到来自主节点的prepare,首先利用主节点的公钥进行签名认证,其次将消息进行散列后签名,向监管节点发送;
第四步:distribution阶段,监管节点接收到2f个commit信息,并全部签名验证通过,则进行到distribution步骤,向全网其他节点广播;
第五步:reply阶段,节点接收到监管节点的distribution,并签名验证通过后,则把消息存入到本地,并向客户端返回reply消息。
本发明的有益效果是:
改进了PBFT共识方法,使网络中的节点可以自由的加入与退出,增加了区块链网络的灵活性。同时为区块链网络设置了一个最近生产队列,这种方式解决了部分节点不能被选中为生产节点的不公平问题。由于区块链网络中的主节点不是由固定的节点担任,因此在一定程度上增加了系统的安全性。
附图说明
图1为本发明中节点加入网络的过程;
图2为本发明中节点退出网络的过程;
图3为本发明中主节点的选举过程;
图4为本发明中系统共识流程。
具体实施方式
本发明提供一种基于区块链的主节点公平选举方法,为了更具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
图1是节点加入网络的过程:
第一步:在NodeCA处注册加入的新节点,通过NodeCA维护一个记录节点身份信息的列表,列表信息包括节点ID、IP地址、公钥和节点状态;如果新加入节点的身份信息通过了检查,NodeCA将在节点信息列表的末尾添加其身份信息,并为其分配一个数字编号j;
第二步:节点j将向所有副本多播加入请求消息
图2是节点退出网络的过程:
第一步:如果节点j要离开网络,则它在NodeCA处吊销其证书和相关信息,然后,节点j将退出请求消息
图3是主节点的选举过程:
第一步:确定系统中节点总数量为n,用1,2,3···n为每个节点编号,为系统设置一个最近生产队列,其中队列的容量由系统中的节点数量来决定,队列中存储的是最近几轮被选为主节点的节点编号,队列的容量为m,则队列中存储的是最近m轮被选为主节点的节点编号;
第二步:使用随机函数随机选择一个节点作为主节点;
第三步:假如本轮中被选中的主节点的编号与生产队列中的节点编号重复,则重复第二步骤重新选举,直到本轮被选中的主节点的编号不与生产队列中的节点编号重复为止;
图4是系统共识流程:
第一步:request阶段,客户端向主节点发送请求信息;
第二步:prepare阶段,主节点接收到客户端请求后将请求数据里的主要信息提出,并向其余节点发送;
第三步:commit阶段,节点们接收到来自主节点的prepare,首先利用主节点的公钥进行签名认证,其次将消息进行散列后签名,向监管节点发送;
第四步:distribution阶段,监管节点接收到2f个commit信息,并全部签名验证通过,则进行到distribution步骤,向全网其他节点广播;
第五步:reply阶段,节点接收到监管节点的distribution,并签名验证通过后,则把消息存入到本地,并向客户端返回reply消息。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
- 一种基于区块链的主节点公平选举方法
- 一种基于权重激励主节点选举的联盟链共识方法及系统