交易筛选方法、计算机设备和存储介质与流程

文档序号:29126192发布日期:2022-03-05 00:04阅读:65来源:国知局
交易筛选方法、计算机设备和存储介质与流程

1.本技术涉及区块链技术领域,具体涉及一种交易筛选方法、计算机设备和存储介质。


背景技术:

2.在现有技术中,如果区块链的合约中出现bug,则在区块链升级版本修复该bug前,调用该合约执行的交易将会执行失败,白白损失手续费,用户体验不良。


技术实现要素:

3.鉴于现有技术中的上述缺陷或不足,期望提供一种降低手续费损失,提高用户体验的交易筛选方法、计算机设备和存储介质。
4.第一方面,本发明提供一种适用于区块链节点的交易筛选方法,区块链上配置有修复合约,上述方法包括:
5.接收管理员的第一客户端生成的第一待修复交易;其中,第一修复交易包括待修复合约的待修复合约名称;
6.通过修复合约执行第一待修复交易,在执行成功时,通过修复合约将待修复合约名称添加到待修复合约列表中以更新待修复合约列表;
7.获取第一交易;
8.判断第一交易所调用的合约的第一合约名称是否在待修复合约列表中:
9.是,则将第一交易从交易池中删除。
10.第二方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的交易筛选方法。
11.第三方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的交易筛选方法。
12.本发明诸多实施例提供的交易筛选方法、计算机设备和存储介质通过接收管理员的第一客户端生成的第一待修复交易;通过修复合约执行第一待修复交易,在执行成功时,通过修复合约将待修复合约名称添加到待修复合约列表中以更新待修复合约列表;获取第一交易;判断第一交易所调用的合约的第一合约名称是否在待修复合约列表中:是,则将第一交易从交易池中删除的方法,降低手续费损失,提高用户体验。
附图说明
13.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:
14.图1为本发明一实施例提供的一种交易筛选方法的流程图。
15.图2为图1所示方法的一种优选实施方式中步骤s11的流程图。
16.图3为图1所示方法的一种优选实施方式的流程图。
17.图4为图3所示方法的一种优选实施方式的流程图。
18.图5为图4所示方法的一种优选实施方式的流程图。
19.图6为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
20.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
21.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
22.图1为本发明一实施例提供的一种交易筛选方法的流程图。
23.如图1所示,在本实施例中,本发明提供一种适用于区块链节点的交易筛选方法,区块链上配置有修复合约,上述方法包括:
24.s11:接收管理员的第一客户端生成的第一待修复交易;其中,第一修复交易包括待修复合约的待修复合约名称;
25.s12:通过修复合约执行第一待修复交易,在执行成功时,通过修复合约将待修复合约名称添加到待修复合约列表中以更新待修复合约列表;
26.s13:获取第一交易;
27.s141:判断第一交易所调用的合约的第一合约名称是否在待修复合约列表中:
28.是,则执行步骤s142:将第一交易从交易池中删除。
29.以第一修复交易包括待修复合约的待修复方法体的待修复方法体名,以及,s12包括“通过修复合约执行第一待修复交易,在执行成功时,通过修复合约将待修复方法体名添加到待修复合约列表中以更新待修复合约列表”,以及,s141包括“判断第一交易所调用的合约的方法的第一方法体名是否在待修复合约列表中”为例;
30.假设管理员发现autonomy合约的proprule方法有bug;
31.管理员的客户端生成待修复交易tx1,tx1包括autonomy-proprul e;
32.区块链节点执行步骤s11,接收tx1;
33.区块链节点执行步骤s12,通过修复合约执行tx1,在执行成功时,通过修复合约将autonomy-proprule添加到待修复合约列表中以更新待修复合约列表;
34.假设此时待修复合约列表中有autonomy-proprule、execr-actionn ame1、execr-actionname2;
35.区块链节点执行步骤s13,获取交易tx2,tx2调用合约autonomy的autonomy方法;
36.区块链节点执行步骤s141,判断autonomy-proprule是否在待修复合约列表中:
37.由于autonomy-proprule在待修复合约列表中,则区块链节点执行步骤s142,将tx2从交易池中删除。
38.本领域技术人员应当理解,上述管理员可以为初始化设置的管理员,或,由票选出来的管理员;
39.上述实施例可以降低调用产生bug的合约的交易的手续费损失,提高用户体验;同
时,区块链节点不必执行上述调用产生bug的合约的交易,而可以将更多的算力分配给执行其它交易、广播交易等其它任务。
40.如果产生的bug为需要紧急处理的bug(以下称为紧急bug),一般来说,会针对紧急bug进行紧急修复而紧急升级版本,而升级一次版本需要花费较长的时间;在极端情况下,若接二连三的发现紧急bug,则会导致区块链一直处于升级中;通过上述实施例的方法,可延缓紧急bug的修复,将多个紧急bug放在一起升级,这样区块链节点只需要升级一次,减少节点升级次数。将多个紧急bug放在一起升级的方法可以根据实际需求进行配置,例如,在发现第一个紧急bug后,观察100个区块中是否还有其它紧急bug,如果有,则将所有紧急bug一起修复以一次性升级区块链。
41.图2为图1所示方法的一种优选实施方式中步骤s11的流程图。
42.如图2所示,在一优选实施例中,步骤s11包括:
43.s111:接收管理员的第一客户端生成的第一待修复交易;
44.s112:在判断出第一待修复交易为需要触发修复合约执行的第一类交易时,将第一待修复交易置于交易优先打包队列;
45.其中,交易优先打包队列中的交易将被优先打包。
46.上述实施例为需要触发修复合约执行的第一类交易配置了优先打包权限,使得第一类交易可以被优先打包。
47.一般来说,交易优先打包队列中的各交易以进入交易优先打包队列由先到后的顺序排队打包。
48.图3为图1所示方法的一种优选实施方式的流程图。如图3所示,在一优选实施例中,上述方法还包括:
49.s15:接收第一客户端生成的第一已修复交易;其中,第一已修复交易包括已修复合约的已修复合约名称;
50.s16:在判断出第一已修复交易为需要触发修复合约执行的第一类交易时,将第一已修复交易置于交易优先打包队列;其中,交易优先打包队列中的交易将被优先打包;
51.s17:通过修复合约执行第一已修复交易,在执行成功时,通过修复合约将已修复合约名称从待修复合约列表中删除以更新待修复合约列表。
52.假设管理员发现autonomy合约的proprule方法已修复;
53.管理员的客户端生成已修复交易tx4,tx4包括autonomy-proprule;
54.区块链节点执行步骤s15,接收tx4;
55.区块链节点执行步骤s16,在判断出tx4为需要触发修复合约执行的第一类交易时,将tx4置于交易优先打包队列;
56.区块链节点执行步骤s17,通过修复合约执行tx4,在执行成功时,通过修复合约将autonomy-proprule从待修复合约列表中删除;此时,待修复合约列表中有execr-actionname1、execr-actionname2。
57.图4为图3所示方法的一种优选实施方式的流程图。如图4所示,在一优选实施例中,步骤s142包括:
58.s1421:将第一交易存储于本地;
59.s1422:将第一交易从交易池中删除;
60.上述方法还包括:
61.s18:在监测到第一合约名称从待修复合约列表中删除时,将第一交易重新存入交易池。
62.上述实施例使得第一交易可以在第一合约被修复时,尽快被区块链节点执行。
63.图5为图4所示方法的一种优选实施方式的流程图。如图5所示,在一优选实施例中,上述方法还包括:
64.s19:在第一交易存储于本地的时长到达第一超时时长时,若第一合约名称还未从待修复合约列表中删除,则将第一交易从本地删除。
65.上述实施例释放了本地内存。
66.优选的,将第一交易从交易池中删除包括:
67.将第一交易的第一交易哈希缓存至待修复合约未执行交易列表;
68.将第一交易从交易池中删除;
69.上述方法还包括:
70.接收第一用户的第二客户端生成的第二交易;其中,第二交易包括第三交易哈希,第二交易由第二客户端在区块链上监测到执行第二交易所调用的合约的第二合约名称从待修复合约列表中删除后生成;
71.在待修复合约未执行交易列表中包括第三交易哈希时,将第二交易置于交易优先打包队列。
72.由于区块链节点在待修复合约未执行交易列表中缓存了交易哈希hash(tx2),假设tx2由用户a的客户端生成;由于tx2从交易池中删除,只有用户a才知道hash(tx2);因此,用户a在监测到autonomy-proprule从待修复合约列表中删除后,可以生成tx3(包括hash(tx2));区块链节点在待修复合约未执行交易列表中找到hash(tx2),则优先执行tx3。
73.上述实施例也存在以下问题:用户a可以生成与tx2毫不相关的tx3,tx3仍然可以获得优先权,或者,用户a甚至可以将hash(tx2)告知其它用户,由其它用户产生的毫不相关的tx3仍然可以获得优先权;
74.这对上述问题,区块链节点可以通过如下机制解决:
75.在缓存hash(tx2)时,还可以将tx2的payload中的除去时间戳的其它参数进行哈希运算以获得第一哈希值;并且在待修复合约未执行交易列表中找到hash(tx2)时,将tx3的payload中的除去时间戳的其它参数进行哈希运算以获得第二哈希值,如果第一哈希值与第二哈希值相同,则将tx3置于交易优先打包队列。
76.进一步的,上述方法还包括:
77.在第一交易哈希缓存于待修复合约未执行交易列表的时长到达第二超时时长时,将第一交易哈希从待修复合约未执行交易列表中删除。
78.上述实施例释放了待修复合约未执行交易列表。
79.优选的,通过修复合约执行第一待修复交易,在执行成功时,通过修复合约将待修复合约名称添加到待修复合约列表中以更新待修复合约列表包括:
80.通过修复合约执行第一待修复交易,在执行成功时,将待修复合约名称记录到区块链上;
81.若在第一时长内未接收到第一举报交易,则通过修复合约将待修复合约名称添加
到待修复合约列表中以更新待修复合约列表;其中,第一举报交易由其它客户端在判断出待修复合约不需要修复时生成;
82.若在第一时长内接收到第一举报交易,且判断出待修复合约不需要修复,则根据预配置的惩罚规则惩罚管理员。
83.假设有两个相似的合约有竞争关系,而管理员与某一合约的部署者存在合谋关系,则管理员可以通过生成另一合约的待修复交易以降低另一合约的使用者的用户体验,从而产生不正当竞争关系;
84.针对上述问题,可以使用上述实施例所述的方法解决。
85.上述其它客户端可以是另一合约的部署者的客户端,也可以是普通用户的客户端,此处不作具体限定。
86.上述惩罚规则可以根据实际需求进行配置,例如,管理员先前缴纳了部分押金,则可以罚没管理员的部分押金;此时,通过所述修复合约执行所述第一待修复交易步骤还应当包括:检查管理员是否缴纳有足够的押金;又例如,管理员外还有其它管理员替补,则可以剥夺管理员资格,从其它管理员替补中票选出一名新的管理员等,可实现相同的技术效果。
87.图6为本发明一实施例提供的一种设备的结构示意图。
88.如图6所示,作为另一方面,本技术还提供了一种设备,包括一个或多个中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有设备600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。
89.以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
90.特别地,根据本公开的实施例,上述任一实施例描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
91.作为又一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本技术提供的方法。
92.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用
于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
93.描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
94.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本技术构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1