CN109889397A - 抽签方法、区块生成方法、设备及存储介质 - Google Patents

抽签方法、区块生成方法、设备及存储介质 Download PDF

Info

Publication number
CN109889397A
CN109889397A CN201910254310.9A CN201910254310A CN109889397A CN 109889397 A CN109889397 A CN 109889397A CN 201910254310 A CN201910254310 A CN 201910254310A CN 109889397 A CN109889397 A CN 109889397A
Authority
CN
China
Prior art keywords
block
node
information
ballot paper
seed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910254310.9A
Other languages
English (en)
Other versions
CN109889397B (zh
Inventor
吴思进
王志文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Fuzamei Technology Co Ltd
Original Assignee
Hangzhou Fuzamei Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Fuzamei Technology Co Ltd filed Critical Hangzhou Fuzamei Technology Co Ltd
Priority to CN201910254310.9A priority Critical patent/CN109889397B/zh
Publication of CN109889397A publication Critical patent/CN109889397A/zh
Application granted granted Critical
Publication of CN109889397B publication Critical patent/CN109889397B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供一种抽签方法、区块生成方法、设备及存储介质,该方法包括:抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;其中,各节点被抽取为本届共识委员会成员,排序信息用于供各节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块。本申请实现去中心化选取共识委员会,且出块速度快、tps高。

Description

抽签方法、区块生成方法、设备及存储介质
技术领域
本申请涉及区块链技术领域,具体涉及一种抽签方法、区块生成方法、设备及存储介质。
背景技术
当前的区块链共识算法有如下缺陷:出块时间长,也就意味着交易确认的时间久;tps小,也就是平均每秒的确认交易量太少,对比传统的交易服务或者支付系统,差几个数量级别。针对上述问题,有一些区块链采用dpos共识算法,由固定的21个超级节点作为共识委员会成员负责区块生产,由于网络性能和机器性能得到保障,并且dpos采取轮流打包,延后确认的机制,所以出块速度非常快,并且tps达到4000;但是21个超级节点,虽然是投票产生,但是却类似于中心化方式运作,这和区块链的去中心化理念相悖。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种去中心化选取共识委员会,出块速度快、tps高的抽签方法、区块生成方法、设备及存储介质。
第一方面,本发明提供一种抽签方法,包括:
抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;
其中,各节点被抽取为本届共识委员会成员,排序信息用于供各节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块。
第二方面,本发明提供一种区块生成方法,该方法适用于根据抽签方法选取为共识委员会成员的节点,该方法包括:
根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点:
否,则接收第一区块的记账节点广播的第一区块,验证第一区块生成第一区块的投票信息,并向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;其中,投票信息包括第一区块的区块高度及第一区块的区块哈希;
是,则接收第一区块的上一个区块的投票信息以确认上一个区块;
生成第一区块,并向区块链的节点广播第一区块,以供作为本届共识委员会成员的各节点分别验证第一区块,生成并广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;
判断当前节点是否仍为共识委员会成员:是,则返回根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点。
第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的抽签方法及区块生成方法。
第四方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的抽签方法及区块生成方法。
本发明诸多实施例提供的抽签方法、区块生成方法、设备及存储介质通过抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;其中,各节点被抽取为本届共识委员会成员,排序信息用于供各节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块的方法,实现去中心化选取共识委员会,且出块速度快、tps高。
本发明一些实施例提供的抽签方法、区块生成方法、设备及存储介质进一步通过根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息;接收并验证其它节点广播的选票交易还包括:若在预定时间内未收集到第一数量个种子信息,则修改循环参数,并返回根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息的方法,保证选取到足够的选票并组成共识委员会成员。
本发明一些实施例提供的抽签方法、区块生成方法、设备及存储介质进一步通过第一数量个种子信息分别根据不同的选票生成的方法,避免同一张选票被重复抽取,保证用户的权益。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例提供的一种抽签方法的流程图。
图2为图1所示方法的一种优选实施方式中步骤S12的流程图。
图3为本发明一实施例提供的一种区块生成方法的流程图。
图4为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例提供的一种抽签方法的流程图。如图1所示,在本实施例中,本发明提供一种抽签方法,包括:
S12:抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;
其中,各节点被抽取为本届共识委员会成员,排序信息用于供各节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块。
具体地,以区块链中的任意一个节点A执行上述抽签方法,假设第一数量为5,抽取的选票所对应的节点为节点A、节点B、节点C、节点D及节点E,生成的排序信息为:节点A=>节点B=>节点C=>节点D=>节点E;所生成的区块为区块高度为101的区块block_101至区块高度为105的区块block_105;
在步骤S12中,节点A抽取5个选票,并对各所抽取的选票所对应的节点节点A、节点B、节点C、节点D及节点E进行排序,生成排序信息,生成的排序信息为:节点A=>节点B=>节点C=>节点D=>节点E;
节点A、节点B、节点C、节点D及节点E被抽取为本届共识委员会成员,节点A作为区块高度为101的区块的记账节点生成block_101,节点B作为区块高度为102的区块的记账节点生成block_102,节点C作为区块高度为103的区块的记账节点生成block_103,节点D作为区块高度为104的区块记账节点生成block_104,节点E作为区块高度为105的区块记账节点生成block_105。
上述实施例通过抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;其中,各节点被抽取为本届共识委员会成员,排序信息用于供各节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块的方法,实现去中心化选取共识委员会,且出块速度快、tps高。
图2为图1所示方法的一种优选实施方式中步骤S12的流程图。如图2所示,在一优选实施例中,步骤S12包括:
S122:根据指定区块的若干公开信息、所持有选票的选票id计算若干种子信息;
S123:根据各种子信息判断当前节点是否持有符合预配置的固定规则的要求的选票:
是,则执行步骤S124:根据符合要求的选票生成选票交易并广播至区块链的节点,以供区块链的节点对本节点生成的选票交易进行验证;以及,
S125:接收并验证其它节点广播的选票交易;
S126:从验证成功的选票交易的种子信息及本节点生成的选票交易的种子信息中抽取第一数量个种子信息,并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息;
否,则执行步骤S127:接收并验证其它节点广播的选票交易;以及,
S128:从验证成功的选票交易的种子信息中抽取第一数量个种子信息,并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息。
具体地,以若干公开信息为指定区块的区块高度及指定区块的区块哈希;种子信息的计算方法为:对指定区块的若干公开信息、所持有选票的选票id签名后进行哈希运算得到,即seed=hash(sig(blockhei ght+blockhash+ticket_id));预配置的固定规则为计算出的种子信息see d是否小于预配置的难度值nonce;将排序方法配置为,对所抽取的种子信息进行从小到大排序,从而获取所抽取的种子信息对应的选票所对应的节点的排序信息为例;
假设指定区块为区块高度为90的区块block_90,公开信息为区块高度为90的区块的区块高度blockheight_90及区块高度为90的区块的区块哈希blockhash_90;节点A持有选票ticket_1,ticket_1的选票id为ticket_id1;ticket_1的种子信息seed_A,seed_A小于预配置的难度值;节点F持有选票ticket_2,ticket_2的选票id为ticket_id2;ticket_2的种子信息seed_F,seed_F不小于预配置的难度值;抽取的5个种子信息为seed_A、seed_B、seed_C、seed_D、seed_E,该5个种子信息对应的选票所对应的节点为节点A、节点B、节点C、节点D及节点E,且seed_A<seed_B<seed_C<seed_D<seed_E;
对于节点A:
在步骤S122中,节点A根据blockheight_90、blockhash_90、ticket_id1计算种子信息seed_A;
在步骤S123中,节点A根据seed_A判断本节点是否持有符合预配置的固定规则的要求的选票:
由于seed_A小于预配置的难度值,符合预配置的固定规则的要求,则执行步骤S124,根据ticket_1生成选票交易并广播至区块链的节点,以供区块链的节点对节点A生成的选票交易进行验证;以及,
在步骤S125中,节点A接收并验证其它节点广播的选票交易;
在步骤S126中,节点A从验证成功的选票交易的种子信息及本节点生成的选票交易的种子信息中抽取5个种子信息,抽取的5个种子信息为seed_A、seed_B、seed_C、seed_D、seed_E,并对各所抽取的种子信息对应的选票所对应的节点进行排序,由于seed_A<seed_B<seed_C<seed_D<seed_E,生成的种子信息对应的选票所对应的节点的排序信息为:节点A=>节点B=>节点C=>节点D=>节点E;
对于节点F:
在步骤S122中,节点F根据blockheight_90、blockhash_90、ticket_id2计算种子信息seed_F;
在步骤S123中,节点F根据seed_F判断本节点是否持有符合预配置的固定规则的要求的选票:
由于seed_F不小于预配置的难度值,不符合预配置的固定规则的要求,则执行步骤S127,接收并验证其它节点广播的选票交易;以及,
在步骤S128中,节点F从验证成功的选票交易的种子信息中抽取5个种子信息,抽取的5个种子信息为seed_A、seed_B、seed_C、seed_D、seed_E,并对各所抽取的种子信息对应的选票所对应的节点进行排序,由于seed_A<seed_B<seed_C<seed_D<seed_E,生成的种子信息对应的选票所对应的节点的排序信息为:节点A=>节点B=>节点C=>节点D=>节点E。
在上述示例中,将若干公开信息配置为指定区块的区块高度及指定区块的区块哈希,在更多实施例中,还可以根据实际需求将公开信息配置为其它参数,例如,指定区块的状态哈希,指定区块的时间戳信息等,只要是可以获取到的已存在的公开信息,可实现相同的技术效果。
在上述示例中,将种子信息的计算方法为:对指定区块的若干公开信息、所持有选票的选票id签名后进行哈希运算得到,在更多实施例中,还可以根据实际需求将种子信息的计算方法配置为对指定区块的若干公开信息、所持有选票的选票id的哈希值签名后进行哈希运算得到,只要是通过对对指定区块的若干公开信息、所持有选票的若干信息签名后进行计算得到,可实现相同的技术效果。
在上述示例中,预配置的固定规则为计算出的种子信息seed是否小于预配置的难度值nonce,在更多实施例中,还可以根据实际需求将预配置的固定规则配置为:计算出的种子信息seed是否小于预配置的难度值nonce的若干倍,可实现相同的技术效果。
在上述示例中,将排序方法配置为,对所抽取的种子信息进行从小到大排序,在更多实施例中,还可以根据实际需求将排序方法配置为,对所抽取的种子信息进行从大到小排序,或其它排序方法,只要能生成排序信息,可实现相同的技术效果。
在一优选实施例中,根据指定区块的若干公开信息、所持有选票的选票id计算若干种子信息包括:
根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息;
接收并验证其它节点广播的选票交易还包括:若在预定时间内未收集到第一数量个种子信息,则修改循环参数,并返回根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息。
具体地,以种子信息的计算方法为:对指定区块的若干公开信息、所持有选票的选票id及循环参数N签名后进行哈希运算得到,即see d=hash(sig(blockheight+blockhash+ticket_id+N));假设N的初始值为0,每循环一次加1;
假设节点G持有选票ticket_3,ticket_3的选票id为ticket_id3;当N为0时,ticket_3的种子信息seed_G1不小于预配置的难度值,且在预定时间内只抽取到4个种子信息,未抽取到预配置的第一数量个种子信息,即5个种子信息;修改循环参数后,即N为1时,有且仅有节点G的ticket_3的种子信息seed_G2小于预配置的难度值;
节点G根据blockheight_90、blockhash_90、ticket_id3及循环参数N计算种子信息seed_G1,seed_G1=hash(sig(blockheight_90+blockhas h_90+ticket_id3+0));
节点G根据seed_G1判断本节点是否持有符合预配置的固定规则的要求的选票:
由于seed_G不小于预配置的难度值,不符合预配置的固定规则的要求,节点G接收并验证其它节点广播的选票交易;以及,
节点G从验证成功的选票交易的种子信息中只抽取到4个种子信息,未抽取到5个种子信息,则修改循环参数N,并返回根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息;
节点G根据blockheight_90、blockhash_90、ticket_id3及循环参数N计算种子信息seed_G2,seed_G2=hash(sig(blockheight_90+blockhas h_90+ticket_id3+1));
节点G根据seed_G2判断本节点是否持有符合预配置的固定规则的要求的选票:
由于seed_G2小于预配置的难度值,符合预配置的固定规则的要求,根据ticket_3生成选票交易并广播至区块链的节点,以供区块链的节点对节点G生成的选票交易进行验证;以及,
节点G接收并验证其它节点广播的选票交易;
节点A从验证成功的选票交易的种子信息及本节点生成的选票交易的种子信息中抽取5个种子信息,由于已抽取到4个种子信息,改循环参数N后有且仅有节点G的ticket_3的种子信息seed_G2小于预配置的难度值,一共抽取到5个种子信息,抽取到的5个种子信息为本届共识委员会成员。
在上述示例中,将循环参数配置为初始值为0,每循环一次加1,在更多实施例中,还可以根据实际需求配置循环参数,例如将循环参数的初始值为1,每循环一次加2等,只要是用到了循环参数计算多个种子信息,可实现相同的技术效果。
上述实施例通过根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息;接收并验证其它节点广播的选票交易还包括:若在预定时间内未收集到第一数量个种子信息,则修改循环参数,并返回根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息的方法,保证选取到足够的选票并组成共识委员会成员。
在一优选实施例中,第一数量个种子信息分别根据不同的选票生成。
要实现上述实施例的效果,节点可以在接收选票交易时,验证种子信息是否分别根据不同的选票生成,步骤S124及步骤S125包括:
根据符合要求的选票生成选票交易并广播至区块链的节点,以供区块链的节点对本节点生成的选票交易进行验证;以及,判断所生成的选票交易或待接收的选票交易所对应的选票是否已被抽取:
否,则验证所生成的选票交易;或,接收并验证所待接收的选票交易;
步骤S127包括:
判断待接收的选票交易所对应的选票是否已被抽取:
否,则接收并验证待接收的选票交易。
要实现上述实施例的效果,节点也可以接收所有选票交易,并在抽取选票交易时验证种子信息是否分别根据不同的选票生成,步骤S126包括:
判断待抽取的选票交易所对应的选票是否已被抽取:
否,则从验证成功的选票交易的种子信息及本节点生成的选票交易的种子信息中抽取第一数量个种子信息;并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息;
步骤S128包括:
判断待抽取的选票交易所对应的选票是否已被抽取:
否,则从验证成功的选票交易的种子信息中抽取第一数量个种子信息;并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息。
上述实施例通过第一数量个种子信息分别根据不同的选票生成的方法,避免同一张选票被重复抽取,保证用户的权益。
在一优选实施例中,若干公开信息包括以下至少一项:指定区块的区块高度,指定区块的区块哈希值。
图3为本发明一实施例提供的一种区块生成方法的流程图。如图3所示,在本实施例中,本发明提供一种区块生成方法,包括:
S22:根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点:
否,则执行S23:接收第一区块的记账节点广播的第一区块,验证第一区块生成第一区块的投票信息,并向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;其中,投票信息包括第一区块的区块高度及第一区块的区块哈希;
是,则执行S24:接收第一区块的上一个区块的投票信息以确认上一个区块;
S25:生成第一区块,并向区块链的节点广播第一区块,以供作为本届共识委员会成员的各节点分别验证第一区块,生成并广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;
S26:判断当前节点是否仍为共识委员会成员:是,则返回根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点。
具体地,以投票信息包括第一区块的区块高度及第一区块的区块哈希,即vote(blockheight,blockhash)为例,假设节点H、节点I、节点J、节点K、节点M依次分别为打包block_201、block_202、block_203、block_204、block_205的记账节点;当前待打包生成的第一区块为block_203;
对于节点J:
在步骤S22中,节点J根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点:
由于节点H、节点I、节点J、节点K、节点M依次分别为打包block_201、block_202、block_203、block_204、block_205的记账节点;当前待打包生成的第一区块为block_203,节点J是block_203的记账节点,执行步骤S24,接收block_202的投票信息以确认block_202;
在步骤S25中,节点J生成block_203,并向区块链的节点广播block_203,以供作为本届共识委员会成员的各节点分别验证block_203,生成并广播block_203的投票信息,以供block_204的记账节点节点K接收各block_203的投票信息以确认block_203;
在步骤S26中,节点J判断当前节点是否仍为共识委员会成员:是,则返回根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点。
对于节点I:
在步骤S22中,节点I根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点:
由于节点H、节点I、节点J、节点K、节点M依次分别为打包block_201、block_202、block_203、block_204、block_205的记账节点;当前待打包生成的第一区块为block_203,节点I不是block_203的记账节点,执行步骤S23,接收节点J广播的block_203,验证block_203生成block_203的投票信息,并向区块链的节点广播block_203的投票信息,以供block_204的记账节点接收各block_203的投票信息以确认block_203;
在步骤S26中,节点I判断当前节点是否仍为共识委员会成员:是,则返回根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点。
节点J接收若干共识委员会成员发送的block_202的投票信息vote(blockheight_202,blockhash_202),节点J对接收到的若干投票信息做共识并确认block_202。
在一优选实施例中,投票信息包括根据排序信息确定的下一区块的记账节点信息;根据排序信息判断当前节点是否当前待打包生成的第一区块的记账节点包括:收集第一区块的上一区块的若干投票信息,并根据各所收集的投票信息判断当前节点是否当前待打包生成的第一区块的记账节点。
投票信息包括根据排序信息确定的下一区块的记账节点信息vote(blockheight,blockhash,bp_next),bp_next为根据排序信息确定的下一区块的记账节点信息;
步骤S22包括:收集第一区块的上一区块的若干投票信息,并根据各所收集的投票信息判断当前节点是否当前待打包生成的第一区块的记账节点。假设大多数共识委员会成员都是不作弊的节点,且当bl ock_202正确时,大多数共识委员会成员生成的投票信息为vote(block height_202,blockhash_202,node J);对接收到的若干投票信息进行共识,得知block_203的记账节点为节点J,从而判断当前节点是否blo ck_203的记账节点。
在一优选实施例中,接收第一区块的记账节点广播的第一区块,验证第一区块生成第一区块的投票信息,并向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;其中,投票信息包括第一区块的区块高度及第一区块的区块哈希包括:
接收记账节点广播生成的第一区块;
验证第一区块的第一区块信息的正确性,并根据第一区块的正确性生成对应的投票信息,并向区块链的节点广播第一区块的投票信息;其中,当第一区块信息的正确性为非正确,第一区块的投票信息中的区块哈希的值为空;
向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块。
假设节点I接收节点J发送的block_203;
节点I接收节点J广播生成的block_203;
节点I验证block_203的区块信息的正确性,并根据block_203的正确性生成对应的投票信息,并向区块链的节点广播第一区块的投票信息;其中,当block_203的区块信息的正确性为非正确,block_203的投票信息中的区块哈希的值为空;
节点I向区块链的节点广播block_203的投票信息,以供节点K接收各block_203的投票信息以确认block_203。
在一优选实施例中,接收第一区块的记账节点广播的第一区块,验证第一区块生成第一区块的投票信息,并向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块;其中,投票信息包括第一区块的区块高度及第一区块的区块哈希包括:
接收记账节点广播生成的第一区块;
根据所收集的投票信息中的下一区块的记账节点信息判断下一区块的记账节点的第三地址是否与生成第一区块的记账节点的第四地址相同生成对应的投票信息;其中,当第三地址与第四地址不同时,第一区块的投票信息中的区块哈希的值为空;
向区块链的节点广播第一区块的投票信息,以供第一区块的下一区块的记账节点接收各第一区块的投票信息以确认第一区块。
假设节点I接收共识委员会成员广播的若干block_202的投票信息vote(blockheight_202,blockhash_202,node J),节点M出错认为本节点是block_203的记账节点,节点M将block_203广播给共识委员会成员,共识委员会成员节点I接收到节点K广播生成的block_203;
节点I接收节点M广播生成的block_203;
节点I根据所收集的投票信息中的node J,判断block_203的记账节点的第三地址addr(node J)是否与生成block_203的记账节点的第四地址addr(node M)相同生成对应的投票信息;节点I判断addr(node J)与addr(node M)不同,block_203的投票信息中的区块哈希的值为空,即vote(blockheight_203,nil,node M);
节点I向区块链的节点广播block_203的投票信息,以供节点K接收各block_203的投票信息以确认block_203。
在一优选实施例中,当第一区块的投票信息中的区块哈希的值为空,且当前节点是当前待打包生成第一区块的记账节点时,接收第一区块的上一个区块的投票信息以确认上一个区块包括:
接收第一区块的上一个区块的投票信息以确认上一个区块;
生成第一空块;其中,第一空块为第一区块的上一个区块。
假设block_204的记账节点节点K收集到block_203的若干投票信息,且投票信息中的区块哈希的值为空;block_203的若干投票信息中的区块哈希的值为空,代表block_203没有被正确生成;接收第一区块的上一个区块的投票信息以确认上一个区块包括:
节点K接收第一区块的block_203的投票信息以确认上一个区块;由于block_203的若干投票信息中的区块哈希的值为空,代表block_203没有被正确生成;
节点K生成第一空块;其中,第一空块为block_203。
图4为本发明一实施例提供的一种设备的结构示意图。
如图4所示,作为另一方面,本申请还提供了一种设备400,包括一个或多个中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM403中,还存储有设备400操作所需的各种程序和数据。CPU401、ROM402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本公开的实施例,上述任一实施例描述的抽取方法及区块生成方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行抽取方法及区块生成方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的抽取方法及区块生成方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种抽签方法,其特征在于,包括:
抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息;
其中,各所述节点被抽取为本届共识委员会成员,所述排序信息用于供各所述节点按序分别作为记账节点生成一个区块以生成本届共识委员会所生成的第一数量个区块。
2.根据权利要求1所述的方法,其特征在于,所述抽取第一数量个选票,并对各所抽取的选票所对应的节点进行排序,生成排序信息包括:
根据指定区块的若干公开信息、所持有选票的选票id计算若干种子信息;
根据各所述种子信息判断当前节点是否持有符合预配置的固定规则的要求的选票:
是,则根据符合要求的选票生成选票交易并广播至区块链的节点,以供所述区块链的节点对本节点生成的选票交易进行验证;以及,
接收并验证其它节点广播的选票交易;
从验证成功的选票交易的种子信息及本节点生成的选票交易的种子信息中抽取第一数量个种子信息,并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息;
否,则接收并验证其它节点广播的选票交易;以及,
从验证成功的选票交易的种子信息中抽取第一数量个种子信息,并对各所抽取的种子信息对应的选票所对应的节点进行排序,生成排序信息。
3.根据权利要求2所述的方法,其特征在于,所述根据指定区块的若干公开信息、所持有选票的选票id计算若干种子信息包括:
根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息;
所述接收并验证其它节点广播的选票交易还包括:若在预定时间内未收集到第一数量个种子信息,则修改所述循环参数,并返回所述根据指定区块的若干公开信息、所持有选票的选票id及循环参数计算若干种子信息。
4.根据权利要求3所述的方法,其特征在于,所述第一数量个种子信息分别根据不同的选票生成。
5.根据权利要求2所述的方法,其特征在于,所述若干公开信息包括以下至少一项:指定区块的区块高度,指定区块的区块哈希值。
6.一种区块生成方法,其特征在于,所述方法适用于根据如权利要求1-5任一项所述的抽签方法选取为共识委员会成员的节点,所述方法包括:
根据所述排序信息判断当前节点是否当前待打包生成的第一区块的记账节点:
否,则接收所述第一区块的记账节点广播的第一区块,验证所述第一区块生成所述第一区块的投票信息,并向所述区块链的节点广播所述第一区块的投票信息,以供所述第一区块的下一区块的记账节点接收各所述第一区块的投票信息以确认第一区块;其中,所述投票信息包括所述第一区块的区块高度及所述第一区块的区块哈希;
是,则接收所述第一区块的上一个区块的投票信息以确认所述上一个区块;
生成第一区块,并向所述区块链的节点广播所述第一区块,以供作为所述本届共识委员会成员的各节点分别验证所述第一区块,生成并广播所述第一区块的投票信息,以供所述第一区块的下一区块的记账节点接收各所述第一区块的投票信息以确认第一区块;
判断当前节点是否仍为共识委员会成员:是,则返回所述根据所述排序信息判断当前节点是否当前待打包生成的第一区块的记账节点。
7.根据权利要求6所述的方法,其特征在于,所述投票信息包括根据所述排序信息确定的下一区块的记账节点信息;所述根据所述排序信息判断当前节点是否当前待打包生成的第一区块的记账节点包括:收集所述第一区块的上一区块的若干投票信息,并根据各所收集的投票信息判断当前节点是否当前待打包生成的第一区块的记账节点。
8.根据权利要求7所述的方法,其特征在于,所述接收所述第一区块的记账节点广播的第一区块,验证所述第一区块生成所述第一区块的投票信息,并向所述区块链的节点广播所述第一区块的投票信息,以供所述第一区块的下一区块的记账节点接收各所述第一区块的投票信息以确认第一区块;其中,所述投票信息包括所述第一区块的区块高度及所述第一区块的区块哈希包括:
接收记账节点广播生成的第一区块;
验证所述第一区块的第一区块信息的正确性,并根据所述第一区块的正确性生成对应的投票信息,并向所述区块链的节点广播所述第一区块的投票信息;其中,当所述第一区块信息的正确性为非正确,所述第一区块的投票信息中的区块哈希的值为空;
向所述区块链的节点广播所述第一区块的投票信息。
9.根据权利要求7所述的方法,其特征在于,所述所述接收所述第一区块的记账节点广播的第一区块,验证所述第一区块生成所述第一区块的投票信息,并向所述区块链的节点广播所述第一区块的投票信息,以供所述第一区块的下一区块的记账节点接收各所述第一区块的投票信息以确认第一区块;其中,所述投票信息包括所述第一区块的区块高度及所述第一区块的区块哈希包括:
接收记账节点广播生成的第一区块;
根据所收集的投票信息中的下一区块的记账节点信息判断所述下一区块的记账节点的第三地址是否与生成第一区块的记账节点的第四地址相同生成对应的投票信息;其中,当所述第三地址与所述第四地址不同时,所述第一区块的投票信息中的区块哈希的值为空;
向所述区块链的节点广播所述第一区块的投票信息。
10.根据权利要求8或9所述的方法,其特征在于,当所述第一区块的投票信息中的区块哈希的值为空,且当前节点是当前待打包生成第一区块的记账节点时,所述接收所述第一区块的上一个区块的投票信息以确认所述上一个区块包括:
接收所述第一区块的上一个区块的投票信息以确认所述上一个区块;
生成第一空块;其中,所述第一空块为所述第一区块的上一个区块。
11.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-10中任一项所述的方法。
12.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-10中任一项所述的方法。
CN201910254310.9A 2019-03-31 2019-03-31 抽签方法、区块生成方法、设备及存储介质 Active CN109889397B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910254310.9A CN109889397B (zh) 2019-03-31 2019-03-31 抽签方法、区块生成方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910254310.9A CN109889397B (zh) 2019-03-31 2019-03-31 抽签方法、区块生成方法、设备及存储介质

Publications (2)

Publication Number Publication Date
CN109889397A true CN109889397A (zh) 2019-06-14
CN109889397B CN109889397B (zh) 2021-08-31

Family

ID=66935435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910254310.9A Active CN109889397B (zh) 2019-03-31 2019-03-31 抽签方法、区块生成方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN109889397B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247753A (zh) * 2019-06-17 2019-09-17 北京艾摩瑞策科技有限公司 基于区块链节点网络的出块方法及装置
CN110853214A (zh) * 2019-11-06 2020-02-28 杭州复杂美科技有限公司 区块生成方法、设备和存储介质
CN111177263A (zh) * 2019-12-27 2020-05-19 中思博安科技(北京)有限公司 一种区块链共识方法及节点
WO2021036702A1 (zh) * 2019-08-27 2021-03-04 深圳前海微众银行股份有限公司 一种基于区块链系统的共识方法及装置
CN114124961A (zh) * 2021-11-02 2022-03-01 杭州复杂美科技有限公司 区块确认方法、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107424066A (zh) * 2017-07-19 2017-12-01 武汉凤链科技有限公司 一种基于价值量建立共识机制的方法及其系统
CN108241926A (zh) * 2017-08-25 2018-07-03 杭州复杂美科技有限公司 授权共识算法的区块链方案
CN108648082A (zh) * 2018-05-09 2018-10-12 合肥达朴汇联科技有限公司 一种用于区块链共识达成的计算机系统
CN108665363A (zh) * 2018-05-09 2018-10-16 合肥达朴汇联科技有限公司 一种区块链共识达成装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107424066A (zh) * 2017-07-19 2017-12-01 武汉凤链科技有限公司 一种基于价值量建立共识机制的方法及其系统
CN108241926A (zh) * 2017-08-25 2018-07-03 杭州复杂美科技有限公司 授权共识算法的区块链方案
CN108648082A (zh) * 2018-05-09 2018-10-12 合肥达朴汇联科技有限公司 一种用于区块链共识达成的计算机系统
CN108665363A (zh) * 2018-05-09 2018-10-16 合肥达朴汇联科技有限公司 一种区块链共识达成装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247753A (zh) * 2019-06-17 2019-09-17 北京艾摩瑞策科技有限公司 基于区块链节点网络的出块方法及装置
WO2021036702A1 (zh) * 2019-08-27 2021-03-04 深圳前海微众银行股份有限公司 一种基于区块链系统的共识方法及装置
CN110853214A (zh) * 2019-11-06 2020-02-28 杭州复杂美科技有限公司 区块生成方法、设备和存储介质
CN110853214B (zh) * 2019-11-06 2021-05-11 杭州复杂美科技有限公司 区块生成方法、设备和存储介质
WO2021088703A1 (zh) * 2019-11-06 2021-05-14 杭州复杂美科技有限公司 区块生成方法、设备和存储介质
CN111177263A (zh) * 2019-12-27 2020-05-19 中思博安科技(北京)有限公司 一种区块链共识方法及节点
CN114124961A (zh) * 2021-11-02 2022-03-01 杭州复杂美科技有限公司 区块确认方法、计算机设备和存储介质

Also Published As

Publication number Publication date
CN109889397B (zh) 2021-08-31

Similar Documents

Publication Publication Date Title
CN109889397A (zh) 抽签方法、区块生成方法、设备及存储介质
CN108200203B (zh) 基于双层网络的区块链系统
CN106228446B (zh) 基于私有区块链的资产交易平台系统及方法
CN108667632A (zh) 基于区块链的信用记录共享方法及装置、电子设备
CN109460795A (zh) 分类器训练方法、装置、电子设备及计算机可读介质
CN108347483B (zh) 基于双层网络的去中心化计算系统
CN107395353A (zh) 一种区块链共识方法及装置
CN109583903A (zh) 区块确认方法、设备和存储介质
CN110084601A (zh) 平行链主链交易状态同步方法、设备和存储介质
CN109034840A (zh) 基于清洁能源产生的绿证交易方法和系统
CN102722381B (zh) 优化升级任务的技术
CN109934593A (zh) 用于实现支持多重签名的区块链系统的设计方法及设备
CN105721629B (zh) 用户标识匹配方法和装置
CN109460405A (zh) 用于区块链网络的区块生成方法、同步方法、存储介质、计算设备
CN103098099A (zh) 绘制控制设备及其控制方法、记录介质、绘制服务器和绘制系统
CN110445616A (zh) 一种区块打包节点的打包顺序确定方法、设备及存储介质
CN109687953A (zh) 交易分类方法、设备和存储介质
CN109447639A (zh) 隐私交易余额扫描方法、设备和存储介质
CN109816043A (zh) 用户识别模型的确定方法、装置、电子设备及存储介质
CN110288346A (zh) 区块链分布式存储下载方法、设备和存储介质
CN107153540A (zh) 增量构建方法及装置
CN108734468A (zh) 基于区块链的信息处理方法及信息验证方法
CN109995775A (zh) 区块链验证码应用方法、设备和存储介质
CN109447804A (zh) 交易分流方法、设备和存储介质
CN115150413B (zh) 区块链数据的存储方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190614

Assignee: Hangzhou Kulian Technology Co.,Ltd.

Assignor: HANGZHOU FUZAMEI TECHNOLOGY Co.,Ltd.

Contract record no.: X2022330000091

Denomination of invention: Lottery method, block generation method, equipment and storage medium

Granted publication date: 20210831

License type: Common License

Record date: 20220516

Application publication date: 20190614

Assignee: Hangzhou left chain Technology Co.,Ltd.

Assignor: HANGZHOU FUZAMEI TECHNOLOGY Co.,Ltd.

Contract record no.: X2022330000092

Denomination of invention: Lottery method, block generation method, equipment and storage medium

Granted publication date: 20210831

License type: Common License

Record date: 20220516

Application publication date: 20190614

Assignee: Hangzhou DUOLIAN Technology Co.,Ltd.

Assignor: HANGZHOU FUZAMEI TECHNOLOGY Co.,Ltd.

Contract record no.: X2022330000090

Denomination of invention: Lottery method, block generation method, equipment and storage medium

Granted publication date: 20210831

License type: Common License

Record date: 20220516

EE01 Entry into force of recordation of patent licensing contract