CN114902268A - 用于在区块链上提供原子事务的方法及设备 - Google Patents
用于在区块链上提供原子事务的方法及设备 Download PDFInfo
- Publication number
- CN114902268A CN114902268A CN202080091508.0A CN202080091508A CN114902268A CN 114902268 A CN114902268 A CN 114902268A CN 202080091508 A CN202080091508 A CN 202080091508A CN 114902268 A CN114902268 A CN 114902268A
- Authority
- CN
- China
- Prior art keywords
- transaction
- fulfillment
- proposed
- blockchain
- determining
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 117
- 230000004044 response Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/02—Banking, e.g. interest calculation or account maintenance
-
- 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
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本文公开了用于在区块链上提供原子事务的方法、设备和装置,包括存储在计算机可读介质上的计算机程序。其中一种方法包括:接收提交到区块链的事务;确定该事务是否为履行事务;响应于确定该事务是履行事务,识别对应于该履行事务的提议事务;判断该提议事务是否有效,该履行事务是否满足该提议事务指定的执行条件;并且响应于确定该提议事务有效并且该履行事务满足该提议事务中指定的执行条件,执行该履行事务和该提议事务。
Description
技术领域
本文总体上涉及计算机技术,更具体地,涉及用于在区块链上提供原子事务(atomic transaction)的方法和设备。
背景技术
区块链系统,也称为分布式账本系统(distributed ledger system,DLS)或共识系统,可以使参与实体安全且不可篡改地存储数据。在不参考任何特定用例的情况下,区块链系统可以包括任何DLS并且可以用于公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放以使用系统,并参与共识处理。私有区块链网络为特定实体提供,该特定实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。
使用点对点(peer-to-peer,P2P)网络实现区块链系统,其中节点例如在不需要固定的中央服务器的情况下与彼此直接通信。P2P网络中的每个节点可以发起与P2P网络中的另一节点的通信。
区块链系统维护一个或多个区块链。区块链是用于存储数据(例如交易数据)的数据结构,其可以防止恶意方篡改和操纵数据。区块链系统可以支持执行一个或多个智能合约。每个智能合约可以是以计算机代码形式的计算机协议,其被纳入到区块链中,以促进、验证或施行合约的协商或执行。
区块链用例可能需要原子性地处理两个事务,这意味着两个事务要么都成功,要么都失败,不允许部分处理。然而,现有的区块链系统的实现方式没有内置机制来支持原子事务。
为了实现原子性,可能需要部署一个单独的定制智能合约作为代理合约。例如,如果第一用户想要将第一用户拥有的第一资产交换为第二用户拥有的第二资产,则第一用户可能需要创建在第一合约上操作的第一事务以将第一资产从第一用户转移到第二用户。然后,第一用户可以将第一事务发送到代理合约。同样,第二用户可能需要创建在第二合约上操作的第二事务,以将第二资产从第二用户转移到第一用户。然后,第二用户可以将第二事务发送到代理合约。在收到两个事务之后,代理合约可以调用第一合约和第二合约来执行两个事务。
随着代理合约数量的增加,存储空间和计算资源的消耗也会增加。代理合约可能还需要获得授权以执行由第一合约和第二合约限定的某些操作,从而进一步增加执行原子事务所需的事务的数量。
发明内容
在一个方面,一种用于在区块链上提供原子事务的计算机实施方法,包括:接收提交到区块链的事务;确定该事务是否为履行事务;响应于确定该事务是履行事务,识别对应于该履行事务的提议事务;确定该提议事务是否有效,该履行事务是否满足该提议事务指定的执行条件;响应于确定该提议事务有效并且该履行事务满足在该提议事务中指定的执行条件,执行该履行事务和该提议事务。
在另一方面,一种用于在区块链上提供原子事务的设备包括:一个或多个处理器;一个或多个计算机可读存储器,所述一个或多个计算机可读存储器耦合到一个或多个处理器并在其上存储有指令,所述指令可由一个或多个处理器执行以:接收提交到区块链的事务;确定该事务是否为履行事务;响应于确定该事务是履行事务,识别对应于该履行事务的提议事务;确定该提议事务是否有效,该履行事务是否满足该提议事务指定的执行条件;响应于确定该提议事务有效并且该履行事务满足在该提议事务中指定的执行条件,执行该履行事务和该提议事务。
在又一方面,一种非暂态计算机可读介质,其中存储有指令,当所述指令由终端设备的处理器执行时,使得终端设备执行在区块链上提供原子事务的方法。该方法包括:接收提交到区块链的事务;确定该事务是否为履行事务;响应于确定该事务是履行事务,识别对应于该履行事务的提议事务;确定该提议事务是否有效,该履行事务是否满足该提议事务指定的执行条件;响应于确定该提议事务有效并且该履行事务满足在该提议事务中指定的执行条件,执行该履行事务和该提议事务。
附图说明
包含在本文中并构成本文一部分的附图示出了实施例。在下列指定附图的说明中,除非另有所示,不同附图中的相同数字表示相同或类似的元素。
图1是根据实施例的区块链系统的示意图。
图2是根据实施例的用于实现区块链系统中的节点的计算设备的示意图。
图3是描绘根据实施例的用于在区块链上提供原子事务的协议的框图。
图4是根据实施例的用于在区块链上提供原子事务的方法的流程图。
图5是根据实施例的用于在区块链上提供原子事务的装置的框图。
具体实施方式
本文的实施例提供了用于在区块链上提供原子事务的方法和设备。该方法和设备可以将特定的数据字段添加到区块链事务的数据结构中以支持原子事务的执行。这种原子事务可以在区块链上原子性的执行,而无需该区块链部署代理合约。该方法和设备还可以允许将新数据字段设置为nil。新数据字段设置为nil的事务可以以常规方式在区块链上执行,从而减少数据结构更改对常规事务的影响。
本文中公开的实施例具有一个或多个技术效果。在一些实施例中,所述方法和设备将特定的数据字段添加到区块链事务的数据结构中。这允许该方法和设备支持在区块链上执行原子事务,而不需要该区块链部署代理合约,从而减少存储空间和计算资源的消耗。这也允许在区块链上定义的每个合约都可以与其他合约交互,而不管该合约何时部署以及该合约如何实施。在一些实施例中,所述方法和设备可以处理新数据字段设置为nil的事务。这允许该方法和设备支持没有利用本文公开的原子性的事务的创建和执行。这也将数据结构更改对常规事务的影响降至最低。以这种方式,所述方法和设备可以在现有的区块链系统中使用而无需进行重大修改。
区块链是用于存储诸如事务的数据的数据结构,其可以防止恶意方篡改和操纵数据。以这种方式存储的事务可能是不可变的并且可以随后被验证。区块链包括一个或多个区块。每个区块通过包括紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还可以包括时间戳、自身的加密哈希值以及一个或多个事务。通常已经由区块链系统的节点验证的事务可以经哈希处理并编码成例如默克尔(Merkle)树的数据结构。在Merkle树中,叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值可以在分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在树中的事务的哈希值可以通过确定其是否与树的结构一致而被快速验证。
区块链系统包括管理、更新和维护一个或多个区块链的计算节点的网络。所述网络可以是公有区块链网络、私有区块链网络或联盟区块链网络。例如,许多实体,诸如数百、数千或甚至数百万实体可以在公有区块链网络中操作,并且每个实体操作公有区块链网络中的至少一个节点。因此,公有区块链网络可被认为是关于参与实体的公有网络。有时,大多数实体(节点)必须对每个区块签名才能使该区块有效并被添加到区块链网络的区块链中。公有区块链网络的示例包括利用分布式账本(称为区块链)的特定的点对点支付网络。
通常,公有区块链网络可以支持公开事务。公开事务对公有区块链网络内的所有节点共享,并存储在全局区块链中。全局区块链是跨所有节点复制的区块链,并且所有节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络中实施共识协议。共识协议的示例包括工作量证明(proof-of-work,POW)(例如,在一些加密货币网络中实现)、权益证明(proof-of-stake,POS)和权威证明(proof-of-authority,POA)。
通常,可以为特定实体提供私有区块链网络,该特定实体集中控制读写权限。该实体控制哪些节点能够参与到区块链网络中。因此,私有区块链网络通常被称为权限网络,其限制允许谁参与网络,以及它们的参与级别(例如,仅在特定的事务中)。可以使用各种类型的访问控制机制(例如,现有参与者投票添加新实体,管理机构可以控制准入)。
通常,联盟区块链网络在参与的实体之间是私有的。在联盟区块链网络中,共识处理由一组被授权的节点控制,一个或多个节点由相应实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是与参与实体相关的私有网络。在一些示例中,每个实体(节点)必须对每个区块签名,以使区块有效并被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,以使区块有效并被添加到区块链中。
图1示出了根据实施例的区块链系统100的示意图。参考图1,区块链系统100可以包括被配置为在区块链120上操作的多个节点,例如节点102-110。节点102-110可以形成网络112,例如点对点网络。节点102-110中的每一个可以是被配置为存储区块链120的副本的计算设备,例如计算机或计算机系统,或者可以是在计算设备上运行的软件,诸如进程或应用程序。节点102-110中的每一个可以具有唯一标识符。
区块链120可以包括为例如图1中的区块B1-B5的数据块形式的记录的增长列表。区块B1-B5中的每一个可以包括时间戳、前一区块的加密哈希值,以及当前区块的数据,该数据可以是诸如货币交易的事务。例如,如图1所示,区块B5可以包括时间戳、区块B4的加密哈希值和区块B5的事务数据。此外,例如,可以对前一个区块执行哈希操作以生成前一个区块的加密哈希值。哈希操作可以通过诸如SHA-256的哈希算法将各种长度的输入转换为固定长度的加密输出。
节点102-110可以被配置为对区块链120执行操作。例如,当节点(例如,节点102)想要将新数据存储到区块链120上时,该节点可以生成要被添加到区块链120的新区块,并将该新区块广播到网络112中的例如节点104-110的其他节点。基于新区块的合法性,例如,其签名和事务的有效性,其他节点可以确定接受该新区块,使得节点102和其他节点可以将该新区块添加到它们各自的区块链120的副本中。随着该过程重复,可以将越来越多的数据区块添加到区块链120。
图2示出了根据实施例的用于实现区块链系统中节点(例如,节点102(图1))的计算设备200的示意图。参考图2,计算设备200可以包括通信接口202、处理器204和存储器206。
通信接口202可以便于计算设备200与用于实现网络中其他节点(例如,节点104-110(图1))的设备之间的通信。在一些实施例中,通信接口202被配置为支持一种或多种通信标准,例如互联网标准或协议、综合业务数字网络(Integrated Services DigitalNetwork,ISDN)标准等。在一些实施例中,通信接口202可以包括以下中的一个或多个:局域网(Local Area Network,LAN)卡、电缆调制解调器、卫星调制解调器、数据总线、电缆、无线通信信道、基于无线电的通信信道、蜂窝通信信道、基于互联网协议(Internet Protocol,IP)的通信设备、或用于有线和/或无线通信的其他通信设备。在一些实施例中,通信接口202可以基于公有云基础设施、私有云基础设施、混合公有/私有云基础设施。
处理器204可以包括一个或多个专用处理单元、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,FPGA)或各种其他类型的处理器或处理单元。处理器204与存储器206耦合,并且被配置为执行存储在存储器206中的指令。
存储器206可以存储可由处理器执行的指令和数据,例如区块链120(图1)的副本。存储器206可以包括任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(static random-access memory,SRAM)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、可编程只读存储器(programmable read-only memory,PROM)、只读存储器(read-only memory,ROM)、磁存储器、闪存或磁盘或光盘。当存储器206中的指令由处理器204执行时,计算设备200可以对区块链120执行操作。
图3示出了根据实施例的描绘的用于在区块链上提供原子事务的协议300的框图。如图3所示,用户可能在区块链上拥有账户,例如区块链120(图1)。可以实施区块链以支持各种类型的用户或各方,包括例如个人、企业、银行、金融机构、医院以及其他类型的公司、组织等。
为了说明,图3中描绘了第一用户302和第二用户304。图3还描绘了两个智能合约。即合约A和合约B。智能合约是以计算机代码的形式实现的计算机协议,这些计算机代码并入区块链,以促进、验证或施行合约的协商或执行。例如,区块链的用户可以使用诸如C++、Java、Solidity、Python等编程语言将商定的条款编程为智能合约,并且当满足条款时,可以由区块链自动执行智能合约,例如执行事务。又例如,智能合约可以包括多个子程序、函数或方法,每个子程序或函数可以是执行专用任务的一系列程序指令。智能合约可以是在完全或部分没有人工交互的情况下执行的操作代码。在一些实施例中,第一智能合约,例如合约A,可以被并入到区块链中以管理记录在区块链上的一些资产(例如,某种类型的数字货币)。第二智能合约,例如合约B,也可以并入区块链,以管理记录在区块链上的一些资产(例如,某种类型的商品)。出于说明目的,虚线矩形用于表示可能调用合约A和合约B中定义的一种或多种方法的事务。应理解,虚线矩形并不表示区块链维护的数据结构。
假设第一用户302拥有由合约A管理的第一资产并且想要用第一资产交换由合约B管理的第二资产。在这种情况下,第一用户302可以创建第一事务306,提议以第一资产交换第二资产。第一事务306可以使用图3中描绘的数据结构来定义,这又定义了可以在区块链上执行的一个事件。如下文将详细描述的,第一事务306可以将该事件定义为在满足某些执行条件的情况下对在智能合约(例如,“contractA”)中定义的方法(例如,“methodA”)的调用。如果第二用户304拥有第二资产并且愿意与第一用户302进行交换,则第二用户304可以创建第二事务308,接受/履行该提议(offer)。可以使用相同的数据结构来定义第二事务308。用户302和用户304都可能有兴趣以原子性的方式执行交换,这意味着他们可能有兴趣确保两个事务306和308要么都成功,要么都失败。为此,用户302和用户304都可以遵循图3中描绘的协议300以执行第一事务306和第二事务308。
在一些实施例中,第一用户302在创建第一事务306时可以指定各种数据字段306-1到306-10。数据字段可以包括事务标识符(transactionID)306-1、时间戳(timestamp)306-2、“来自(from)”数据字段306-3、“到(to)”数据字段306-4、超时参数(timeout)306-5、状态指示符(status)306-6,方法选择器(method)306-7、输入数据字段(data)306-8、目标事务标识符(tagetTransactionID)306-9和一个或多个执行条件(executeCondition)306-10。
在一些实施例中,事务标识符306-1可以指定唯一标识第一事务306的值,例如哈希字符串。时间戳306-2可以指定创建第一事务306的时间。“来自”数据字段306-3可以标识事务发送者,在此情况下是第一用户302。“到”数据字段306-4可以标识事务接收方,其可以设置为合约A,即管理第一资产的合约。超时参数306-5可以指定第一事务306被设置为过期的时间。状态指示符306-6可以指示第一事务306的状态,包括例如“pending”(待处理)、“success”(成功)、“reverted”(已恢复)或“expired”(已过期)。方法选择器306-7可以指定在合约A中定义的方法,如果/当第一事务306执行时将调用该方法。在一些实施例中,该方法可以包括由合约A提供的转移操作以将第一资产从第一用户302转移到指定用户(例如,第二用户304)。输入数据字段306-8可以指定一个或多个输入参数,该输入参数提供给方法选择器306-7中指定的方法。在一些实施例中,输入数据字段306-8可以包括串行化的输入数据,当执行第一事务306时,可以将该串行化输入数据解码以用作所述方法的输入参数。
目标事务标识符306-9可以指示哪个事务将与第一事务306一起原子性地执行。要与第一事务306一起原子性地执行的事务可以称为第一事务306的“目标”事务。在一些实施例中,如果第一用户302不知道哪个事务是第一事务306的目标事务,则目标事务标识符306-9可以留空(例如,设置为nil)。例如,当第一用户302正在创建第一事务306作为提议事务提议将第一资产交换为第二资产时,相应的目标事务标识符可以留空。在创建第一事务306时,可能尚未创建第二事务308,因此可以将第一事务306的目标事务标识符306-9留空。
执行条件306-10可以指定执行第一事务306必须满足的一个或多个条件。在一些实施例中,该条件可以包括对第一事务306的目标事务建立的某些要求。换言之,第一事务306的目标事务可能需要满足第一事务306提出的执行条件306-10,以使目标事务与第一事务306一起原子性地执行。继续上述示例,在第一用户302想要将由合约A管理的第一资产交换为由合约B管理的第二资产的情况下,第一用户302可以指定执行条件306-10,该执行条件限定第一事务306的目标事务必须是对合约B管理的资产进行操作的事务。该执行条件在图3中可以表示为“targetTx.to==contractB”。以这种方式,如果第二用户304想要接受第一用户302的将第一资产交换为第二资产的提议,则第二用户304可以创建第二事务308,其中“到”数据字段308-4设置为合约B。否则,第二事务308可能不满足第一事务306的执行条件306-10。
第一用户302还可以要求第一事务306的目标事务在该目标事务执行时调用合约B提供的特定方法。例如,在一些实施例中,第一用户302可以要求第一事务306的目标事务调用合约B中定义的方法,该方法在目标事务执行时执行转移操作。该执行条件可以表示为图3中的“targetTx.method==methodB”。以这种方式,如果第二用户304想要接受第一用户302的将第一资产交换为第二资产的提议,则第二用户304可以创建第二事务308,其中方法选择器308-7设置为方法B。否则,第二事务308可能不满足第一事务306的执行条件306-10。
第一用户302还可以指定附加的执行条件306-10。例如,如图3所示。第一用户302可以要求第一事务306的目标事务调用指定的方法(例如“methodB”)中第一参数的值大于10,第二参数的值小于20。其他参数的目标值可以以类似的方式指定。
在一些实施例中,第一用户302可以基于第一用户302的提议来确定目标值。例如,假设第一用户302提议用一个单位的第一资产交换至少十一个单位的第二资产,并进一步假设methodB将参数param_B(1)作为要转移的第二资产的总单位数,则第一用户302可以指定param_B(1)必须大于10作为执行条件306-10。以这种方式,如果第二用户304想要接受第一用户302将第一资产换成第二资产的提议,则第二用户304可以创建第二事务308,其中参数param_B(1)设置为大于10。否则,第二事务308可能不满足第一事务306的执行条件306-10。
应当理解,以上描述的执行条件306-10仅作为示例提供,并不意味着限制。可以以类似方式指定其他执行条件306-10,并且目标值可以包括数字、字符串以及以其他类型的数据结构表示的值。需要注意的是,虽然具体的实施方式可能不同,但实施执行条件306-10的目的可能是相同的,即赋予第一用户302指定第一事务306的目标事务所需要的条件(例如,以什么参数调用哪个智能合约的哪个方法)的能力。
一旦创建了第一事务306,第一用户302就可以提交第一事务306以记录在区块链上。在一些实施例中,可以将提交给区块链的第一事务306添加到区块310,该区块310受到共识过程的约束。出于说明的目的,图3中的黑点用于指示区块链的各个区块中包含的各事务(例如这些事务可以包含在图1的区块B5中),并且第一事务306被描绘为作为事务之一包含在区块310中。在一些实施例中,将第一事务306添加到区块310可以触发事务执行过程316,该事务执行过程316可以在步骤318确定第一事务306是提议事务,因为它的目标事务标识符设置为nil并且它的执行条件不为nil。该事务执行过程316然后可以在步骤320将第一事务306的状态设置为“pending”。或者,在一些实施例中,提交给区块链的第一事务306可以保留在由区块链维护的待处理事务池中,而不被添加到任何区块中。在一些实施例中,第一事务306可以保留在待处理事务池中,直到它被履行或到期。
一旦第一事务306被记录在区块链上,第一事务306可以对其他用户(包括第二用户304)可见,这些其他用户可能有兴趣创建第二事务308以接受/履行在第一事务306中指定的提议。第二用户304可以在创建第二事务308时指定各种数据字段308-1到308-10。数据字段可以包括事务标识符(transactionID)308-1、时间戳(timestamp)308-2、“来自(from)”数据字段308-3、“到(to)”数据字段308-4、超时参数(timeout)308-5、状态指示符(status)308-6,方法选择器(method)308-7、输入数据字段(data)308-8、目标事务标识符(tagetTransactionID)308-9和一个或多个执行条件(executeCondition)308-10。
事务标识符308-1可以指定唯一标识事务308的值,例如哈希字符串。时间戳308-2可以指定创建事务308的时间。“来自”数据字段308-3可以标识事务发送者,在此情况下是第二用户304。“到”数据字段308-4可以标识事务接收方,其可以设置为合约B,即管理第二资产的合约。超时参数308-5可以指定第二事务308被设置为过期的时间。状态指示符308-6可以指示事务308的状态,包括例如“pending”(待处理)、“success”(成功)、“reverted”(已恢复)或“expired”(已过期)。方法选择器308-7可以指定在合约B中定义的方法,如果/当第二事务308被执行时将调用该方法。在一些实施例中,该方法可以包括由合约B提供的转移操作以将第二资产从第二用户304转移到指定用户(例如,第一用户302)。输入数据字段308-8可以指定一个或多个输入参数,该输入参数提供给方法选择器308-7中指定的方法。在一些实施例中,输入数据字段308-8可以包括串行化的输入数据,当执行事务308时,可以将该输入数据串行化的解码以用作所述方法的输入参数。
目标事务标识符308-9可以指示哪个事务将与第二事务308一起原子性地执行。在这种情况下,第二用户304可以将目标事务标识符308-9设置为第一事务306的事务标识符306-1,以指示将与第二事务208一起原子性地执行的是第一事务306。以这种方式,可以认为已经创建了第二事务308来履行第一事务306。因此,第二事务308可以被称为履行事务。
在一些实施例中,用作履行事务的第二事务308可以将执行条件308-10留空(例如,设置为nil)。在该实施例中,第二事务308可以接受在第一事务306中提出的执行条件306-10。然而,为了使第二事务308成为有效的履行事务,第二事务308必须满足在第一事务306中提出的执行条件306-10。在一些实施例中,可以在将第二事务308提交到区块链之后验证第二事务308的有效性。在一些实施例中,可以将提交到区块链的第二事务308添加到区块312,该区块312受到共识过程的约束。
在一些实施例中,将第二事务308添加到区块312可以触发事务执行过程316,该事务过程316可以在步骤318确定第二事务308是履行事务,因为它的目标事务标识符不为nil。该事务执行过程316然后可以进行到步骤322。
在步骤322,事务执行过程316可以识别由第二事务308的目标事务标识符308-9指定的目标事务。因为事务执行过程316已经确定第二事务308是履行事务,所以事务执行过程316可以将由目标事务标识符308-9指定的目标事务识别为对应于该履行事务的提议事务。继续上述示例,第二事务308的目标事务标识符308-9可以将第一事务306标识为目标事务,从而允许事务执行过程316检索到目标事务标识符308-9并识别第一事务306作为提议事务。如果(1)第一事务306仍然有效并且(2)第二事务308满足在第一事务306中提出的执行条件306-10,则事务执行过程316可以使第二事务308与第一事务306一起执行和提交。
在一些实施例中,事务执行过程316可以基于第一事务306的超时参数306-5来确定第一事务306是否仍然有效。例如,事务执行过程316可以计算当前时间戳和第一事务306的时间戳306-2之间的差值,并将该差值与第一事务306的超时参数306-5进行比较。如果该差值大于超时参数306-5,则事务执行过程316可以确定第一事务306已经过期并且因此不再有效。备选地或附加地,事务执行过程316可以基于第一事务306的状态指示符306-6来确定第一事务306是否仍然有效。例如,如果事务执行过程316确定状态指示符306-6指示第一事务306仍然“待处理”,则事务执行过程316可以确定第一事务306仍然有效。在一些实施例中,如果事务执行过程316确定第一事务306不再有效,则事务执行过程316可以恢复第二事务308(例如,通过将第二事务308的状态指示符308-6设置为“reverted”),以使由第二事务308引起的任何更改(如果有)都可以在区块链上恢复。
在一些实施例中,如果事务执行过程316确定第一事务306仍然有效,则事务执行过程316可以继续确定第二事务308是否满足在第一事务306中提出的执行条件306-10。继续上述示例,执行条件306-10可以要求将第二事务308发送到合约B并且当执行第二事务308时第二事务308调用方法B。因此,如果事务执行过程316确定第二事务308的“到”数据字段308-4未设置为合约B,或者第二事务308的方法选择器308-7未设置为方法B,则事务执行过程316可以确定第二事务308不满足执行条件306-10。在一些实施例中,执行条件306-10还可以对参数param_B(1)和param_B(2)提出某些要求。因此,如果事务执行过程316确定第二事务308的输入数据字段308-8将参数param_B(1)和param_B(2)设置为不符合执行条件306-10中提出的要求的值,事务执行过程316可以确定第二事务308不满足执行条件306-10。
在一些实施例中,如果事务执行过程316确定第二事务308不满足执行条件306-10,则事务执行过程316可以恢复第二事务308(例如,通过将第二事务308的状态指示符308-6设置为“reverted”),以使可以在区块链上恢复由第二事务308引起的任何更改。另一方面,如果事务执行过程316确定第二事务308满足执行条件306-10,则事务执行过程316可以继续执行第一事务306和第二事务308。如果第一事务306和第二事务308都成功执行,则事务执行过程316可以在区块链上提交两个事务的执行(例如,通过将事务306和事务308合并到区块链中并设置事务306的状态指示符306-6和事务308的状态指示符308-6为“success”)。以这种方式,可以将执行结果包括在新的区块中,例如区块314,然后可以将该区块添加到区块链中。另一方面,如果第一事务306或第二事务308执行不成功,则事务执行过程316可以恢复事务306和事务308(例如,通过将事务306的状态指示符306-6和事务308的状态指示符308-6设置为“reverted”),以使可以在区块链上恢复由第一事务306或第二事务308引起的任何更改。以这种方式,可以实现原子性,因为两个事务306和308要么都成功,要么都失败,不允许部分处理。
在一些实施例中,事务执行过程316可以进一步支持执行既不是提议事务也不是履行事务的事务。此类事务可以将目标事务标识符和执行条件都设置为nil。当事务执行过程316确定一个事务既不是提议事务也不是履行事务时,事务执行过程316可以进行到步骤324并将该事务视为“常规”事务。在一些实施例中,事务执行过程316可以以常规方式处理常规事务。例如,事务执行过程316可以按照该事务在区块链上的常规执行方式执行该事务并更新该事务的状态,从而最小化新数据字段(例如,目标事务标识符和执行条件)对常规事务的影响。
应当理解,虽然以上示例引用了用户创建的事务306和事务308,但这样的实现仅作为示例提供,并不意味着限制。在一些实施例中,事务306和事务308可以是用户创建的或系统生成的。还应理解,虽然上述示例将合约A和合约B称为并入区块链的两个不同的智能合约,但此类实施仅作为示例提供,并不意味着限制。在一些实施例中,可以允许第一用户302将目标事务(例如targetTx.to)设置为合约A,在此情况下,履行事务也需要是发送到合约A的事务。此外,应理解,上述函数、变量和事务的声明仅作为示例呈现,并不意味着限制。
图4示出了根据实施例的用于在区块链上提供原子事务的方法400的流程图。方法400可以由区块链系统中的一个或多个节点执行,例如区块链系统100(图1)中的节点102-110。区块链系统100中的节点102-110可以在区块链上执行操作,例如区块链120(图1)。区块链120可以实现为上述示例中的区块链。
在步骤402,节点(例如节点102)可以接收提交到区块链120的事务。在步骤404,节点102可以确定该事务是提议事务、履行事务还是常规事务。
在一些实施例中,如果该事务指定了一个或多个执行条件但未指定目标事务标识符,则节点102可以确定该事务是提议事务。如果该事务指定了目标事务标识符,则节点102可以将该事务识别为履行事务。如果该事务既没有指定目标事务标识符也没有指定执行条件,则节点102可以将该事务识别为常规事务。
在一些实施例中,如果节点102确定该事务是提议事务,则节点102可以将该事务的状态设置为待处理。如果节点102确定该事务是常规事务,则节点102可以以常规方式执行该事务。如果节点102确定该事务是履行事务,则节点102可以进行到步骤406。
在步骤406,响应于确定该事务是履行事务(例如,第二事务308,图3),节点102可以识别对应于该履行事务的提议事务(例如,第一事务306,图3)。在一些实施例中,节点102可以基于在履行事务中指定的目标事务标识符(例如,目标事务标识符308-9,图3)来识别提议事务。节点102可以检索到在履行事务中指定的目标事务标识符并且基于该目标事务标识符识别提议事务。
在步骤408,节点102可以确定该提议事务是否有效以及该履行事务是否满足在该提议事务中指定的执行条件。
在一些实施例中,节点102可以基于在该提议事务中指定的超时参数来确定该提议事务是否有效。例如,节点102可以计算当前时间戳和创建提议事务时记录的时间戳之间的差值。节点102可以将该差值与提议事务中指定的超时参数进行比较。如果该差值大于所述超时参数,则节点102可以认为提议事务已经过期并且因此不再有效。替代地或附加地,节点102可以基于在提议事务中指定的状态指示符来确定提议事务是否有效。例如,如果节点102确定提议事务中指定的状态指示符指示该提议事务仍然待确定,则节点102可以确定该提议事务是有效的。在一些实施例中,如果节点102确定提议事务不再有效,则节点102可以恢复履行事务,从而可以在区块链120上恢复由履行事务引起的任何改变。
在一些实施例中,提议事务可以指定一个或多个执行条件,并且节点102可以确定履行事务是否满足在该提议事务中指定的每个执行条件。执行条件可以指定例如应将履行事务发送到的智能合约、履行事务应调用的方法、或应包含在履行事务中的参数的目标值。应当理解,目标值可以被指定为特定值、值的范围、最小值、最大值等。
在步骤410,响应于确定该提议事务有效并且该履行事务满足在该提议事务中指定的执行条件,节点102可以执行该履行事务和该提议事务。在一些实施例中,节点102可以确定履行事务和提议事务是否被成功执行。如果履行事务和提议事务都成功执行,则节点102可以在区块链120上提交履行事务和提议事务两者的执行。另一方面,如果履行事务和提议事务中的至少一个未成功执行,则节点102可以恢复履行事务和提议事务,从而可以恢复由履行事务或提议事务引起的在区块链上的任何改变。以这种方式,可以实现原子性,因为履行事务和提议事务要么都成功,要么都失败,不允许部分处理。
图5是根据实施例的用于在区块链上提供原子事务的装置500的框图。装置500可以是软件过程的实施方式,并且可以对应方法400(图4)。参考图5,装置500可以包括接收模块502、确定模块504、识别模块506和执行模块508。
接收模块502可以接收提交到区块链的事务。接收模块502可以将接收到的事务提供给确定模块504。
确定模块504可以确定该事务是提议事务、履行事务还是常规事务。如果该事务是常规事务,则确定模块504可以将该事务提供给执行模块508以执行该事务。如果该事务是提议事务,则确定模块504可以将该事务的状态设置为待处理。如果该事务是履行事务,则确定模块504可以将该事务提供给识别模块506以进一步处理。
识别模块506可以识别对应于履行事务的提议事务。在一些实施例中,识别模块506可以基于在履行事务中指定的目标事务标识符来识别提议事务。识别模块506可以检索到在履行事务中指定的目标事务标识符并且基于该目标事务标识符识别提议事务。识别模块506然后可以将识别到的提议事务提供给确定模块504。
确定模块504可以确定提议事务是否有效以及履行事务是否满足在该提议事务中指定的执行条件。响应于确定该提议事务有效并且该履行事务满足在该提议事务中指定的执行条件,确定模块504可以将该提议事务和该履行事务提供给执行模块508以供执行。在一些实施例中,如果提议事务和履行事务都成功执行,则执行模块508可以在区块链上提交该提议事务和该履行事务两者的执行。另一方面,如果提议事务和履行事务中的至少一个未成功执行,则执行模块508可以恢复该提议事务和该履行事务,使得由该提议事务和该履行事务引起的在区块链上的任何改变可以恢复。以这种方式,可以实现原子性,因为提议事务和履行事务可能要么都成功,要么都失败,不允许部分处理。
上述模块中的每一个可以实现为软件或硬件,或软件和硬件的组合。例如,可以使用执行存储在存储器中的指令的处理器来实施上述模块中的每一个。而且,例如,每个上述模块可以使用一个或多个专用集成电路(application specific integrated circuit,ASIC)、数字信号处理器(digital signal processor,DSP)、数字信号处理设备(digitalsignal processing device,DSPD)、可编程逻辑器件(programmable logic device,PLD)、现场可编程门阵列(field programmable gate array,FPGA)、控制器、微控制器、微处理器或其他电子组件来实施以执行所描述的方法。进一步地,例如,上述模块中的每一个可以通过使用计算机芯片或实体来实施,或者通过使用具有特定功能的产品来实施。在一个实施例中,装置500可以是计算机,并且计算机可以是个人计算机、膝上型计算机、蜂窝电话、照相手机、智能手机、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板电脑、可穿戴设备或这些设备的任何组合。
对于装置500中每个模块的功能和角色的实施过程,可以参考上述方法中的相应步骤。为了简明,这里省略了细节。
在一些实施例中,计算机程序产品可以包括非暂态计算机可读存储介质,其上存储有计算机可读程序指令,用于使处理器执行上述方法。
计算机可读存储介质可以是有形设备,其可以存储供指令执行设备使用的指令。所述计算机可读存储介质可以是,但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、例如在其上记录有指令的凹槽中的穿孔卡或凸起结构的机械编码设备,以及前述的任何合适的组合。
用于执行上述方法的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,该编程语言包括面向对象的编程语言和传统的过程编程语言。计算机可读程序指令可以完全在计算设备上作为独立软件包执行,或者部分在第一计算设备上执行、部分在远离第一计算设备的第二计算设备上执行。在后一种情况下,第二远程计算设备可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到第一计算设备。
计算机可读程序指令可以被提供给通用或专用计算机的处理器或其他可编程数据处理装置以产生机器,使得指令经由计算机的处理器或其他可编程数据处理装置执行,创建用于实施上述方法的装置。
附图中的流程图和框图示出了根据本文的各种实施例的设备、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的框可以表示软件程序、代码的段或部分,其包括用于实现特定功能的一个或多个可执行指令。还应注意,在一些可选实施例中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,图和/或流程图的每个框以及图和流程图中的框的组合可以由执行指定功能或动作的专用目的的基于硬件的系统来实施,或由专用目的的硬件和计算机指令的组合来实施。
应当理解,为了清楚起见,在单个实施例的上下文中描述的说明书的某些特征也可以在单个实施例中组合提供。相反,为了简洁,在单个实施例的上下文中描述的本文的各种特征也可以单独提供或者以任何合适的子组合提供,或者在本文的任何其他描述的实施例中合适地提供。除非另有说明,否则在各种实施例的上下文中描述的某些特征不是那些实施例的必要特征。
尽管已经结合具体实施例描述了本文,但是许多替换、修改和变体对于本领域技术人员而言将是显而易见的。因此,以下权利要求包含落入权利要求的范围内的所有这些替代、修改和变体。
Claims (15)
1.一种用于在区块链上提供原子事务的计算机实施方法,所述方法包括:
接收提交到所述区块链的事务;
确定所述事务是否为履行事务;
响应于确定所述事务是履行事务,识别对应于所述履行事务的提议事务;
确定所述提议事务是否有效,和所述履行事务是否满足在所述提议事务中指定的执行条件;
响应于确定所述提议事务有效并且所述履行事务满足在所述提议事务中指定的所述执行条件,执行所述履行事务和所述提议事务。
2.根据权利要求1所述的方法,还包括:
确定所述事务是否为提议事务;
响应于确定所述事务是提议事务,将所述事务的状态设置为待处理。
3.根据权利要求1所述的方法,还包括:
确定所述事务是否为常规事务;
响应于确定所述事务是常规事务,执行所述事务。
4.根据前述任一权利要求所述的方法,其中,确定所述事务是履行事务,还包括:
确定所述事务是否指定了目标事务标识符;
响应于确定所述事务指定了目标事务标识符,将所述事务识别为履行事务。
5.根据权利要求4所述的方法,其中,识别对应于所述履行事务的所述提议事务,还包括:
检索到在所述履行事务中指定的所述目标事务标识符;
基于所述目标事务标识符识别所述提议事务。
6.根据前述任一权利要求所述的方法,其中,确定所述提议事务是否有效,还包括:
基于在所述提议事务中指定的超时参数确定所述提议事务是否有效。
7.根据前述任一权利要求所述的方法,其中,确定所述提议事务是否有效,还包括:
根据在所述提议事务中指定的状态指示符确定所述提议事务是否有效。
8.根据前述任一权利要求所述的方法,其中,在所述提议事务中指定的所述执行条件指定智能合约,所述履行事务被发送到所述智能合约。
9.根据前述任一权利要求所述的方法,其中,在所述提议事务中指定的所述执行条件指定由所述履行事务调用的方法。
10.根据前述任一权利要求所述的方法,其中,在所述提议事务中指定的所述执行条件指定目标值以及所述目标值如何与包含在所述履行事务中的参数进行比较。
11.如前述任一权利要求所述的方法,还包括:
确定所述履约事务和所述提议事务是否成功执行;
响应于确定所述履行事务和所述提议事务都成功执行,在所述区块链上提交所述履行事务和所述提议事务两者的执行。
12.根据权利要求11所述的方法,还包括:
响应于确定所述履行事务和所述提议事务中的至少一个未成功执行,恢复所述履行事务和所述提议事务。
13.一种用于在区块链上提供原子事务的设备,包括:
一个或多个处理器;
耦接至所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行如权利要求1至12中任一项所述的方法。
14.一种用于在区块链上提供原子事务的装置,所述装置包括用于执行权利要求1至12中任一项所述的方法的多个模块。
15.一种存储有指令的非暂时性计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行权利要求1至12中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SG10202000134RA SG10202000134RA (en) | 2020-01-07 | 2020-01-07 | Methods and devices for providing atomic transaction on blockchain |
SG10202000134R | 2020-01-07 | ||
PCT/CN2020/128077 WO2021139392A1 (en) | 2020-01-07 | 2020-11-11 | Methods and devices for providing atomic transaction on blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114902268A true CN114902268A (zh) | 2022-08-12 |
Family
ID=76787629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080091508.0A Pending CN114902268A (zh) | 2020-01-07 | 2020-11-11 | 用于在区块链上提供原子事务的方法及设备 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN114902268A (zh) |
SG (1) | SG10202000134RA (zh) |
WO (1) | WO2021139392A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190251199A1 (en) * | 2018-02-14 | 2019-08-15 | Ivan Klianev | Transactions Across Blockchain Networks |
US11431477B2 (en) * | 2018-05-14 | 2022-08-30 | nChain Holdings Limited | Computer-implemented systems and methods for using a blockchain to perform an atomic swap |
CN109087080B (zh) * | 2018-07-13 | 2020-11-06 | 杭州复杂美科技有限公司 | 跨链交易方法、设备和存储介质 |
CN109683995B (zh) * | 2018-12-17 | 2022-03-11 | 达闼机器人有限公司 | 一种打包区块、验证区块和智能合约执行的方法 |
CN110428332A (zh) * | 2019-07-29 | 2019-11-08 | 杭州复杂美科技有限公司 | 一种平行链跨链交易方法、设备和存储介质 |
-
2020
- 2020-01-07 SG SG10202000134RA patent/SG10202000134RA/en unknown
- 2020-11-11 CN CN202080091508.0A patent/CN114902268A/zh active Pending
- 2020-11-11 WO PCT/CN2020/128077 patent/WO2021139392A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021139392A1 (en) | 2021-07-15 |
SG10202000134RA (en) | 2021-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6955026B2 (ja) | 並列処理ブロックチェーントランザクションのためのシステムおよび方法 | |
US11055136B2 (en) | Prioritization in a permissioned blockchain | |
CN110998580A (zh) | 在区块链系统中确认交易有效性的方法和设备 | |
EP3665595B1 (en) | Methods and devices for data traversal | |
CN111754343B (zh) | 隐私保护的死锁解除 | |
CN111034151B (zh) | 用于管理对区块链系统中的账户的访问的方法和设备 | |
CN115152177B (zh) | 提供机密知识的专门证明的系统和方法 | |
US20200334057A1 (en) | Methods and devices for establishing communication between blockchain networks | |
CN110731073B (zh) | 在区块链系统中的节点之间建立通信的方法和设备 | |
WO2022193920A1 (en) | Blockchain data segregation | |
WO2023099357A1 (en) | Compressible blockchains | |
WO2020182233A2 (en) | Methods and devices for executing cross-chain anonymous multi-swap contracts | |
CN114945931A (zh) | 用于减轻票据融资欺诈的方法和设备 | |
WO2021023094A1 (en) | Methods and devices for executing n-time hashed time lock contracts | |
CN114902268A (zh) | 用于在区块链上提供原子事务的方法及设备 | |
WO2021139543A1 (en) | Methods and devices for managing standby letter of credit | |
WO2021139542A1 (en) | Methods and devices for providing atomic transaction on blockchain | |
CN114930372A (zh) | 促进拆分票据融资的方法和设备 | |
CN115023721A (zh) | 用于保护和验证记录的状态转换的方法和设备 | |
CN114830159A (zh) | 用于减轻票据融资欺诈的方法和设备 | |
CN114846765A (zh) | 提供去中心化身份验证的方法和设备 | |
CN111506435A (zh) | 检测实时全额结算系统中死锁的方法、设备、装置和介质 | |
CN111580982B (zh) | 检测实时全额结算系统中死锁的方法、设备、装置和介质 | |
CN111580983B (zh) | 检测实时全额结算系统中死锁的方法、设备、装置和介质 | |
WO2021223661A1 (en) | Methods and devices for protecting and verifying state information of record |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240929 Address after: 128 Meizhi Road, Singapore, Guohao Times City # 20-01189773 Applicant after: Ant Chain Technology Co.,Ltd. Country or region after: Singapore Address before: 51 Belashbaatar Road, Singapore City, Laizanda No.1 # 04-08 Applicant before: Alipay laboratories (Singapore) Ltd. Country or region before: Singapore |