CN112598524B - 一种条件触发的区块链交易的处理方法、装置及电子设备 - Google Patents
一种条件触发的区块链交易的处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112598524B CN112598524B CN202110222608.9A CN202110222608A CN112598524B CN 112598524 B CN112598524 B CN 112598524B CN 202110222608 A CN202110222608 A CN 202110222608A CN 112598524 B CN112598524 B CN 112598524B
- Authority
- CN
- China
- Prior art keywords
- transaction
- condition
- trigger
- block
- executed
- 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
- 238000003672 processing method Methods 0.000 title abstract description 3
- 238000011156 evaluation Methods 0.000 claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000012795 verification Methods 0.000 claims abstract description 23
- 238000001914 filtration Methods 0.000 claims description 6
- 238000005096 rolling process Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 12
- 230000008569 process Effects 0.000 abstract description 10
- 239000003999 initiator Substances 0.000 abstract description 8
- 230000001960 triggered effect Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种条件触发的区块链交易的处理方法、装置及电子设备,通过在区块链交易中添加条件触发参数和条件等待参数以便交易发起方对交易的触发执行施加条件限制(条件交易),然后区块链协议栈在区块生成和区块验证过程中执行交易前引入条件触发评估机制以校验交易触发条件,同时通过“懒惰处理”和超时清除机制以确保长期不满足触发条件的条件交易不会影响区块链的性能和可用性的方式,支持实现交易依赖和可靠、可信、自动的多方链上协同。
Description
技术领域
本发明涉及区块链技术领域,尤其是交易构成、区块生成、区块验证和智能合约交易执行这一技术领域。
背景技术
应用程序(客户端)提交交易到区块链网络。区块链网络上的区块生成节点和区块验证节点分别在生成区块和验证区块时基于当前的世界状态(即时或延迟)执行交易达至新的世界状态,并通过共识机制在区块链网络上的区块链节点之间达成共识。交易提交到区块链网络的顺序,和其在区块链网络上执行的顺序不一定相同。区块链协议栈也不内生支持交易的条件触发(即满足一定条件方可触发执行该交易),比如一个交易A在其被提交到区块链网络时,不能事先定义其触发执行条件依赖于现在或未来另一个/另一组交易B的执行结果或某个/某些状态满足某个/某些阈值等。即便某些情况下可以由智能合约内部实现,但这不是所有情况,比如交易A和B的目标智能合约不同但互为存在依赖,即执行A的前提是B已经提交、执行B的前提是A已经提交,而通常智能合约在执行交易时是接收不到交易本身的,更不用说支持一个智能合约接收其他智能合约的交易不是好的架构实践,至少需要相应授权,而这都需要修改区块链协议栈的实现。有时候也可以由发起方在交易提交前主动查询区块链网络,但是双方可能不存在信任,比如,用户a发起交易A达至状态c之后,用户b发起的交易B必须执行,而用户a可能不信任用户b一定会发起交易B,而希望A的触发执行是和B已经提交可信关联的。
发明内容
为了解决上述技术问题中的至少一个,本发明提供了一种条件触发的区块链交易的处理方法、装置及电子设备。
本发明的第一方面,提供了一种条件触发的区块链交易的处理方法,包括:
区块链节点接收第一交易,将所述第一交易存入待执行交易池;所述第一交易记录了所述第一交易的触发条件;
所述区块链节点在生成或验证区块时,若从所述待执行交易池选取到所述第一交易,判断所述触发条件是否被满足,仅在判断所述触发条件被满足时,执行所述第一交易。
可选地,所述触发条件,包括如下条件中的至少一个:
基于逻辑运算符的条件;
基于数值比较运算符的条件;
基于字符比较运算符的条件;
基于特定实例或者交易过滤条件的交易存在性断言;
基于特定实例或者交易过滤条件的交易执行结果断言;
基于特定实例或者交易过滤条件的区块要求;
基于特定实例或者状态过滤条件的状态存在性断言;
基于特定实例或者状态过滤条件的状态取值比较。
可选地,所述区块链节点在生成区块时,在判断所述触发条件是否被满足之前,还包括:
所述区块链节点获取所述第一交易的触发评估计数;
所述区块链节点确定所述第一交易的触发评估计数为若干预设值中的一个。
可选地,所述若干预设值被设置为:
数值之间的间隔随着数值的增大而增大。
可选地,方法还包括:
所述区块链节点在确定所述第一交易的触发评估计数不是所述若干预设值中的一个时,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
可选地,还包括:
所述区块链节点在生成区块时,若判断所述触发条件未被满足,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
可选地,方法还包括:
所述区块链节点在验证区块时,若判断所述触发条件未被满足,返回区块验证失败。
可选地,所述区块链节点预先设置条件状态库,所述条件状态库记录所述第一交易的标识、提交等待时间、初次接收时间、触发条件、触发评估计数。
可选地,所述区块链节点接收第一交易之后,还包括:
所述区块链节点根据预设的语法定义,将所述触发条件解析成条件结构体;
所述区块链节点判断所述触发条件是否被满足,包括:
所述区块链节点对所述条件结构体中的存在性条件进行判断,和/或,根据对所述条件结构体相关参数的查询结果,对所述条件结构体中的占位符进行替换,形成实例化的条件结构体,对所述实例化的条件结构体进行判断。
可选地,所述触发条件与第二交易相关。
可选地,当所述触发条件被设置为所述第一交易和第二交易互为存在性依赖时,方法还包括:
若所述区块链节点确定所述第一交易执行失败或者超时,回滚已执行的第二交易。
可选地,所述第一交易还记录了提交等待时间;
方法还包括:
所述区块链节点在所述第一交易的等待时间超出所述提交等待时间之后,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
可选地,所述区块链节点预先设置了最大提交等待时间;
方法还包括:
所述区块链节点在所述第一交易的等待时间超出了所述最大提交等待时间时,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
本发明的第二方面,提供了一种区块链节点装置,包括:
接收模块,用于接收第一交易,所述第一交易记录了所述第一交易的触发条件;
处理模块,用于将所述第一交易存入待执行交易池;在生成或验证区块时,若从所述待执行交易池选取到所述第一交易,判断所述触发条件是否被满足,仅在判断所述触发条件被满足时,执行所述第一交易。
可选地,所述处理模块还用于:
在生成区块时,在判断所述触发条件是否被满足之前,获取所述第一交易的触发评估计数;
确定所述第一交易的触发评估计数为若干预设值中的一个。
可选地,所述处理模块还用于:
在确定所述第一交易的触发评估计数不是所述若干预设值中的一个时,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
可选地,所述处理模块还用于:
在生成区块时,若判断所述触发条件未被满足,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
可选地,所述处理模块还用于:
在验证区块时,若判断所述触发条件未被满足,返回区块验证失败。
可选地,所述处理模块还用于:
预先设置条件状态库,所述条件状态库记录所述第一交易的标识、提交等待时间、初次接收时间、触发条件、触发评估计数。
可选地,所述处理模块还用于:
根据预设的语法定义,将所述触发条件解析成条件结构体;
所述处理模块用于判断所述触发条件是否被满足时,具体用于:
对所述条件结构体中的存在性条件进行判断,和/或,根据对所述条件结构体相关参数的查询结果,对所述条件结构体中的占位符进行替换,形成实例化的条件结构体,对所述实例化的条件结构体进行判断。
可选地,所述处理模块还用于:
当所述触发条件被设置为所述第一交易和第二交易互为存在性依赖时,若确定所述第一交易执行失败或者超时,回滚已执行的第二交易。
可选地,所述处理模块还用于:
在所述第一交易的等待时间超出提交等待时间之后,丢弃所述第一交易;其中,所述第一交易记录了所述提交等待时间,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
可选地,所述处理模块还用于:
在所述第一交易的等待时间超出了预设的最大提交等待时间时,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
本发明的第三方面,提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,所述计算机指令被所述处理器执行以实现如本发明第一方面所述的方法。
本发明的第四方面,提供了一种可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时实现本发明第一方面所述的方法。
附图说明
附图示出了本发明的示例性实施方式,并与其说明一起用于解释本发明的原理,其中包括了这些附图以提供对本发明的进一步理解,并且附图包括在本说明书中并构成本说明书的一部分。
图 1是本发明支持的区块链协议栈的总体架构示意。
具体实施方式
下面结合附图和实施方式对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分。
需要说明的是,在不冲突的情况下,本发明中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明。
本发明实施例在区块链协议栈内引入交易的条件触发机制,以支持可信自动的多方链上协同。交易发起方提交交易时,可在交易里(通常是在元数据部分)添加一个条件触发参数(cond_inv)。该条件触发参数是一个条件语句,比如“用户y发起的到智能合约a、方法b,参数c=10的交易执行成功”等。提交条件触发交易时,也可以在交易里添加条件等待参数(cond_to),以设定该交易在区块链节点等待触发的最大时长。每个区块链节点也可以设定条件触发交易在该节点的最大提交等待时间。等待时间的计算自一个条件触发交易首次到达该区块链节点的时间起算。在一个区块链节点,超过最大等待时间的条件触发交易将在该区块链节点被自动删除,以防止条件触发交易无限期累积过多而影响区块链性能。
在提交等待时间之内,一个区块链节点对长期不满足触发条件的交易做“懒惰处理”以避免其堵塞和影响区块链的性能,比如设定触发评估的频率为触发评估次数的平方等。
在区块生成时,基于本发明的区块链协议栈的区块生成模块在执行一个交易前,评估其触发条件是否满足(如果根据懒惰处理定义,该交易应该被评估的话)。如果满足,则会继续执行;否则更新其在本地节点的触发评估计数并退回该交易到待执行交易池,等待后续触发评估。在区块验证时,基于本发明的区块链协议栈的区块验证模块在执行一个条件触发交易前,评估其触发条件是否满足。如果满足,则会继续执行验证;否则,区块验证失败。
这样,各个相关方可以通过基于条件触发执行的交易(条件交易)实现可信、自动的多方协同。
本发明的具体实施方式通过以下几个方面进行阐述。
一、问题的提出。
一组来自不同发起方的区块链交易被提交到区块链网络的顺序,与其被执行的顺序不一定一致。一个区块链交易被提交到区块链网络,并不意味着其一定能够被触发执行。区块链协议栈也不支持区块链交易的有条件触发,更不支持交易间相互的存在性依赖。尽管基于世界状态、基于区块账本、基于交易执行结果的交易可以由其发起方查询区块链网络之后再行提交,但其何时提交、是否提交预期的交易,不受区块链网络控制。这些限制,阻遏了在区块链网络上实现可信、自动的多方协同。
二、条件交易。
本发明修改区块链交易的组成定义,以便交易发起方在提交交易时设定交易被触发执行的条件(条件触发参数,以cond_inv表示)和/或条件等待的最大时长(条件等待参数,以cond_to表示)。添加了条件触发参数或条件等待参数的交易,在本发明的语境下被称为条件交易。
条件触发参数是一个区块链协议栈支持的条件描述语句,比如“用户y发起的到智能合约a、方法b,参数c=10的交易已经提交”,“用户y发起的到智能合约a、方法b,参数c=10的交易i在m个区块之前已经执行成功”,“智能合约b的状态c>1000”等等。具体的条件定义语法是跟协议栈的编码实现相关的(比如,可以基于正则表达式+客制化的关键字),需要支持的条件定义大致如下:
(1)基于逻辑与(&&)、逻辑或(||)、逻辑非(!)的组合条件;
(2)数值比较==、>、<、>=、<=,字符串包含、相等比较;
(3)特定实例(或基于交易过滤条件)的交易存在性断言;
(4)特定实例(或基于状态过滤条件)的状态存在性断言;
(5)特定实例(或基于交易过滤条件)的交易执行成功/失败断言以及区块要求;
(6)特定实例(或基于状态过滤条件)的状态取值(数值或字符串)比较。
区块链协议栈在区块生成和验证过程中,执行条件交易前先判断交易执行的条件是否满足。两个互有存在性依赖的交易,在一个被执行之后,另一个必须被安排执行;后执行的交易失败或因故未能在规定时间完成时,必须回滚前一交易的结果状态。
条件等待参数,是一个以时间单位计的等待时间设定,用于及时清除“僵尸”交易以便避免其影响区块链协议栈的性能。等待时间的计算自一个条件触发交易首次到达该区块链节点的时间起算。区块链节点也可以设定其最大提交等待时间。一个区块链网络上的不同区块链节点可以设定不同的最大等待时长。如果一个条件触发交易的等待时长设置超过本地区块链节点设置的最大等待时长,则取后者作为该交易的最大等待时长。
三、总体架构。
图1是基于本发明的区块链协议栈(图块111)的主要模块示意。除了传统的区块链模块,比如网络服务(图块110)、待执行交易池(图块108)、共识机制(图块106)、区块生成(图块103)、区块验证(图块105)、区块链账本(图块104)、世界状态(图块100)、一个或多个智能合约(图块101)等之外,本发明添加了触发条件评估模块(图块102)、条件状态库模块(图块109)和条件交易清除线程模块(图块107)。各个模块的主要功能如下:
(一)网络服务(图块110)。
提供面向客户端的网络接口(比如基于HTTPS的JSONRPC),以便接受并响应来自客户端应用程序(图块112)的交易提交、状态查询和消息订阅请求;提供面向区块链网络上其他区块链节点的网络接口(比如基于TCP或TLS的P2P网络),以便实现区块链节点组网,向其他区块链节点请求/同步交易、区块和状态等信息,或响应来自其他节点的交易、区块和状态等信息请求。
(二)待执行交易池(图块108):用于接收客户端应用程序(图块112)和其他区块链节点(图块113)通过网络服务(图块110)发来的待执行的区块链交易。在第一次接收一个条件触发交易时,以该交易的ID为索引键(key)在本地的条件状态库(图块109)创建一条记录(条件状态记录),该记录包含交易的触发条件、提交等待时间、初次接收时间、触发评估计数等信息。
(三)共识机制(图块106)。
实现共识算法。基于共识算法,当本地节点作为区块生成节点时触发区块生成(图块103)、作为区块验证节点时触发区块验证(图块105)、共识过程中触发区块回滚和账本分支修剪,以及通过网络服务(图块110)与其他区块链节点同步交易、区块、状态等信息,实现全链共识,并将共识区块计入区块链账本(图块104)。
(四)区块生成(图块103):响应共识机制(图块106)的触发,从待执行交易池(图块108)获取一个待执行交易序列。对其中的每一个交易,1)如果它是条件触发交易,则从本地的条件状态库(图块109)读取该交易的触发评估次数,并将其在提交状态库中的次数加1。根据“懒惰处理”定义,决定是否提交触发评估。如果可以提交触发评估,则提交触发条件评估模块(图块102)进行触发条件评估。如果不可以提交触发评估或触发条件不满足,则退回该交易到待执行交易池(图块108);2)如果不是条件交易或条件交易的触发条件已经满足,则提交其目标智能合约(图块101)执行该交易。交易执行结束后,将已执行的交易序列(未执行的交易退回待执行交易池或丢弃)及其达至的新的世界状态,连同前一个区块的哈希等其他信息,生成新区块并交给共识机制(图块106)参与共识流程。
(五)区块验证(图块105):在收到来自其他区块链节点的区块时,响应共识机制(图块106)的触发,验证该区块:对区块中的每个交易,1)如果它是条件交易则提交触发条件评估模块(图块102)进行触发条件评估。如果触发条件不满足,则整个区块验证失败; 2)提交其目标智能合约(图块101)执行。区块中的所有交易执行完成达至新的世界状态之后,将其与区块中声称的新的世界状态对比。如果二者匹配,则区块验证成功;否则,区块验证失败。
(六)区块链账本(图块104):分布式的区块链账本,包括从创世区块开始的所有确认区块和交易等信息。从创世区块开始执行每一个区块的每一笔交易能够重构所有的状态信息。
(七)世界状态库(图块100):执行每个区块中的交易之后达至的世界状态。通常以默克尔树的形式实现。
(八)一个或多个智能合约(图块303):由区块链协议栈触发、执行交易、读写合约状态库(图块306)以完成业务逻辑并记录结果状态。
(九)触发条件评估(图块图块102):实现触发条件语义的解析和触发条件的判定逻辑。应区块生成模块和区块验证模块的请求,读取并解析条件交易中的触发条件(cond_inv),查询当前的待执行交易池、区块链账本、世界状态库,然后判定触发条件是否满足。
(十)条件状态库(图块109):存储条件状态记录的文件系统或数据库。条件状态记录是在区块链节点本地有效的,不参与共识过程。
(十一)条件交易清除线程(图块107):一个操作系统线程、进程或类似机制,定时或每隔一段时间,清除已过等待时间的条件交易,包括其在待执行交易池和条件状态库的记录。
四、关键流程。
(一)触发评估。
触发评估模块(图块102)内置语义解析器(比如正则表达式解析器),它应区块生成模块(图块103)和区块验证模块(图块104)的请求(输入为条件交易TX),对条件交易进行触发条件评估,并返回结果(TRUE:“满足触发条件”、FALSE:“不满足触发条件”)。触发评估的流程大致如下:
(1)提取条件交易TX的触发条件参数(cond_inv)得到触发条件(cond);
(2)根据区块链协议栈定义的触发条件的语法定义,解析cond成语义解析器输出的条件结构体(cond_struct);
(3)查询待执行交易池、区块链账本和世界状态,对条件结构体(cond_struct)中的存在性条件(区块、交易、状态等)进行判断、对其中的区块、交易、状态或其属性等的占位符(placeholder)进行替换,形成实例化的、可比较的条件结构体,然后进行逻辑断言(assertion);
(4)返回断言结果(TRUE:“满足触发条件”,或者FALSE:“不满足触发条件”)。
(二)交易提交。
一个条件交易的提交流程如下:
(1)应用程序(图块112)创建一个条件交易的结构体,该结构体至少包括发起方、目标智能合约(目标账户地址)、交易数据和基于条件定义语法设定的触发条件参数(cond_inv)和/或该交易的条件等待参数(cond_to)等信息,并用发起方私钥签名,然后提交给区块链网络上的一个区块链节点;
(2)区块链节点上的区块链协议栈网络服务模块(图块110)收到该条件交易,在初步验证交易的有效性之后,在将交易传播到其他区块链节点的同时存储交易到待执行交易池(图块108);
(3)待执行交易池第一次收到该条件交易时,在条件状态库为该交易创建一条以该交易ID为索引健(key)的条件状态记录,包括交易ID,交易的触发条件(cond_inv)、提交等待时间(cond_to)、初次接收时间、触发评估计数(初始为0)等信息;
进入待执行交易池的条件交易,像其他区块链交易一样等待区块生成模块(图块103)提取并执行。
(三)区块生成时,条件交易的处理执行。
在生成区块时,共识机制(图块106)调用区块生成模块(图块103)生成区块,然后进行共识。区块生成模块生成区块时对每一个从待执行交易池(图块108)提取的待执行交易TX,处理执行的流程如下:
(1)如果TX是条件交易,即TX附带触发条件参数(cond_inv)或/和条件等待参数(cond_to),则继续;否则转至第(7)步;
(2)从条件状态库(图块109)获取该交易的条件状态记录;
(3)如果该交易的提交等待时间超时,则丢弃该交易,该交易的处理执行终止;
(4)如果根据该交易的触发评估计数,需要对其进行懒惰处理,则将该交易在本地条件状态库中的条件状态记录中的触发评估计数加1然后终止这次对该交易的处理执行,否则继续;比如本地区块链节点设定的触发评估的区块间隔频率为触发评估次数的平方,则只有当触发评估次数为0,1,4,9,16,… 时才触发评估;其他触发评估计数,比如2,3,5,6,7,8,均不真正触发评估;
(5)调用触发条件评估模块(图块102)对触发条件进行评估;
(6)如果不满足触发条件,则将该交易在本地条件状态库中的条件状态记录中的触发评估计数加1,然后终止这次对该交易的处理执行并将其退回待执行交易池;如果满足触发条件,则继续;
(7)转发交易TX给其目标智能合约执行;
(8)如果是条件交易,执行结束之后,清除其在本地的条件状态库中的条件状态记录。
(四)区块验证时,条件交易的处理执行。
在验证区块时,共识机制(图块106)调用区块验证模块(图块105)对区块进行验证。区块验证模块对区块中的每一个交易TX,处理执行的流程如下:
(1)如果TX是条件交易,即TX附带触发条件参数(cond_inv)或/和条件等待参数(cond_to),则继续;否则转至第(4)步;
(2)调用触发条件评估模块(图块102)对触发条件进行评估;
(3)如果不满足触发条件,则区块验证失败,转至第(5)步;如果满足触发条件,则继续;
(4)转发交易TX给其目标智能合约执行;
(5)如果是条件交易,执行结束之后,清除其在本地的条件状态库中的条件状态记录。
应当理解,这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被该机器执行时,该机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的该程序代码中的指令,执行本发明的各种方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
本领域那些技术人员应当理解在本文所发明的示例中的设备的模块或模块或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或模块或组件组合成一个模块或模块或组件,以及此外可以把它们分成多个子模块或子模块或子组件。除了这样的特征和/或过程或者模块中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中发明的所有特征以及如此发明的任何方法或者设备的所有过程或模块进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中发明的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的发明是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (23)
1.一种条件触发的区块链交易的处理方法,其特征在于,包括:
区块链节点接收第一交易,将所述第一交易存入待执行交易池;所述第一交易通过条件触发参数记录了所述第一交易的触发条件,所述条件触发参数是一个条件语句;
所述区块链节点在生成或验证区块时,若从所述待执行交易池选取到所述第一交易,判断所述触发条件是否被满足,仅在判断所述触发条件被满足时,执行所述第一交易;
所述区块链节点判断所述触发条件是否被满足,包括:
将所述触发条件解析成条件结构体;
所述区块链节点根据对所述条件结构体相关参数的查询结果,对所述条件结构体中的存在性条件进行判断,和/或,对所述条件结构体中的占位符进行替换,形成实例化的条件结构体,对所述实例化的条件结构体进行判断。
2.如权利要求1所述的方法,其特征在于,所述触发条件,包括如下条件中的至少一个:
基于逻辑运算符的条件;
基于数值比较运算符的条件;
基于字符比较运算符的条件;
基于特定实例或者交易过滤条件的交易存在性断言;
基于特定实例或者交易过滤条件的交易执行结果断言;
基于特定实例或者交易过滤条件的区块要求;
基于特定实例或者状态过滤条件的状态存在性断言;
基于特定实例或者状态过滤条件的状态取值比较。
3.如权利要求1所述的方法,其特征在于,所述区块链节点在生成区块时,在判断所述触发条件是否被满足之前,还包括:
所述区块链节点获取所述第一交易的触发评估计数;
所述区块链节点确定所述第一交易的触发评估计数为若干预设值中的一个。
4.如权利要求3所述的方法,其特征在于,所述若干预设值被设置为:
数值之间的间隔随着数值的增大而增大。
5.如权利要求3所述的方法,其特征在于,还包括:
所述区块链节点在确定所述第一交易的触发评估计数不是所述若干预设值中的一个时,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
6.如权利要求3所述的方法,其特征在于,还包括:
所述区块链节点在生成区块时,若判断所述触发条件未被满足,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
7.如权利要求1所述的方法,其特征在于,还包括:
所述区块链节点在验证区块时,若判断所述触发条件未被满足,返回区块验证失败。
8.如权利要求1所述的方法,其特征在于,所述区块链节点预先设置条件状态库,所述条件状态库记录所述第一交易的标识、提交等待时间、初次接收时间、触发条件和触发评估计数。
9.如权利要求1所述的方法,其特征在于,所述触发条件与第二交易相关。
10.如权利要求9所述的方法,其特征在于,当所述触发条件被设置为所述第一交易和第二交易互为存在性依赖时,方法还包括:
若所述区块链节点确定所述第一交易执行失败或者超时,回滚已执行的第二交易。
11.如权利要求1所述的方法,其特征在于,所述第一交易还记录了提交等待时间;
方法还包括:
所述区块链节点在所述第一交易的等待时间超出所述提交等待时间之后,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
12.如权利要求1所述的方法,其特征在于,所述区块链节点预先设置了最大提交等待时间;
方法还包括:
所述区块链节点在所述第一交易的等待时间超出了所述最大提交等待时间时,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
13.一种区块链节点装置,其特征在于,包括:
接收模块,用于接收第一交易,所述第一交易通过条件触发参数记录了所述第一交易的触发条件,所述条件触发参数是一个条件语句;
处理模块,用于将所述第一交易存入待执行交易池;在生成或验证区块时,若从所述待执行交易池选取到所述第一交易,判断所述触发条件是否被满足,仅在判断所述触发条件被满足时,执行所述第一交易;
所述处理模块判断所述触发条件是否被满足,包括:
将所述触发条件解析成条件结构体;
所述区块链节点根据对所述条件结构体相关参数的查询结果,对所述条件结构体中的存在性条件进行判断,和/或,对所述条件结构体中的占位符进行替换,形成实例化的条件结构体,对所述实例化的条件结构体进行判断。
14.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
在生成区块时,在判断所述触发条件是否被满足之前,获取所述第一交易的触发评估计数;
确定所述第一交易的触发评估计数为若干预设值中的一个。
15.如权利要求14所述的装置,其特征在于,所述处理模块还用于:
在确定所述第一交易的触发评估计数不是所述若干预设值中的一个时,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
16.如权利要求14所述的装置,其特征在于,所述处理模块还用于:
在生成区块时,若判断所述触发条件未被满足,将所述触发评估计数加1,以及,将所述第一交易退回所述待执行交易池。
17.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
在验证区块时,若判断所述触发条件未被满足,返回区块验证失败。
18.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
预先设置条件状态库,所述条件状态库记录所述第一交易的标识、提交等待时间、初次接收时间、触发条件和触发评估计数。
19.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
当所述触发条件被设置为所述第一交易和第二交易互为存在性依赖时,若确定所述第一交易执行失败或者超时,回滚已执行的第二交易。
20.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
在所述第一交易的等待时间超出提交等待时间之后,丢弃所述第一交易;其中,所述第一交易记录了所述提交等待时间,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
21.如权利要求13所述的装置,其特征在于,所述处理模块还用于:
在所述第一交易的等待时间超出了预设的最大提交等待时间时,丢弃所述第一交易;其中,所述第一交易的等待时间的起始时间为所述第一交易的初次接收时间。
22.一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,其特征在于,所述计算机指令被所述处理器执行以实现如权利要求1-12的任一项所述的方法。
23.一种可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现如权利要求1-12的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110222608.9A CN112598524B (zh) | 2021-02-26 | 2021-02-26 | 一种条件触发的区块链交易的处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110222608.9A CN112598524B (zh) | 2021-02-26 | 2021-02-26 | 一种条件触发的区块链交易的处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112598524A CN112598524A (zh) | 2021-04-02 |
CN112598524B true CN112598524B (zh) | 2021-06-22 |
Family
ID=75207542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110222608.9A Active CN112598524B (zh) | 2021-02-26 | 2021-02-26 | 一种条件触发的区块链交易的处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112598524B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023242820A1 (en) * | 2022-06-17 | 2023-12-21 | Kirobo, Ltd. | Future conditional blockchain transaction techniques |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200013025A1 (en) * | 2018-07-06 | 2020-01-09 | International Business Machines Corporation | Conditional deferred transactions for blockchain |
CN110910237B (zh) * | 2019-11-20 | 2024-05-24 | 腾讯科技(深圳)有限公司 | 区块链中的数据处理方法、装置及智能终端、存储介质 |
CN111131329A (zh) * | 2020-01-04 | 2020-05-08 | 天津金农企业管理咨询合伙企业(有限合伙) | 区块链系统的数据共识方法、装置及硬件设备 |
CN111127211A (zh) * | 2020-03-27 | 2020-05-08 | 杭州智块网络科技有限公司 | 基于区块链的交易方法、系统、设备和计算机可读存储介质 |
CN111666336B (zh) * | 2020-05-15 | 2023-05-23 | 西安纸贵互联网科技有限公司 | 区块链间的数据互通方法、系统及电子设备 |
CN112396427B (zh) * | 2021-01-19 | 2021-04-23 | 北京连琪科技有限公司 | 一种面向通用场景的跨链互换操作方法 |
CN112395300B (zh) * | 2021-01-20 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
-
2021
- 2021-02-26 CN CN202110222608.9A patent/CN112598524B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112598524A (zh) | 2021-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11354301B2 (en) | Multi-system operation audit log | |
CN108459919B (zh) | 一种分布式事务处理方法及装置 | |
CN110990182B (zh) | 事务处理方法、装置、设备及存储介质 | |
KR101616967B1 (ko) | 다수의 처리 명령어를 실시간으로 취급하고 처리하는 것과 관련된 개선 | |
US20090106215A1 (en) | Deleting a continuous query from a data stream management system continuing to operate on other queries | |
CN110889729A (zh) | 一种基于区块链网络的数据验证方法和装置 | |
CN112261172B (zh) | 服务寻址访问方法、装置、系统、设备及介质 | |
CN105556552A (zh) | 欺诈探测和分析 | |
US20090133037A1 (en) | Coordinating application state and communication medium state | |
CN108234122B (zh) | 令牌校验方法和装置 | |
CN112598524B (zh) | 一种条件触发的区块链交易的处理方法、装置及电子设备 | |
CN113760976B (zh) | 业务的处理方法、装置、设备及存储介质 | |
CN111064725A (zh) | 一种代码零入侵接口校验方法和校验装置 | |
EP2224381A1 (en) | Method and apparatus for case-based service composition | |
CN108924101A (zh) | 一种数据库的操作方法及相关设备 | |
CN106254373B (zh) | 数字证书同步方法、数字签名服务器及数字证书同步系统 | |
CN111242621A (zh) | 交易数据存储方法、装置、设备及存储介质 | |
CN111461643A (zh) | 资方路由方法及系统 | |
CN113839940B (zh) | 基于url模式树的防御方法、装置、电子设备和可读存储介质 | |
Ren et al. | Improving the performance of blockchain sharding protocols with collaborative transaction verification | |
US20180341514A1 (en) | Unique transaction identifier based transaction processing | |
CN114741178B (zh) | 一种授信申请处理方法、装置、电子设备和存储介质 | |
CN117763052B (zh) | 面向计费多中心内存数据库的数据同步方法及系统 | |
JP2001306380A (ja) | 二相コミット回避方式およびそのプログラム記録媒体 | |
CN118260576A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 6th Floor, 6th Floor, No. 3 Shangdi Fourth Street, Haidian District, Beijing 100080 Patentee after: Beijing holographic Zhixin Technology Co.,Ltd. Country or region after: China Address before: 100081 Room 501, South, 5th floor, Yinhai building, No.10, Zhongguancun South Street, Haidian District, Beijing Patentee before: Beijing holographic Zhixin Technology Co.,Ltd. Country or region before: China |