CN114338677B - 一种区块链系统中的区块生成方法和相关装置 - Google Patents

一种区块链系统中的区块生成方法和相关装置 Download PDF

Info

Publication number
CN114338677B
CN114338677B CN202111668661.8A CN202111668661A CN114338677B CN 114338677 B CN114338677 B CN 114338677B CN 202111668661 A CN202111668661 A CN 202111668661A CN 114338677 B CN114338677 B CN 114338677B
Authority
CN
China
Prior art keywords
node
block
block generation
request
generation
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.)
Active
Application number
CN202111668661.8A
Other languages
English (en)
Other versions
CN114338677A (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.)
Guangzhou Zhuwan Chain Big Data Technology Co ltd
Original Assignee
Sun Yat Sen University
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 Sun Yat Sen University filed Critical Sun Yat Sen University
Priority to CN202111668661.8A priority Critical patent/CN114338677B/zh
Publication of CN114338677A publication Critical patent/CN114338677A/zh
Application granted granted Critical
Publication of CN114338677B publication Critical patent/CN114338677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种区块链系统中的区块生成方法和相关装置,方法包括:将所述区块生成节点自身调整为锁住状态;根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,其中,所述第一节点为区块链系统中除所述区块生成节点以外的授权节点;获取所述第一节点对于所述区块生成请求的响应结果;当所述响应结果中的一半以上为同意时,生成区块。解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。

Description

一种区块链系统中的区块生成方法和相关装置
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链系统中的区块生成方法和相关装置。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,具有去中心化,防篡改,可追溯等特点,有较大的应用价值。
区块是区块链系统中的基础组成。区块内包含一定时间内产生的交易和状态的变化,是区块链系统一次共识产生的结果。现有区块的生成方法,有可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能。
因此,提供一种可靠的区块链系统的区块生成方法是本领域技术人员亟待解决的技术问题。
发明内容
本申请提供了一种区块链系统中的区块生成方法和相关装置,解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
有鉴于此,本申请第一方面提供了一种区块链系统中的区块生成方法,应用于区块生成节点,包括:
将所述区块生成节点自身调整为锁住状态;
根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,其中,所述第一节点为区块链系统中除所述区块生成节点以外的授权节点;
获取所述第一节点对于所述区块生成请求的响应结果;
当所述响应结果中的一半以上为同意时,生成区块。
可选地,根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,具体包括:
当所述区块生成节点对应的区块生成节点类型为INTURN时,发送区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态。
可选地,根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,还包括:
当所述区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN 的第一节点基于所述抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于所述区块生成请求,将自身调整为锁住状态。
可选地,所述方法还包括:
当所述区块生成后,将所述区块生成节点调整为未锁住状态;
将所述区块广播至所述第一节点,使得该所述第一节点将所述区块添加至对应的本地区块链中,并将自身调整为未锁住状态。
可选地,所述第一节点中对于所述响应结果的配置过程包括:
获取所述区块生成请求中携带的所述区块的区块高度;
获取所述区块高度和本地区块链当前高度的高度差;
当所述高度差为预设阈值时,判定所述响应结果为同意,否则,判定为不同意。
本申请第二方面提供了一种区块链系统中的区块生成节点,包括:
调整单元,用于将所述区块生成节点自身调整为锁住状态;
发送单元,用于根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,其中,所述第一节点为区块链系统中除所述区块生成节点以外的授权节点;
获取单元,用于获取所述第一节点对于所述区块生成请求的响应结果;
生成单元,用于当所述响应结果中的一半以上为同意时,生成区块。
可选地,所述发送单元,具体用于当所述区块生成节点对应的区块生成节点类型为INTURN时,发送区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态。
可选地,所述发送单元还用于:
当所述区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN 的第一节点基于所述抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于所述区块生成请求,将自身调整为锁住状态。
本申请第三发明提供了一种区块链系统中的区块生成设备,所述设备包括处理器以及存储器;
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行如第一方面所述的区块链系统中的区块生成方法。
本申请第四方面提供了一种存储介质,所述存储介质用于存储程序代码,所述程序代码用于执行如第一方面所述的区块链系统中的区块生成方法。
从以上技术方案可以看出,本申请具有以下优点:
本申请提供了一种区块链系统中的区块生成方法,包括:将区块生成节点自身调整为锁住状态;根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,其中,第一节点为区块链系统中除区块生成节点以外的授权节点;获取第一节点对于区块生成请求的响应结果;当响应结果中的一半以上为同意时,生成区块。本申请中,将用于生成区块的节点锁住,同时将不是用来生成区块的节点也锁住,这样在本次区块生成的过程中,各节点功能具有确定性,也即生成区块的节点具有了确定性,避免了非区块生成节点生成区块,避免了区块链系统中普遍存在的分叉问题,因而提高了区块链系统的稳定性,从而解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例中一种区块链系统中的区块生成方法的实施例一的流程示意图;
图2为本申请实施例中节点状态调整的说明示意图一;
图3为本申请实施例中节点状态调整的说明示意图二;
图4为本申请实施例中一种区块链系统中的区块生成方法的实施例二的流程示意图;
图5为本申请实施例中一种区块链系统中的区块生成方法的一种应用场景示意图;
图6为本申请实施例中一种区块链系统中的区块生成方法的另一种应用场景示意图;
图7为本申请实施例中一种区块链系统中的区块生成节点的实施例的结构示意图。
具体实施方式
本申请实施例提供了一种区块链系统中的区块生成方法和相关装置,解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对本申请中的相关技术术语进行如下解释:
区块链:一种将数据区块以时间顺序通过哈希值相连构成的一种链式数据结构,可以看作是通过密码学保证的不可篡改和伪造的分布式账本。
联盟链:指针对某个特定群体的成员和有限的第三方,内部指定多个预选节点为记账人,每个块的生成由所有的预选节点共同决定的区块链系统。
区块:包含一定时间内产生的交易和状态的变化,是区块链系统一次共识产生的结果。
交易:将区块链看作一个分布式的账本,一条交易则是一次改变账本状态的操作。
吞吐量:在区块链系统中,指单位时间内处理交易的数量。一个区块链系统的吞吐量越高,表明该系统处理交易的能力越强。
分叉:在区块链系统中,在某一时刻,同一个父块有两个及以上不同的子区块,导致存在两条及以上的最长子链时,称之为分叉。
请参阅图1,本申请实施例中一种区块链系统中的区块生成方法的实施例一的流程示意图。
本实施例中的一种区块链系统中的区块生成方法包括:
步骤101、将区块生成节点自身调整为锁住状态。
需要说明的是,无论是区块生成节点还是第一节点,其的状态调整都相同。为了描述的方便简洁,本实施例中将上述二者统称为节点后,进行节点状态的描述。
当节点处于锁住状态时,该节点对于任何来自其他节点的获得产生区块权限的请求,都会拒绝。当节点处于未锁住状态时,节点对于来自合法节点的获得产生区块权限的请求,进行合法性检验,如合法,则同意,否则拒绝。本申请中的“锁住”和“未锁住”是指节点所处的一种状态,只要节点满足“锁住”或“未锁住”的状态说明的要求,即可称为处于“锁住”或“未锁住”状态。
对于上述“锁住”或“未锁住”的具体实现可以有多种方式,可以用一个状态变量(下称锁变量)来表示节点有没有上锁。举例来说在实现时可以用互斥锁。
如图2所示,每次对锁变量进行读操作前,需要判断是否已经对互斥变量上锁(写锁),如果没有则给互斥变量加上读锁(读保护)后再进行读操作,否则放弃此次读操作,并返回相关信息。
同样的,如图3所示,对锁变量进行写操作前,需要判断是否已经对互斥变量上锁(读锁或写锁),如果没有则给互斥变量加上写锁(写保护)后再进行写操作,将锁变量按要求置为“锁住”或“未锁住”,否则放弃此次操作,并返回相关信息。只有当读或写操作完成后,才会解除互斥锁的锁状态。
节点基本上可以分为两类,一类是授权节点(后文中若不作特别说明,“节点”均指代授权节点),另外一类是非授权节点。其中,授权节点才拥有区块的签名权利,而非授权节点则不能对区块进行签名,只能同步授权节点生成的区块。即上述的区块生成节点为授权节点。过程大致为:一个授权节点进行区块生成,其余授权节点根据授权信息对生成的区块进行合法性验证。
需要说明的是,授权节点和非授权节点之间可以相互转换,授权节点的加入和移除由目前授权节点进行投票决定。当一个对某个节点的状态变更投票数量超过一半,则变更该节点的状态,授权节点变为非授权节点,而非授权节点则变为授权节点。
步骤102、根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,其中,第一节点为区块链系统中除区块生成节点以外的授权节点。
步骤103、获取第一节点对于区块生成请求的响应结果。
步骤104、当响应结果中的一半以上为同意时,生成区块。
本实施例中,首先将区块生成节点自身调整为锁住状态,接着根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,然后获取第一节点对于区块生成请求的响应结果,最后当响应结果中的一半以上为同意时,生成区块。本实施例中,将用于生成区块的节点锁住,同时将不是用来生成区块的节点也锁住,这样在本次区块生成的过程中,各节点功能具有确定性,也即生成区块的节点具有了确定性,避免了非区块生成节点生成区块,避免了区块链系统中普遍存在的分叉问题,因而提高了区块链系统的稳定性,从而解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
以上为本申请实施例提供的一种区块链系统中的区块生成方法的实施例一,以下为本申请实施例提供的一种区块链系统中的区块生成方法的实施例二。
请参阅图4,本申请实施例中一种区块链系统中的区块生成方法的实施例二的流程示意图。
本实施例中的一种区块链系统中的区块生成方法包括:
步骤401、将区块生成节点自身调整为锁住状态。
需要说明的是,步骤401的描述与实施例一种步骤101的描述相同,在此不再赘述。
步骤402、根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,其中,第一节点为区块链系统中除区块生成节点以外的授权节点。
需要说明的是,根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,具体包括:
当区块生成节点对应的区块生成节点类型为INTURN时,发送区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态。
在一种实施方式中,根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,还包括:
当区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN的第一节点基于抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于区块生成请求,将自身调整为锁住状态。
其中,本实施例中第一节点中对于响应结果的配置过程包括:
获取区块生成请求中携带的区块的区块高度;
获取区块高度和本地区块链当前高度的高度差;
当高度差为预设阈值时,判定响应结果为同意,否则,判定为不同意。
步骤403、获取第一节点对于区块生成请求的响应结果。
步骤404、当响应结果中的一半以上为同意时,生成区块。
步骤405、当区块生成后,将区块生成节点调整为未锁住状态。
步骤406、将区块广播至第一节点,使得该第一节点将区块添加至对应的本地区块链中,并将自身调整为未锁住状态。
本实施例中,首先将区块生成节点自身调整为锁住状态,接着根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,然后获取第一节点对于区块生成请求的响应结果,最后当响应结果中的一半以上为同意时,生成区块。本实施例中,将用于生成区块的节点锁住,同时将不是用来生成区块的节点也锁住,这样在本次区块生成的过程中,各节点功能具有确定性,也即生成区块的节点具有了确定性,避免了非区块生成节点生成区块,避免了区块链系统中普遍存在的分叉问题,因而提高了区块链系统的稳定性,从而解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
以上为本申请实施例提供的一种区块链系统中的区块生成方法的实施例二,以下为本申请实施例提供的一种区块链系统中的区块生成方法的应用例。
以4个授权节点为例,其中一个节点为INTURN节点,以in标识;其余三个节点都为OUT-OF-TURN节点,以out标识。黑色的节点表示该节点处于锁住状态(locked),白色的节点表示该节点处于未锁住(unlocked)的状态。图5展示的是节点1作为INTURN节点产生区块的过程。图6是节点1作为 OUT-OF-TURN节点产生区块的过程。
如图5所示,在4个节点的区块链系统中,节点1作为INTURN节点产生区块,达成共识的过程大致可以分为4个阶段,分别是:
①轮次开始阶段,四个节点都处于未锁住的状态。
②节点1先将自己置于锁住的状态,然后向另外的三个OUT-OF-TURN 节点,即节点2、3、4发起请求(req),请求获得产生区块的权限。
③节点2、3、4收到来自节点1的请求,而此时它们都处于未锁住的状态,它们各自将自己置于锁住的状态,然后向节点1发回响应(resp),同意节点1的产生区块的请求。
④当节点1收到系统授权节点总数一半以上的节点(包含自身)的同意时(认为对于区块的生成节点达成共识),则开始打包区块。当区块产生后,节点1解锁,将自己置于未锁住的状态,然后将产生的区块广播给节点2、3、 4。节点2、3、4各自收到区块并插入自己的链中后解锁,将自己置于未锁住的状态。此时回到阶段①,进行下一轮次的共识。
在本次生成区块中节点一轮次的共识的达成由一个新产生的该轮次对应高度的区块被大多数节点所同步完成。具体指,一个授权节点(无论是INTURN 或者OUT-OF-TURN)对于自身产生区块的请求收到总数一半以上节点的同意,并且产生了区块并将该区块广播到其他节点,大多数节点同步了该区块后即认为达成了共识。共识达成后,即进行新一轮次的共识,不同的是在新一轮次的共识中,其他节点会充当新的INTURN节点,原来的INTURN节点则会变为OUT-OF-TURN节点。
当未达成共识时,原因可能是INTURN节点发送产生区块的请求,没有得到系统授权节点总数一半以上的节点的同意。此时该INTURN节点会在一定延迟后再次发起产生区块请求,或者由其他OUT-OF-TURN节点发起产生区块的请求,直到其中一个授权节点得到系统授权节点总数一半以上的节点的同意并产生区块进行广播,完成本论次的共识。
如图6所示,在4个节点的区块链系统中,节点1作为OUT-OF-TURN 节点产生区块,达成共识的过程大致可以分为4个阶段,分别是:
①轮次开始阶段,四个节点都处于未锁住的状态。
②节点1先将自己置于锁住的状态,然后向INTURN节点2,发起抢夺锁(grabL)的请求,请求获得产生区块的权限;而向另外的两个OUT-OF-TURN 节点,即节点3、4发起请求(grabF),请求获得产生区块的权限。
③节点2、3、4收到来自节点1的请求,而此时它们都处于未锁住的状态,它们各自将自己置于锁住的状态,然后向节点1发回响应(resp),同意节点1的产生区块的请求。
④当节点1收到系统授权节点总数一半以上的节点(包含自身)的同意时开始打包区块。当区块产生后,节点1解锁,将自己置于未锁住的状态,然后将产生的区块广播给节点2、3、4。节点2、3、4各自收到区块并插入自己的链中后,解锁,将自己置于未锁住的状态。此时回到阶段①,进行下一轮次的共识。
在本区块生成方法中,一轮次的共识的达成由一个新产生的该轮次对应高度的区块被大多数节点所同步完成。具体指,一个授权节点(无论是INTURN 或者OUT-OF-TURN)对于自身产生区块的请求收到总数一半以上节点的同意,并且产生了区块并将该区块广播到其他节点,大多数节点同步了该区块后即认为达成了共识。
节点产生区块要求系统中一半以上授权节点的同意,所以对于该系统中授权节点,当对应高度的区块被系统中一半以上的授权节点所接受并写入到各自的链(数据)中时,即为达成了共识,反之则没有达成共识。
对于区块生成节点发出的获得产生区块权限的请求的说明:
在每次该节点在当轮次向产生区块的程序提出产生区块的请求时,首先会将自身处于锁住状态,然后需要向其他授权节点发送请求获得产生区块的权限。然后该节点会按照根据自身INTURN或OUT-OF-TURN采用前面的相应方式向其他节点发出请求。请求中会携带将要产生区块的高度,和其他必要的信息。若成功获得系统中授权节点总数一半以上的同意,则会开始产生区块,否则放弃该次产生区块的请求。
对于节点处理来自其他节点的产生区块的请求的说明:
首先收到请求的节点会检查自身的状态,若处于锁住的状态,则直接拒绝节点的请求。否则,该节点会检查请求中的将要产生区块的高度信息,如果恰好等于该节点中的区块链当前高度+1,则同意节点的请求,否则拒绝节点的请求。在同意节点的请求前,该节点会先将自身置于锁住的状态,防止在该轮次多个请求节点都从该节点可以获得产生区块的权限。
对于产生区块的节点未获得足够的同意时的说明:
当该节点在当前轮次向其他节点发出获得产生区块权限的请求后,若获得的同意回应的数量不足系统中授权节点总数一半以上时,则会放弃该次产生区块的请求。此时因为此前该节点已经将自身置于锁住的状态,为了共识过程顺利进行,该节点需要将自身再次处于未锁住的状态。此时该节点在当前轮次依然有机会产生区块,只要该节点再次向产生区块的程序提出产生区块的请求,并在该次向其他授权节点的请求过程中,获得系统中授权节点数量一半以上的同意。
对于节点将自身置于锁住状态的时机的说明:
1)当该节点在当轮次向产生区块的程序提出产生区块的请求时,若此时自身处于未锁住的状态,则将自身置于锁住的状态。
2)当收到来自其他节点的获得产生区块的权限的请求时,若自身处于未锁住的状态,且该请求通过合法性检验后,则在回应同意前将自身置于锁住的状态。
对于节点将自身置于未锁住状态的时机的说明:
1)所有授权节点在系统最初都是处于未锁住的状态。
2)当该节点希望在当前轮次产生区块,向产生区块的程序提出产生区块的请求,并锁住自身,向其他节点发出获得产生区块的权限请求,但不能获得足够的同意而不能产生区块时,该节点会将自身置于未锁住的状态。
为了验证本申请提出的区块链系统中的区块生成方法的性能,进行如下实验进行验证:
实验环境为腾讯云的虚拟机,每一台虚拟机的配置为:CPU:IntelXeonCascadeLake8255C/IntelXeonCooperLake(2.5GHz/3.1GHz);内存:8GB;硬盘:高性能混合型硬盘50G;内网带宽:1.5Gbps;操作系统: UbuntuServer20.04LTS64位。
实验说明:节点之间的网络连接环境为腾讯云同一区域的内网环境。每一个节点独占一台虚拟机。由其中一个节点发起批量交易的请求,并维持一定的压力,即每0.5秒发送一定量的交易。一次实验总共发送的交易量记为100万,记为TXCNT。发送的交易为转账交易,并保证转账交易合法(签名合法,余额充足等)。从发送第一笔交易开始计时,直到所有交易发送完毕且都被打包到区块中为止,所消耗的时间记为TIME。
实验采用以太坊的go语言实现版本go-ethereum为平台,分别采用现有区块生成方法和本实施例中的区块生成方法,然后收集数据进行交易吞吐量的计算。实验分别建立了4授权节点的系统和16授权节点的系统,分别采用两种算法,共4种组合,每种组合的实验重复4次,实验结果如表1、2、3、 4所示。表参数说明:stress(tx/0.5s):交易压力,即每0.5秒发送的交易数量。“0、1、2、3”:4次重复实验的序号。Mean:4次重复实验交易吞吐量的平均值。
表1 4节点的现有区块生成方法的交易吞吐量
stress(tx/0.5s) 0 1 2 3 Mean
2000 3950.6 3950.6 3950.6 3966.3 3954.5
2300 1058.1 2694.4 944.2 1027.6 1431.1
2600 703.2 887.3 1086.8 992.0 917.3
表2 4节点的本实施例中的区块生成方法的交易吞吐量
Figure BDA0003449007500000121
Figure BDA0003449007500000131
表3 16节点的现有区块生成方法的交易吞吐量
stress(tx/0.5s) 0 1 2 3 Mean
1100 2157.9 2139.4 2134.8 2157.9 2147.5
1200 2340.0 2340.0 2318.3 2334.5 2333.2
1300 2504.4 975.8 2504.3 1134.9 1779.8
表4 16节点的本实施例中的区块生成方法的交易吞吐量
stress(tx/0.5s) 0 1 2 3 Mean
1100 2116.7 2170.9 2125.7 2121.2 2133.6
1200 2286.4 2250.4 2328.7 2345.5 2302.7
1300 2526.2 2485.6 2473.3 2524.3 2502.4
实验结果说明:
在4节点数的情况下,当stress为2000时,两种方法的平均TPS分别为 3954.5和3864.3,差别不大。但是当stress上升,达到2300时,两种方法的平均TPS分别为1431.1和4474.0,可以发现现有区块生成方法的平均TPS大幅下降,而本实施例中的区块生成方法的平均TPS则略有上升。而stress为 2600时出现的情况与2300相似。
在16节点数的情况下,当stress为1100时,两种方法的平均TPS分别为2147.5和2133.6,差别不大。同样的,当stress为1200时,两种方法的平均TPS分别为2333.2和2302.7,区别也不明显。但是当stress上升,达到1300 时,可以发现现有区块生成方法的平均TPS大幅下降,仅有1779.8,而本实施例中的区块生成方法的平均TPS则略有上升,为2502.4。
从表格中实验数据我们大致可以得到如下结论:当stress处于区块链系统可以容纳的情况下,本实施例和现有的区块生成方法的TPS相差无几。而当 stress上升到一定程度,采用现有的区块生成方法就不能很好地处理大量的交易,导致TPS下降;而采用本实施例中的区块生成方法算法则依然可以顺利处理当前压力下的批量交易,提高了TPS。
以上为本申请实施例提供的一种区块链系统中的区块生成方法的实施例,以下为本申请实施例提供的一种区块链系统中的区块生成节点的实施例。
请参阅图7,本申请实施例中一种区块链系统中的区块生成节点的实施例的结构示意图。
本实施例一种区块链系统中的区块生成节点包括:
调整单元,用于将区块生成节点自身调整为锁住状态;
发送单元,用于根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,其中,第一节点为区块链系统中除区块生成节点以外的授权节点;
获取单元,用于获取第一节点对于区块生成请求的响应结果;
生成单元,用于当响应结果中的一半以上为同意时,生成区块。
可选地,发送单元,具体用于当区块生成节点对应的区块生成节点类型为 INTURN时,发送区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态。
可选地,发送单元还用于:
当区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN的第一节点基于抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于区块生成请求,将自身调整为锁住状态。
本实施例中,首先将区块生成节点自身调整为锁住状态,接着根据区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得第一节点基于区块生成请求,将自身调整为锁住状态,然后获取第一节点对于区块生成请求的响应结果,最后当响应结果中的一半以上为同意时,生成区块。本实施例中,将用于生成区块的节点锁住,同时将不是用来生成区块的节点也锁住,这样在本次区块生成的过程中,各节点功能具有确定性,也即生成区块的节点具有了确定性,避免了非区块生成节点生成区块,避免了区块链系统中普遍存在的分叉问题,因而提高了区块链系统的稳定性,从而解决了现有的区块生成方法,可能导致区块链系统产生分叉,而分叉的产生不仅会影响区块链系统的安全性和稳定性,还会降低区块链系统的性能的技术问题。
本申请实施例还提供了一种区块链系统中的区块生成设备的实施例,本实施例中的区块链系统中的区块生成设备包括处理器以及存储器;存储器用于存储程序代码,并将程序代码传输给处理器;处理器用于根据程序代码中的指令执行如实施例一或实施例二的区块链系统中的区块生成方法。
本实施例中实施例还提供了一种存储介质的实施例,本实施例中的存储介质用于存储程序代码,程序代码用于执行如实施例一或实施例二的区块链系统中的区块生成方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个待安装电网网络,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种区块链系统中的区块生成方法,应用于区块生成节点,其特征在于,所述方法包括:
将所述区块生成节点自身调整为锁住状态;
根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,其中,所述第一节点为区块链系统中除所述区块生成节点以外的授权节点;
获取所述第一节点对于所述区块生成请求的响应结果;
当所述响应结果中的一半以上为同意时,生成区块;
当所述区块生成后,将所述区块生成节点调整为未锁住状态;
将所述区块广播至所述第一节点,使得该所述第一节点将所述区块添加至对应的本地区块链中,并将自身调整为未锁住状态;
其中,处于锁住状态的区块生成节点和第一节点对于任何来自其他节点的获得产生区块权限的请求,都会拒绝。
2.根据权利要求1所述的区块链系统中的区块生成方法,其特征在于,根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,具体包括:
当所述区块生成节点对应的区块生成节点类型为INTURN时,发送区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态。
3.根据权利要求2所述的区块链系统中的区块生成方法,其特征在于,根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,还包括:
当所述区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN的第一节点基于所述抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于所述区块生成请求,将自身调整为锁住状态。
4.根据权利要求1所述的区块链系统中的区块生成方法,其特征在于,所述第一节点中对于所述响应结果的配置过程包括:
获取所述区块生成请求中携带的所述区块的区块高度;
获取所述区块高度和本地区块链当前高度的高度差;
当所述高度差为预设阈值时,判定所述响应结果为同意,否则,判定为不同意。
5.一种区块链系统中的区块生成节点,其特征在于,包括:
调整单元,用于将所述区块生成节点自身调整为锁住状态;还用于当所述区块生成后,将所述区块生成节点调整为未锁住状态;
发送单元,用于根据所述区块生成节点对应的区块生成节点类型,发送对应的区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态,其中,所述第一节点为区块链系统中除所述区块生成节点以外的授权节点;
获取单元,用于获取所述第一节点对于所述区块生成请求的响应结果;
生成单元,用于当所述响应结果中的一半以上为同意时,生成区块;
广播单元,用于将所述区块广播至所述第一节点,使得该所述第一节点将所述区块添加至对应的本地区块链中,并将自身调整为未锁住状态;
其中,处于锁住状态的区块生成节点和第一节点对于任何来自其他节点的获得产生区块权限的请求,都会拒绝。
6.根据权利要求5所述的区块链系统中的区块生成节点,其特征在于,所述发送单元,具体用于当所述区块生成节点对应的区块生成节点类型为INTURN时,发送区块生成请求至第一节点,使得所述第一节点基于所述区块生成请求,将自身调整为锁住状态。
7.根据权利要求6所述的区块链系统中的区块生成节点,其特征在于,所述发送单元还用于:
当所述区块生成节点对应的区块生成节点类型为OUT-OF-TURN时,发送抢夺锁请求至节点类型为INTURN的第一节点,使得节点类型为INTURN的第一节点基于所述抢夺锁请求,将自身调整为锁住状态;
当获取到节点类型为INTURN的第一节点返回的同意结果时,发送区块生成请求至除节点类型为INTURN的第一节点以外的第一节点,使得该第一节点基于所述区块生成请求,将自身调整为锁住状态。
8.一种区块链系统中的区块生成设备,其特征在于,所述设备包括处理器以及存储器;
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1至4中任一项所述的区块链系统中的区块生成方法。
9.一种存储介质,其特征在于,所述存储介质用于存储程序代码,所述程序代码用于执行权利要求1至4中任一项所述的区块链系统中的区块生成方法。
CN202111668661.8A 2021-12-30 2021-12-30 一种区块链系统中的区块生成方法和相关装置 Active CN114338677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111668661.8A CN114338677B (zh) 2021-12-30 2021-12-30 一种区块链系统中的区块生成方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111668661.8A CN114338677B (zh) 2021-12-30 2021-12-30 一种区块链系统中的区块生成方法和相关装置

Publications (2)

Publication Number Publication Date
CN114338677A CN114338677A (zh) 2022-04-12
CN114338677B true CN114338677B (zh) 2022-10-21

Family

ID=81020173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111668661.8A Active CN114338677B (zh) 2021-12-30 2021-12-30 一种区块链系统中的区块生成方法和相关装置

Country Status (1)

Country Link
CN (1) CN114338677B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108846776A (zh) * 2018-04-19 2018-11-20 中山大学 一种基于区块链技术的数字版权保护方法
CN112035144A (zh) * 2020-09-01 2020-12-04 平安付科技服务有限公司 区块链系统的升级方法、装置、计算机设备及存储介质
CN112233282A (zh) * 2020-10-14 2021-01-15 重庆创敏科技集团有限责任公司 一种区块链式的人工智能安全智能门锁系统
CN113114613A (zh) * 2020-12-29 2021-07-13 上海能链众合科技有限公司 一种区块链容错共识的流水线处理方法
CN113163011A (zh) * 2021-04-21 2021-07-23 深圳壹账通智能科技有限公司 区块链中修改数据的方法、系统、设备及存储介质
WO2021204181A1 (zh) * 2020-04-09 2021-10-14 堡垒科技有限公司 用于防止区块链分叉的方法和设备
WO2021238298A1 (zh) * 2020-05-29 2021-12-02 中国银联股份有限公司 区块链系统的共识方法、装置、设备及介质
WO2021244208A1 (zh) * 2020-06-01 2021-12-09 腾讯科技(深圳)有限公司 区块链的提案消息处理方法、装置、设备以及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3088610A1 (en) * 2018-01-17 2019-07-25 Geeq Corporation Blockchain methods, nodes, systems and products

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108846776A (zh) * 2018-04-19 2018-11-20 中山大学 一种基于区块链技术的数字版权保护方法
WO2021204181A1 (zh) * 2020-04-09 2021-10-14 堡垒科技有限公司 用于防止区块链分叉的方法和设备
WO2021238298A1 (zh) * 2020-05-29 2021-12-02 中国银联股份有限公司 区块链系统的共识方法、装置、设备及介质
WO2021244208A1 (zh) * 2020-06-01 2021-12-09 腾讯科技(深圳)有限公司 区块链的提案消息处理方法、装置、设备以及存储介质
CN112035144A (zh) * 2020-09-01 2020-12-04 平安付科技服务有限公司 区块链系统的升级方法、装置、计算机设备及存储介质
CN112233282A (zh) * 2020-10-14 2021-01-15 重庆创敏科技集团有限责任公司 一种区块链式的人工智能安全智能门锁系统
CN113114613A (zh) * 2020-12-29 2021-07-13 上海能链众合科技有限公司 一种区块链容错共识的流水线处理方法
CN113163011A (zh) * 2021-04-21 2021-07-23 深圳壹账通智能科技有限公司 区块链中修改数据的方法、系统、设备及存储介质

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
EtherShare: Share Information in JointCloud Environment Using Blockchain-Based Smart Contracts;Peilin Zheng;《2019 IEEE International Conference on Service-Oriented System Engineering (SOSE)》;20190506;全文 *
Poster: Efficient Blockchain-based Software Systems via Hierarchical Bucket Tree;Weili Chen;《2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion)》;20180830;全文 *
XBlock-ETH: Extracting and Exploring Blockchain Data From Ethereum;Peilin Zheng;《IEEE Open Journal of the Computer Society ( Volume: 1)》;20200505;全文 *
区块链交易网络研究综述;舞嘉婧;《中山大学学报》;20210521;全文 *
区块链安全、隐私与性能问题研究综述;曹雪莲;《计算机集成制造系统》;20210308;全文 *
区块链技术专题序言;高洪皓;《计算机科学》;20211115;全文 *
比特币区块链分叉研究;王健等;《通信技术》;20180110(第01期);全文 *

Also Published As

Publication number Publication date
CN114338677A (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
JP7225208B2 (ja) ブロックチェーンにおける擬似乱数生成
CN110875821B (zh) 密码学区块链互操作
US11228447B2 (en) Secure dynamic threshold signature scheme employing trusted hardware
US20190294817A1 (en) Method and system for managing access to personal data by means of a smart contract
CN110177124B (zh) 基于区块链的身份认证方法及相关设备
CN107491519B (zh) 区块链账本的查询方法及装置
CN111131171B (zh) 一种基于区块链网络的节点认证方法及装置
EP3474172A1 (de) Zugangskontrolle unter verwendung einer blockchain
JP2002514024A (ja) メッセージ交換ネットワーク内でスマートカードを認証するための方法
US20230412399A1 (en) Database Multi-Authentication Method and System, Terminal, and Storage Medium
US11847099B2 (en) Synchronizing content
CN111095861A (zh) 用于保护区块链上资源的改进时间锁技术
Tzong-Chen et al. Authenticating passwords over an insecure channel
CN112101945B (zh) 一种区块链内容的监管方法及系统
CN114338677B (zh) 一种区块链系统中的区块生成方法和相关装置
CN111078649A (zh) 基于区块链的云上文件存储方法、装置及电子设备
CN110825806A (zh) 分布式数据存储
CA2986731A1 (en) A blockchain based smart home security solution
CN113595731A (zh) 一种分享链接的防护方法、装置及计算机可读存储介质
CN111147477A (zh) 一种基于区块链网络的验证方法及装置
CN112116461A (zh) 区块链及其共识方法
US20130007861A1 (en) Methods for authenticating a user without personal information and devices thereof
US20230360123A1 (en) Cryptocurrency exchange platform
KR102234542B1 (ko) 블록 체인 기반 영상 저작물 관리 방법
US11818267B1 (en) Multi-level access distributed ledger system

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240311

Address after: Room 201, No. 226 Hedong Road, Liwan District, Guangzhou City, Guangdong Province, 510163, self compiled B0261

Patentee after: Guangzhou Zhuwan Chain Big Data Technology Co.,Ltd.

Country or region after: China

Address before: 510275 No. 135 West Xingang Road, Guangdong, Guangzhou

Patentee before: SUN YAT-SEN University

Country or region before: China