【技术实现步骤摘要】
一种基于可验证随机函数的分片共识方法
[0001]本专利技术涉及区块链
,具体涉及一种基于可验证随机函数的分片共识方法。
技术介绍
[0002]区块链技术是国家重点的前沿研究技术,在不可信环境下,通过对等网络P2P(Peer
‑
to
‑ꢀ
peer network)和链式数据结构的分布式存储来实现节点对等和数据备份,借助分布式共识机制来确定区块链结构,使用密码学方法来保证数据完整性、不可否认性、保密性及可验证性,利用由自动化脚本代码组成的智能合约来编程和操作数据,它是一种全新的分布式基础架构与计算范式。
[0003]共识机制作为区块链技术的基础和核心,是区块链的安全性、可扩展性和去中心化程度等许多重要特性的决定性因素。随着共识机制的发展,将现有的共识机制分为经典分布式共识和区块链共识。经典分布式共识主要包括拜占庭容错算法BFT(Byzantine FaultTolerance)及其扩展算法,区块链共识算法更多涉及基于工作量证明的共识算法PoW (Proof of Work)和基 ...
【技术保护点】
【技术特征摘要】
1.一种基于可验证随机函数的分片共识方法,其特征在于,包括如下步骤:1)初始化服务群组,构建并初始化节点信息注册表;所述节点信息注册表,用于记录申请入网的节点信息;2)初始化节点参数,所述节点参数包括权益信息STAKE_INFO、权值WEIGHT、状态位STATUS_BIT、积分值INTEGRAL、错误计数ERROR_COUNT、节点类别NODE_CATE和节点等级NODE_LEVEL;3)节点向服务群组申请进网注册,构建区块链网络;4)选举目录委员会成员;5)节点进行网络分片;6)同时选举每个分片的普通委员会成员;7)选举领导者;8)普通委员会内部共识;9)判断共识是否结束,如果共识未结束,进入下一时期,进行委员会重配置,转步骤4),开始新一时期的委员会共识流程,否则整个共识流程结束。2.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤1)中所述的节点信息注册表由多个表项组成,每一个节点对应一个表项,每个表项包含如下参数:数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT、节点进网申请注册成功标识IS_SUCCESS、未通过次数FAIL_COUNT、节点黑名单标识IS_BLACKLIST;其中,所述数字身份UID用于标识网络内节点身份;所述数字证书STAKE_INFO_CERT为节点的数字化证书;所述进网申请注册成功标识IS_SUCCESS为节点申请进网是否成功标识;所述未通过次数FAIL_COUNT为节点申请进网失败的次数;所述节点黑名单标识IS_BLACKLIST为节点被服务群组拉入黑名单的标识位;初始化阶段,节点信息注册表的每一个表项的数字身份UID、节点IP地址、数字证书STAKE_INFO_CERT参数值为空,进网申请注册成功标识IS_SUCCESS为假;未通过次数FAIL_COUNT为0;节点黑名单标识IS_BLACKLIST为假。3.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤2)中,所述权益信息STAKE_INFO为由节点的实体资产权益信息生成的具有证明凭证性质的数字化权益信息;所述权值WEIGHT为服务群组对节点提供的权益信息STAKE_INFO进行的等级评估值,初始值为0;所述状态位STATUS_BIT包括正常、离线、错误3种状态,初始值为离线;所述积分值INTEGRAL为共识流程中奖惩机制具体实施的参数值,初始值为0;所述错误计数ERROR_COUNT为共识流程中节点出错次数,初始值为0;所述节点类别NODE_CATE包括目录委员会成员、普通委员会成员、普通节点3类,初始值为普通节点;节点等级NODE_LEVEL为普通委员会选举时网络分片形成的节点等级,初始值为null。4.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤3)中节点向服务群组申请进网注册,构建区块链网络,包括如下步骤:3.1)节点将权益信息STAKE_INFO和IP地址打包成进网注册信息包RI并发送给服务群组;记服务群组收到的最早到达的RI对应的节点为当前节点;3.2)服务群组根据当前节点的权益信息STAKE_INFO是否符合行业要求对当前节点进行资格审查;如果审查通过,转步骤3.3),否则转步骤3.4);3.3)服务群组根据节点IP地址生成32位编码的数字身份UID;将数字身份UID、WEIGHT
值和数字证书STAKE_INFO_CERT加入节点信息注册表中该节点对应的表项;同时向节点发送“允许进网”的通知,其中,所述“允许进网”通知包括数字身份UID、WEIGHT值、数字证书STAKE_INFO_CERT;转步骤3.6);3.4)服务群组向节点发送“拒绝进网”通知,并要求该节点重新提供权益信息STAKE_INFO;同时服务群组将节点信息注册表中该节点对应的表项的未通过次数FAIL_COUNT加1,转下一步;3.5)判断FAIL_COUNT是否小于α:如果FAIL_COUNT<α,转步骤3.1);否则服务群组将节点信息注册表中该节点对应的表项的节点黑名单标识IS_BLACKLIST置真,取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2);其中,具体实施中,取α为10;3.6)节点收到进网通知后,将通知中UID、STAKE_INFO_CERT和WEIGHT值在本地储存,用RSA算法生成密钥对(pk,sk),并将STATUS_BIT设置为正常状态;3.7)当有N个节点通过服务群组审查,将此N个节点作为参与共识的节点,构建区块链网络,转步骤4);否则取服务群组收到的下一个到达的RI对应的节点为当前节点,转步骤3.2)。5.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤4)中选举目录委员会成员,包括如下步骤:4.1)每个节点分别计算目录票据值cata_value,计算公式如下:其中,uid表示节点数字身份UID;v表示视图;e表示时期,协议以时期为单位运行;VRF(
·
)表示可验证随机函数;catalog代表选举的为目录委员会成员;ξ
e
‑1代表上一时期产生的随机数,最初的随机数ξ0由协议给定;weight为节点向服务群组申请进网注册中获取的WEIGHT值;sk为节点自身的私钥,表示节点uid使用自身私钥sk对VRF(
·
)进行签名;4.2)每个节点根据目录票据值cata_value进行哈希计算生成目录随机数rand_cata_value
uid;v;e
;计算公式如下:rand_cata_value
uid;v;e
=H(cata_value
uid;v;e
),其中,H(
·
)为哈希函数;4.3)选择目录委员会成员备选,即最快满足rand_cata_value
uid;v;e
≤p
ι
的节点为目录委员会成员备选,其中p
ι
为难度系数;并将该节点设为当前节点;4.4)当前节点在本地缓存中建立并保存目录委员会列表DC_LIST,将节点信息添加入表DC_LIST中,并将DC_LIST、节点数字身份UID和节点IP地址打包成消息向全网广播;4.5)其他节点收到目录委员会成员备选节点广播的消息后,将消息中数字身份UID向服务群组进行验证,所述验证方法为:节点向服务群组获取消息中节点IP地址对应的数字身份UID,将消息中的数字身份UID与从服务群组获取到的UID进行对比,判断是否相等,若两者相等,表示验证通过,节点将在本地保存目录委员会列表DC_LIST,并向目录委员会成员备选返回“验证通过”的消息,若两者不相等,表示验证未通过,将不返回任何消息;4.6)判断目录委员会成员备选是否为目录委员会成员,所述判断方法为:若时间δ内,目录委员会成员备选收到N
‑
f条“验证通过”的消息(f为拜占庭节点数量),将该节点的节点
类别NODE_CATE设置为目录委员会成员,增加该节点的权值WEIGHT和积分值INTEGRAL,在本地建立并保存节点身份关系映射表NIRM_TABLE,并将目录委员会列表DC_LIST中本节点信息添加入该表中;转步骤5);否则减少该节点积分值INTEGRAL;依据时间顺序选择下一个计算出满足公式rand_cata_value
uid;v;e
≤p
ι
的节点,把该节点选中为目录委员会成员备选,并设为当前节点,转步骤4.4),直至选举出目录委员会成员。6.如权利要求1所述的基于可验证随机函数的分片共识方法,其特征在于,所述步骤5)中节点进行网络分片,包括如下步骤:5.1)每个非目录委员会成员设定节点等级NODE_LEVEL,并打包成消息Level_info发送给目录委员会成员;所述节点等级NODE_LEVEL的设定方法是:权值WEIGHT满足weight<α0的节点等级NODE_LEVEL为level0;WEIGHT值满足α
i
‑1≤weight<α
i
的节点等级NODE_LEVEL为level(i),其中0<i≤n
‑
2;WEIGHT值满足α
n
‑2≤weight的节点等级NODE_LEVEL为level(n
‑
1);所述消息Level_info包括节点IP地址、数字身份UID和节点等级NODE_LEVEL;5.2)目录委员会成员收集非目录委员会成员节点返回的消息Level_info,把消息内容添加到节点身份关系映射表NIRM_TABLE中;5.3)判断时间δ内,目录委员会成员收集到的消息个数是否满足n(w+1)≤λ≤N
‑
1且每一...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。