CN114647668B - 应用于联盟链的交易回执查询方法及系统 - Google Patents
应用于联盟链的交易回执查询方法及系统 Download PDFInfo
- Publication number
- CN114647668B CN114647668B CN202210536159.XA CN202210536159A CN114647668B CN 114647668 B CN114647668 B CN 114647668B CN 202210536159 A CN202210536159 A CN 202210536159A CN 114647668 B CN114647668 B CN 114647668B
- Authority
- CN
- China
- Prior art keywords
- query
- transaction
- transaction receipt
- node
- channel
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computational Linguistics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种应用于联盟链的交易回执查询方法及系统。所述交易回执查询方法根据目标通道的通道参数构造交易回执查询体,将交易回执查询体放入至延迟队列;当系统时间大于等于查询触发时间,从延迟队列中拿取交易回执查询体,并从目标通道中获取对应的上链结果。若未查询到上链结果,则查询次数自增一次,并根据预设时间更新模型计算下一次的查询触发时间,将更新后的交易回执查询体放入延迟队列,等待下一次查询触发。所述交易回执查询方法根据不同通道的通道参数以及实时交易吞吐量等因素来动态灵活调整交易查询的间隔时间,达到自动化确认交易上链结果的目的,同时节省了系统资源。
Description
技术领域
本申请涉及区块链技术领域,特别涉及应用于联盟链的交易回执查询方法及系统。
背景技术
联盟链作为区块链3.0的代表,通过引入节点准入机制以及使用效率更高的BFT(Byzantine Fault Tolerance,拜占庭容错)类算法,提高了链的吞吐量以及处理效率。在联盟链中,根据涉及业务场景的不同,各个节点会被划分至不同的通道中,每个通道对应一项业务场景。
当用户端向某条通道发送交易的时候,该交易首先会被放入到该通道的交易池中,并返回一个可供客户端查询交易执行结果的交易哈希值。当该交易被通道上的某个节点打包进区块,并且经过通道上至少2/3节点的共识确认,该交易才可以被写入到共享账本,成为区块链上的一条不可篡改的记录。这意味着在联盟链中交易的执行和确认是异步的,从交易的发送到交易执行和上链需要经过至少一个出块间隔的等待时间。
在目前的联盟链系统中,比较关注业务的上链操作是否拿到交易哈希值。而在拿到交易哈希值后,往往没有对交易是否被成功执行以及是否被及时上链进行确认。在查询交易是否成功上链时,目前一般采用轮询的方式进行查询。但在高吞吐量的情况下,上述查询方法会占用联盟链系统的很多资源,严重影响联盟链系统的性能。
发明内容
为了解决目前采用的轮询的查询方法在高吞吐量的情况下,会占用联盟链系统的很多资源,严重影响联盟链系统性能的问题,本申请通过以下方面提供一种应用于联盟链的交易回执查询方法及系统。
本申请的第一方面提供了一种应用于联盟链的交易回执查询方法。所述交易回执查询方法应用于交易回执查询系统中,所述交易回执查询系统用于根据目标交易的交易哈希值获取所述目标交易的上链结果;所述交易回执查询方法包括:
获取目标通道的通道参数,其中,目标通道为目标交易所在的通道,通道参数包括通道标识、以及出块时间间隔;
根据目标交易的交易哈希值和通道参数,生成交易回执查询体,并将交易回执查询体放入延迟队列;其中,交易回执查询体包括通道标识、交易哈希值、出块时间间隔、查询触发时间、查询次数,延迟队列中按照查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序,查询触发时间根据出块时间间隔和查询次数按照预设时间更新模型计算得到;
当系统时间大于或者等于查询触发时间时,从延迟队列中拿取交易回执查询体;
根据交易回执查询体从目标通道中获取目标交易的上链结果;
若没有查询到上链结果,则将交易回执查询体中的查询次数增加一次,并更新交易回执查询体中的查询触发时间,将更新后的交易回执查询体放入延迟队列。
在一些实施例中,交易回执查询体还包括最大查询次数;
若查询次数大于最大查询次数,则终止执行当前交易回执查询方法,并在延迟队列中删除交易回执查询体。
在一些实施例中,预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×(2^n)+b,
其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。
在一些实施例中,预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×(n+1)+b,
其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。
在一些实施例中,预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×log2(n+2)+b,
其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。
在一些实施例中,根据交易回执查询体从目标通道中获取目标交易的上链结果,包括:
根据交易回执查询体中的通道标识获取目标通道的可用节点列表,其中,可用节点列表根据目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,节点连接实体用于调用对应的节点对通道进行操作;
从可用节点列表中获取第一节点连接实体,其中,第一节点连接实体是可用节点列表中的任一个节点连接实体;
使用第一节点连接实体调用对应的节点向目标通道发送交易回执查询请求,获取目标交易的上链结果;
若目标通道在预设时间内没有返回目标交易的上链结果,则将第一节点连接实体加入到节点黑名单,更新可用节点列表,并继续执行从可用节点列表中获取第一节点连接实体的步骤。
在一些实施例中,若上链结果为对应的节点被冻结或者移除,则将第一节点连接实体加入到节点黑名单,更新可用节点列表,并继续执行从可用节点列表中获取第一节点连接实体的步骤。
在一些实施例中,使用节点黑名单中的第二节点连接实体向目标通道发送连接请求,其中,第二节点连接实体是节点黑名单的任一个节点连接实体;
若目标通道反馈对应于连接请求的信息,则将第二节点连接实体从节点黑名单中删除。
本申请第二方面提供一种应用于联盟链的交易回执查询系统。所述交易回执查询系统用于执行本申请第一方面提供的应用于联盟链的交易回执查询方法;所述回执查询系统包括:
参数获取模块,用于获取目标通道的通道参数,其中,目标通道为目标交易所在的通道,通道参数包括通道标识、以及出块时间间隔;
查询体生成模块,用于根据目标交易的交易哈希值和通道参数,生成交易回执查询体,并将交易回执查询体放入延迟队列模块;其中,交易回执查询体包括通道标识、交易哈希值、出块时间间隔、查询触发时间、查询次数,查询触发时间根据出块时间间隔和查询次数按照预设时间更新模型计算得到;
延迟队列模块用于存放交易回执查询体,并按照查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序;
查询执行模块,用于执行以下操作:
当系统时间大于或者等于查询触发时间时,从延迟队列模块中拿取交易回执查询体;
根据交易回执查询体从目标通道中获取目标交易的上链结果;
若没有查询到上链结果,则将交易回执查询体中的查询次数增加一次,并更新交易回执查询体中的查询触发时间,将更新后的交易回执查询体放入延迟队列模块。
在一些实施例中,查询执行模块还用于执行以下操作:
根据交易回执查询体中的通道标识获取目标通道的可用节点列表,其中,可用节点列表根据目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,节点连接实体用于调用对应的节点对通道进行操作;
从可用节点列表中获取第一节点连接实体,其中,第一节点连接实体是可用节点列表中的任一个节点连接实体;
使用第一节点连接实体调用对应的节点向目标通道发送交易回执查询请求,获取目标交易的上链结果;
若目标通道在预设时间内没有返回目标交易的上链结果,则将第一节点连接实体加入到节点黑名单,更新可用节点列表,并继续执行从可用节点列表中获取第一节点连接实体的步骤。
本申请提供了一种应用于联盟链的交易回执查询方法及系统。所述交易回执查询方法根据目标通道的通道参数构造交易回执查询体,将交易回执查询体放入至延迟队列;当系统时间大于等于查询触发时间,从延迟队列中拿取交易回执查询体,并从目标通道中获取对应的上链结果。若未查询到上链结果,则查询次数自增一次,并根据预设时间更新模型计算下一次的查询触发时间,将更新后的交易回执查询体放入延迟队列,等待下一次查询触发。所述交易回执查询方法根据不同通道的通道参数以及实时交易吞吐量等因素来动态灵活调整交易查询的间隔时间,达到自动化确认交易上链结果的目的,同时节省了系统资源。
附图说明
图1为本申请实施例提供的一种应用于联盟链的交易回执查询方法的应用场景示意图;
图2为本申请实施例提供一种应用于联盟链的交易回执查询方法的工作流程示意图;
图3为本申请实施例提供的一种应用于联盟链的交易回执查询方法中步骤14在一种实现方式中的工作流程示意图;
图4为本申请实施例提供的一种应用于联盟链的交易回执查询系统的结构示意图。
具体实施方式
为了解决目前采用的轮询的查询方法在高吞吐量的情况下,会占用联盟链系统的很多资源,严重影响联盟链系统性能的问题,本申请通过以下实施例提供了一种应用于联盟链的交易回执查询方法及系统。
本申请第一实施例提供一种应用于联盟链的交易回执查询方法,应用于交易回执查询系统。参见图1,用户端通过调用交易回执查询系统从区块链网络中获取目标交易的上链结果。本申请中的区块链网路是一种联盟链网络,示例性的,本申请的联盟链网络按照业务划分了4个通道;交易回执查询系统从目标交易所在的目标通道中获取对应的上链结果。在一些实施例中,交易回执查询系统可以是联盟链网路的业务系统的一部分。
参见图2,本实施例提供的一种应用于联盟链的交易回执查询方法包括步骤11-15。
步骤11,获取目标通道的通道参数,其中,所述目标通道为所述目标交易所在的通道,所述通道参数包括通道标识、以及出块时间间隔。在一些实施例中,获取的目标通道的通道参数还包括目标通道的交易池大小、区块最大字节数等信息。
步骤12,根据所述目标交易的交易哈希值和所述通道参数,生成交易回执查询体,并将交易回执查询体放入延迟队列;其中,所述交易回执查询体包括所述通道标识、所述交易哈希值、所述出块时间间隔、查询触发时间、查询次数,所述延迟队列中按照查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序,查询触发时间根据出块时间间隔和查询次数按照预设时间更新模型计算得到。
在本实施例中,对于交易回执查询体可采用多种范式来构建。示例性的,可采用如表1所示的范式结构。其中,channelId是目标交易所发送至的目标通道的名称;tranHash是目标通道的返回的交易哈希值,可以用于查询目标交易的交易回执;delayInterval是通过交易哈希查询交易回执的出块时间间隔;triggerTime是该查询动作触发的具体时间,具体由当前时间、查询次数以及出块时间间隔按照预设时间更新模型计算而来。retryNumber是查询次数,初始值设为0。
表1 交易回执查询体的范式结构示例
在一种实现方式中,交易回执查询体还包括maxRetryNumber字段,即最大查询次数。如果查询次数超过了最大查询次数,则默认目标交易未被打包,终止执行当前的交易回执查询方法,并将延迟队列中的对应的交易回执查询体删除。其中,最大查询次数可以根据实际情况进行设置。
将交易回执体放入至延迟队列中。延迟队列会按照交易回执查询体中设置的延迟触发时间从小到大排序。需要说明的是,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作。延迟队列是这样一种队列:队列中的元素有一个过期时间,元素在队列中顺序是按照过期时间排序的,只有到达过期时间的元素才能出队,最先到达过期时间的元素最先出队。
在本实施例中,交易回执查询系统中可以包括多个预设时间更新模型。在构造交易回执查询体时,可以根据目标通道的通道参数、目标通道的交易池大小、目标通道的出块时间间隔以及实时交易吞吐量来选择合适的预设时间更新模型来计算查询触发时间。
示例性的,本实施例提供了三种基于出块时间间隔的预设时间更新模型,分别为指数型时间更新模型、线性时间更新模型和对数时间更新模型。
在一种实现方式中,指数型时间更新模型为:triggerTime=nowTime+a×delayInterval×(2^n)+b,其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。示例性的,a取1,b取0,当n=0时,triggerTime=nowTime+delayInterval,即用户端拿到交易哈希之后,间隔一个出块时间间隔第一次查询目标交易的交易回执。如果目标交易还未被打包,则随着查询次数的增加,分别会间隔2、4、8、16、32倍的出块时间间隔去查询目标交易是否已经被确认。当查询次数大于最大查询次数时,则将目标交易查询体从延迟队列中移除,不再进行查询。
在一种实现方式中,线性时间更新模型为:triggerTime=nowTime+a×delayInterval×(n+1)+b,其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。示例性的,当a取1,b取0,n为0时,tiggerTime=nowTime+delayInterval,即用户端拿到交易哈希之后,间隔一个出块时间间隔第一次查询目标交易的交易回执。如果目标交易还未被打包,则随着查询次数的增加,会间隔2、3、4、5、6倍的出块时间间隔去查询目标交易是否已经被确认。当查询次数大于最大查询次数时,则将目标交易查询体从延迟队列中移除,不再进行查询。
在一种实现方式中,对数时间更新模型为:triggerTime=nowTime+a×delayInterval×log2(n+2)+b,其中,triggerTime为查询触发时间,nowTime为当前系统时间,delayInterval为出块时间间隔,a、b为常数,n为查询次数。示例性的,当a取1,b取0,n为0时,triggerTime=nowTime+delayInterval,即用户端拿到交易哈希之后,间隔一个出块时间间隔第一次去查询目标交易的交易回执。如果目标交易还未被打包,则随着查询次数的增加,在查询次数达到2次、6次、14次的时候,对应的会间隔2、3、4个时间间隔去查询目标交易是否已经被确认。示例性的,a取1,b取0,当n=1时,即对应的执行第二次查询目标交易的上链结果的操作,会在上次查询的时间的基础上间隔约1.3倍个出块时间间隔去执行查询目标交易的交易回执的操作。当查询次数大于最大查询次数时,则将目标交易查询体从延迟队列中移除,不再进行查询。
需要说明的是,在上述三种时间更新模型中,常数a、b可以根据具体的情况进行调整,在不同的模型中也可以设置不同的常数。
这三种时间更新模型都是随着查询次数的增加,查询触发时间之间的间隔也会随之增加,但是增加的幅度不同。具体的,指数型时间更新模型的查询触发时间间隔的增加幅度大于线性时间更新模型的查询触发时间间隔的增加幅度大于对数时间更新模型的查询触发时间间隔的增加幅度。
当目标通道的交易池容量较大,目标交易的交易发送时间在交易峰值附近时,目标交易有很大概率会在交易池中待较长时间才被打包,因此,可以选择查询触发时间间隔增长幅度较大的指数型时间更新模型或者线性时间更新模型去计算更新后的查询触发时间。当交易池容量较小,交易发送量也较小时,则可以选择查询触发时间间隔增长幅度较小的对数时间更新模型。
需要说明的是,本实施例只是示例性的提供三种预设时间更新模型,其他能反映查询触发时间间隔增长幅度和查询次数以及出块时间间隔之间关系的模型都可以应用于本实施例提供的交易回执查询方法中。本申请对具体使用的预设时间更新模型不做限制。
步骤13,当系统时间大于或者等于查询触发时间时,从延迟队列中拿取交易回执查询体。
只有系统时间大于等于查询触发时间,才可以从延迟队列中拿取交易回执查询体。其中,当从延迟队列中拿取一个交易回执查询体的时候,延迟队列中对应的元素就会自动删除。在实际应用中,因为系统时间的增加粒度和查询触发时间的增加粒度一般是不一样的,所以系统时间大于等于查询触发时间时都可以执行拿取交易回执查询体的操作。示例性的,系统时间的增加粒度是秒,查询触发时间的增加粒度是毫秒,从20点04分01秒到20点04分02秒之间有1000毫秒,系统时间有可能不能刚好等于查询触发时间。所以,在本实施例中,当系统时间大于或者等于查询触发时间时,就可以从延迟队列中拿取交易回执查询体。步骤14,根据交易回执查询体从目标通道中获取所述目标交易的上链结果。其中,上链结果为上链成功或者上链失败。只要查询到了对应的上链结果,无论是上链成功还是上链失败都不再继续查询。
步骤15,若没有查询到上链结果,则将交易回执查询体中的查询次数增加一次,并根据预设时间更新模型计算更新后的查询触发时间,将更新后的交易回执查询体放入所述延迟队列。
根据上链结果的不同来进行不同的后续处理。如果上链结果为成功,说明目标交易被成已经写入至区块链账本中,则执行以下操作:通过交易回执解析得到目标交易的具体信息,对目标交易进行后续的业务处理。如果上链结果为失败,说明目标交易没有被写入至区块链账本,则不会对目标交易进行后续的业务处理;在一种实现方式中,如果上链结果为失败,可以给用户端发送一个目标交易上链失败的提示信息。
如果返回的信息是没有查询到上链结果,说明目标交易尚未写入至区块链账本中,则将交易回执查询体的查询次数增加一次,并根据预设时间更新模型计算更新后的查询触发时间,将更新后的交易回执查询体再次放入延迟队列中。延迟队里按照更新后的查询触发时间再对更新后的交易回执查询体进行排序。
在联盟链中,交易可以分为系统交易和业务交易。系统交易用于驱动系统合约,用于实现联盟链或者通道本身的一些功能。例如,系统交易包括增加节点到通道中、冻结节点、解冻节点、移除节点、修改链的出块时间、修改交易池的大小等。业务交易则用于驱动业务合约,实现自定义的业务功能。业务合约即平常所说的智能合约,由用户部署到联盟链上。
当联盟链的业务系统构造了冻结节点或者移除节点之类的系统交易,并将交易发送到对应的通道中,可以拿到交易的哈希值,但是由于上述系统交易生效之后,对应的节点在通道中已经“失效”,无法使用上述节点查询交易回执。也就是说,步骤14中得到的上链结果还可能包括:对应的节点已经被冻结、对应的节点已经被移除等。需要说明的是,本申请所述的交易回执查询系统可以是联盟链的业务系统的一部分。
为此,在一种实现方式中,本实施例提供的交易回执查询方法还具有智能选取节点的功能,以选取合适的节点来执行发送交易回执查询请求的操作。参见图3,本实施例提供的步骤14包括步骤21-25。
步骤21,根据交易回执查询体中的通道标识获取目标通道的可用节点列表,其中,可用节点列表根据目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,节点连接实体用于调用对应的节点对通道进行操作。
步骤22,从可用节点列表中获取第一节点连接实体,其中,第一节点连接实体是可用节点列表中的任一个节点连接实体。
在执行交易回执查询时从可用节点列表中选取任意一个节点连接实体对通道进行操作,获取对应的上链结果。
步骤23,使用第一节点连接实体调用对应的节点向目标通道发送交易回执查询请求。
步骤24,若目标通道在预设时间内没有返回目标交易的上链结果,则将第一节点连接实体加入到节点黑名单,更新可用节点列表,并继续执行从可用节点列表中获取第一节点连接实体的步骤。
步骤25,得到目标交易的上链结果。
在本实施例中,每个通道都维护对应的通道连接池。通过查询通道中对应的节点列表,使用节点的节点id、调用地址、端口、公私钥等配置信息,初始化节点连接实体。节点连接实体具有访问区块链相应节点的能力,并具有对区块链网络进行操作的能力。在实际应用中,通道连接池相当于是结构化数据,初始化节点连接实体可以通过将节点的上述配置信息放入到结构化数据中来实现。节点连接实体根据通道标识,放在对应的通道连接池中。
在对目标通道发起操作时,从对应的通道连接池中任一选取一个节点连接实体即可对目标通道进行操作。但是如果向某个通道发送了如“冻结节点”或者“移除节点”之类的特殊的系统交易,会导致对应的节点暂时失效。而且由于联盟链允许1/3作恶节点的存在,这也使得某些节点变得不那么可靠,可能存在无法调用的情况。另外,可能因为被调用的节点的网络信号不好,或者因为被调用的节点宕机,或者因为被调用的节点在进行交互时反应时间过长,又或者在调用节点时调用地址写错等等意外情况,会导致被调用的节点超过预设时间都没有返回上链结果。为此,每个通道的通道连接池中还维护了一个节点黑名单。将被执行了特殊的系统交易的节点、以及超过预设时间还没有返回上链结果的节点都加入到节点黑名单中。如此,根据通道连接池中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到目标通道的可用节点列表。
在一种实现方式中,对可用节点列表中的初始节点连接实体进行编号,编号为正整数,从0开始,并依次递增,同时设置超时转移的预设时间。随机选取编号中的某个节点连接实体发起调用,记录调用时间,如果调用时间大于或者等于预设时间仍然没有结果返回,则认为该节点失去连接,将该节点加入到节点黑名单中,并自动切换为下一个节点,下一个节点仍然按照随机的策略进行选取。
使用节点黑名单中的第二节点连接实体向目标通道发送连接请求,其中,第二节点连接实体是节点黑名单的任一个节点连接实体;若目标通道反馈对应于连接请求的信息,则将第二节点连接实体从节点黑名单中删除。在一种实现方式中,对于处于节点黑名单中的节点,使用一个线程遍历该节点黑名单,并依次使用节点黑名单中的节点连接实体去向对应的通道发送心跳信号。如果可以正常获取通道返回的信息,则将该节点连接实体从节点黑名单中移除。
需要说明的是,在本申请中,第一节点连接实体用于指代可用节点列表中的任一个连接实体,也可以使用可用节点连接实体等其他名称;第二节点连接实体用于指代黑名单中的任一个节点连接实体,也可以使用超时节点连接实体等其他名称,本申请对此不做具体限制。另外,“第一”“第二”不意味着限定特定的顺序或者先后次,应该理解这样使用的用语在适当情况下可以互换。
在一种实现方式中,本实施例提供的交易回执查询方法还包括以下操作:若上链结果为对应的节点被冻结或者移除,则将第一节点实体加入到节点黑名单,更新可用节点列表;并继续执行从可用节点列表中获取第一节点连接实体的步骤,即跳回步骤22继续执行,直到获取的上链结果是成功或者失败。
本申请提供了一种应用于联盟链的交易回执查询方法及系统。所述交易回执查询方法根据目标通道的通道参数构造交易回执查询体,将交易回执查询体放入至延迟队列;当系统时间大于或者等于查询触发时间,从延迟队列中拿取交易回执查询体,并从目标通道中获取对应的上链结果。若未查询到上链结果,则查询次数自增一次,并根据预设时间更新模型计算下一次的查询触发时间,将更新后的交易回执查询体放入延迟队列,等待下一次查询触发。所述交易回执查询方法根据不同通道的通道参数以及实时交易吞吐量等因素来动态灵活调整交易查询的间隔时间,达到自动化确认交易上链结果的目的,同时节省了系统资源。
进一步的,本实施例提供一种基于节点黑名单的节点超时转移选取策略,可以在联盟链的业务系统构造了冻结节点或者移除节点之类的系统交易的情况下、或者被调用的节点发生意外的情况下、或者遇到恶意节点的情况下,自动选取通道中的其他节点来执行交易回执查询操作,保证所述交易回执查询方法的可靠性。
与前述应用于联盟链的交易回执查询方法的实施例相对应,本申请还提供了一种应用于联盟链的交易回执查询系统的实施例。所述交易回执查询系统用于执行本申请第一实施例所述的应用于联盟链的交易回执查询方法。参见图4,所述交易回执查询系统30包括:参数获取模块31、查询体生成模块32、延迟队列模块33和查询执行模块34。
参数获取模块31用于获取目标通道的通道参数,其中,目标通道为目标交易所在的通道,通道参数包括通道标识、以及出块时间间隔。
查询体生成模块32用于根据目标交易的交易哈希值和通道参数,生成交易回执查询体,并将交易回执查询体放入延迟队列模块33;其中,交易回执查询体包括通道标识、交易哈希值、出块时间间隔、查询触发时间、查询次数;查询触发时间根据出块时间间隔和查询次数按照预设时间更新模型计算得到。
延迟队列模块33用于存放交易回执查询体,并按照查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序。需要说明的是,本实施例中的延迟队列模块对应于本申请第一实施例中的延迟队列。
查询执行模块34,用于执行以下操作:当系统时间大于等于查询触发时间时,从延迟队列模块中拿取交易回执查询体;根据交易回执查询体从目标通道中获取目标交易的上链结果;若未查询到上链结果,则将交易回执查询体中的查询次数增加一次,并更新交易回执查询体中的查询触发时间,将更新后的交易回执查询体放入延迟队列模块33。
在一种实现方式中,查询执行模块34还用于执行以下操作:
当系统时间为所述查询触发时间时,根据所述交易回执查询体中的所述通道标识获取所述目标通道的可用节点列表,其中,所述可用节点列表根据所述目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,所述节点连接实体用于调用对应的节点对通道进行操作;从所述可用节点列表中获取第一节点连接实体,其中,所述第一节点连接实体是所述可用节点列表中的任一个所述节点连接实体。
使用所述第一节点连接实体调用对应的节点向所述目标通道发送交易回执查询请求,获取所述目标交易的上链结果。
若所述目标通道在预设时间内没有返回所述目标交易的上链结果,则将所述第一节点连接实体加入到所述节点黑名单,更新所述可用节点列表,并继续执行从所述可用节点列表中获取第一节点连接实体的步骤。
上述系统30中在应用前述方法时的作用效果可参见前述方法实施例中的说明,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由本申请的权利要求指出。
本说明书中各个实施例之间相似相同部分互相参见即可。
Claims (10)
1.一种应用于联盟链的交易回执查询方法,其特征在于,所述交易回执查询方法应用于交易回执查询系统中,所述交易回执查询系统用于根据目标交易的交易哈希值获取所述目标交易的上链结果;所述交易回执查询方法包括:
获取目标通道的通道参数,其中,所述目标通道为所述目标交易所在的通道,所述通道参数包括通道标识、以及出块时间间隔;
根据所述目标交易的交易哈希值和所述通道参数,生成交易回执查询体,并将交易回执查询体放入延迟队列;其中,所述交易回执查询体包括所述通道标识、所述交易哈希值、所述出块时间间隔、查询触发时间、查询次数,所述延迟队列中按照查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序,所述查询触发时间根据所述出块时间间隔和所述查询次数按照预设时间更新模型计算得到;
当系统时间大于或者等于所述查询触发时间时,从所述延迟队列中拿取所述交易回执查询体;
根据所述交易回执查询体从所述目标通道中获取所述目标交易的上链结果;
若没有查询到所述上链结果,则将交易回执查询体中的查询次数增加一次,并更新交易回执查询体中的查询触发时间,将更新后的交易回执查询体放入所述延迟队列。
2.根据权利要求1所述的交易回执查询方法,其特征在于,所述交易回执查询体还包括最大查询次数;
若所述查询次数大于所述最大查询次数,则终止执行当前所述交易回执查询方法,并在所述延迟队列中删除所述交易回执查询体。
3.根据权利要求1所述的交易回执查询方法,其特征在于,所述预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×(2^n)+b,
其中,triggerTime为所述查询触发时间,nowTime为当前系统时间,delayInterval为所述出块时间间隔,a、b为常数,n为查询次数。
4.根据权利要求1所述的交易回执查询方法,其特征在于,所述预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×(n+1)+b,
其中,triggerTime为所述查询触发时间,nowTime为当前系统时间,delayInterval为所述出块时间间隔,a、b为常数,n为查询次数。
5.根据权利要求1所述的交易回执查询方法,其特征在于,所述预设时间更新模型为:
triggerTime=nowTime+a×delayInterval×log2(n+2) + b,
其中,triggerTime为所述查询触发时间,nowTime为当前系统时间,delayInterval为所述出块时间间隔,a、b为常数,n为查询次数。
6.根据权利要求1所述的交易回执查询方法,其特征在于,根据所述交易回执查询体从所述目标通道中获取所述目标交易的上链结果,包括:
根据所述交易回执查询体中的所述通道标识获取所述目标通道的可用节点列表,其中,所述可用节点列表根据所述目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,所述节点连接实体用于调用对应的节点对通道进行操作;
从所述可用节点列表中获取第一节点连接实体,其中,所述第一节点连接实体是所述可用节点列表中的任一个所述节点连接实体;
使用所述第一节点连接实体调用对应的节点向所述目标通道发送交易回执查询请求;
若所述目标通道在预设时间内没有返回所述目标交易的上链结果,则将所述第一节点连接实体加入到所述节点黑名单,更新所述可用节点列表,并继续执行从所述可用节点列表中获取第一节点连接实体的步骤;
得到所述目标交易的上链结果。
7.根据权利要求6所述的交易回执查询方法,其特征在于,若所述上链结果为对应的节点被冻结或者移除,则将所述第一节点连接实体加入到所述节点黑名单,更新所述可用节点列表,并继续执行从所述可用节点列表中获取第一节点连接实体的步骤。
8.根据权利要求6或7所述的交易回执查询方法,其特征在于,使用所述节点黑名单中的第二节点连接实体向所述目标通道发送连接请求,其中,所述第二节点连接实体是所述节点黑名单的任一个所述节点连接实体;
若所述目标通道反馈对应于所述连接请求的信息,则将所述第二节点连接实体从所述节点黑名单中删除。
9.一种应用于联盟链的交易回执查询系统,其特征在于,所述交易回执查询系统用于执行如权利要求1-8任一项所述的应用于联盟链的交易回执查询方法;所述回执查询系统包括:
参数获取模块,用于获取目标通道的通道参数,其中,所述目标通道为目标交易所在的通道,所述通道参数包括通道标识、以及出块时间间隔;
查询体生成模块,用于根据所述目标交易的交易哈希值和所述通道参数,生成交易回执查询体,并将所述交易回执查询体放入延迟队列模块;其中,所述交易回执查询体包括所述通道标识、所述交易哈希值、所述出块时间间隔、查询触发时间、查询次数,所述查询触发时间根据所述出块时间间隔和所述查询次数按照预设时间更新模型计算得到;
所述延迟队列模块用于存放所述交易回执查询体,并按照所述查询触发时间的先后对至少一个目标交易对应的至少一个交易回执查询体排序;
查询执行模块,用于执行以下操作:
当系统时间大于或者等于所述查询触发时间时,从所述延迟队列模块中拿取所述交易回执查询体;
根据所述交易回执查询体从所述目标通道中获取所述目标交易的上链结果;
若没有查询到所述上链结果,则将交易回执查询体中的查询次数增加一次,并更新交易回执查询体中的查询触发时间,将更新后的交易回执查询体放入所述延迟队列模块。
10.根据权利要求9所述的应用于联盟链的交易回执查询系统,其特征在于,所述查询执行模块还用于执行以下操作:
根据所述交易回执查询体中的所述通道标识获取所述目标通道的可用节点列表,其中,所述可用节点列表根据所述目标通道中的所有节点连接实体去除节点黑名单中的所有节点连接实体得到,所述节点连接实体用于调用对应的节点对通道进行操作;
从所述可用节点列表中获取第一节点连接实体,其中,所述第一节点连接实体是所述可用节点列表中的任一个所述节点连接实体;
使用所述第一节点连接实体调用对应的节点向所述目标通道发送交易回执查询请求,获取所述目标交易的上链结果;
若所述目标通道在预设时间内没有返回所述目标交易的上链结果,则将所述第一节点连接实体加入到所述节点黑名单,更新所述可用节点列表,并继续执行从所述可用节点列表中获取第一节点连接实体的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536159.XA CN114647668B (zh) | 2022-05-18 | 2022-05-18 | 应用于联盟链的交易回执查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210536159.XA CN114647668B (zh) | 2022-05-18 | 2022-05-18 | 应用于联盟链的交易回执查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114647668A CN114647668A (zh) | 2022-06-21 |
CN114647668B true CN114647668B (zh) | 2022-09-23 |
Family
ID=81996420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210536159.XA Active CN114647668B (zh) | 2022-05-18 | 2022-05-18 | 应用于联盟链的交易回执查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114647668B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063183A (zh) * | 2018-08-27 | 2018-12-21 | 众安信息技术服务有限公司 | 在区块链节点处进行信息处理的方法及装置 |
CN110049087A (zh) * | 2018-12-28 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种联盟链的可信度验证方法、系统、装置及设备 |
CN110222116A (zh) * | 2019-05-07 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 一种交易数据存储的控制方法、装置及存储介质 |
-
2022
- 2022-05-18 CN CN202210536159.XA patent/CN114647668B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063183A (zh) * | 2018-08-27 | 2018-12-21 | 众安信息技术服务有限公司 | 在区块链节点处进行信息处理的方法及装置 |
CN110049087A (zh) * | 2018-12-28 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种联盟链的可信度验证方法、系统、装置及设备 |
CN110222116A (zh) * | 2019-05-07 | 2019-09-10 | 北京奇艺世纪科技有限公司 | 一种交易数据存储的控制方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114647668A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107332876B (zh) | 区块链状态的同步方法及装置 | |
CN108449256B (zh) | 消息推送的处理方法、装置、计算机设备及存储介质 | |
JP2020512708A5 (zh) | ||
EP1643681A1 (en) | Scheduled determination of networks resource availability | |
CN111277639A (zh) | 一种保持数据一致性的方法和装置 | |
EP1762069B1 (en) | Method of selecting one server out of a server set | |
WO2020253102A1 (zh) | 线上背书签名方法、装置、设备和存储介质 | |
CN105516086A (zh) | 业务处理方法及装置 | |
CN107395559A (zh) | 基于redis的数据处理方法及设备 | |
CN109947081B (zh) | 网联车辆控制方法及装置 | |
CN114647668B (zh) | 应用于联盟链的交易回执查询方法及系统 | |
CN114268628A (zh) | 跨区块链服务平台组网方法、系统、设备和存储介质 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN116647476A (zh) | 网络管理方法、装置、计算机设备、存储介质和程序产品 | |
CN111625323A (zh) | 分布式任务处理方法、装置、设备及计算机可读存储介质 | |
CN114500237B (zh) | 一种通信方法和系统 | |
CN111190913A (zh) | 一种分布式锁实现方法及系统 | |
CN108781215B (zh) | 网络服务实现方法、服务控制器及通信系统 | |
CN111935737B (zh) | 实现网络切片生命周期管理的网络切片管理系统和方法 | |
CN113687962A (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN114422573A (zh) | 报文发送方法及装置、存储介质及电子装置 | |
US6430627B1 (en) | Enhanced processing technique for object-oriented software | |
WO1993018464A1 (en) | Distributed processing system | |
CN115150031B (zh) | 基于分布式消息的分布式系统消息响应方法及装置 | |
CN113992732B (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 |