CN114979165B - 一种基于区块链的合约交互方法 - Google Patents
一种基于区块链的合约交互方法 Download PDFInfo
- Publication number
- CN114979165B CN114979165B CN202210565886.9A CN202210565886A CN114979165B CN 114979165 B CN114979165 B CN 114979165B CN 202210565886 A CN202210565886 A CN 202210565886A CN 114979165 B CN114979165 B CN 114979165B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- function
- state
- contract
- event
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000003993 interaction Effects 0.000 title claims abstract description 21
- 239000012634 fragment Substances 0.000 claims abstract description 45
- 238000005192 partition Methods 0.000 claims abstract description 39
- 238000012795 verification Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 231
- 230000008569 process Effects 0.000 claims description 23
- 238000004806 packaging method and process Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- 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/401—Transaction verification
-
- 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/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了一种基于区块链的合约交互方法,涉及分片网络技术领域,基于区块链的合约交互方法包括以下步骤:获取第一智能合约,调用第一智能合约中的函数,获取第二智能合约所在分片的状态,基于分片的状态调用第二智能合约中的函数。第二智能合约中的函数执行完毕后生成返回值,第一智能合约对返回值进行验证,验证通过后继续执行第一智能合约中的剩余函数。有益效果在于相互调用的两个智能合约既可以在同一个分片中,也可以在不同的分片中,实现跨分片的智能合约交互方法,显著提升处理智能合约调用的吞吐量,实现支持异步模式的跨分片合约交互方法,简化智能合约编写的难度,优化智能合约编写的效率,进一步提升处理智能合约调用的吞吐量。
Description
技术领域
本申请属于分片网络技术领域,更具体地说,本申请涉及一种基于区块链的合约交互方法。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务。在当前的主流区块链分片网络中,通常会将智能合约汇总部署在一个特殊的分片中,合约计算和逻辑执行也集中在一个分片内,并且大多采用的是同步调用机制,目前的技术方案存在以下缺陷:
第一,智能合约部署在同一个特殊的分片中,因此在分片系统中智能合约的调用较为困难,状态数据不能很好的同步,同时分片的整体设计较为局限。第二,目前多个分片的状态独立,多个事务可在不同的分片上并行执行,不仅增加吞吐量,且处理智能合约调用的吞吐量低。
发明内容
本申请的目的在于提供一种基于区块链的合约交互方法,以解决上述现有技术中存在的处理智能合约调用的吞吐量低的技术问题。
为实现上述技术目的,本申请采用的技术方案如下:
一种基于区块链的合约交互方法,其特征在于,包括以下步骤:
获取第一智能合约,调用所述第一智能合约中的函数,判断所述第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数;
若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则获取所述第二智能合约所在分片的状态,基于所述分片的状态调用所述第二智能合约中的函数;
所述第二智能合约中的函数执行完毕后生成返回值,所述第一智能合约对所述返回值进行验证,验证通过后继续执行所述第一智能合约中的剩余函数。
优选地,获取第一智能合约,调用所述第一智能合约中的函数,具体包括以下步骤:
获取第一智能合约所在第一分片的第一状态,判断所述第一分片的第一状态是否和所述第一智能合约中的函数状态相一致;
若所述第一分片的第一状态和所述第一智能合约中的函数状态相一致,则调用所述第一智能合约中的函数。
优选地,若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则获取所述第二智能合约所在分片的状态,基于所述分片的状态调用所述第二智能合约中的函数,具体包括以下步骤:
将所述第二智能合约中的函数和参数打包生成第一事件,所述第一事件发送至所述第二智能合约所在的第二分片;
获取所述第二分片的第二状态,基于所述第二分片的第二状态调用所述第二智能合约中的函数;
其中,所述参数为执行所述第二智能合约中的函数需要的参数。
优选地,获取所述第二分片的第二状态,基于所述第二分片的第二状态调用所述第二智能合约中的函数,具体包括以下步骤:
判断所述第二分片的第二状态是否和所述第二智能合约中的函数状态相一致;
若所述第二状态和所述第二智能合约中的函数状态相一致,则调用所述第二智能合约中的函数。
优选地,所述第二智能合约中的函数执行完毕后生成返回值,所述第一智能合约对所述返回值进行验证,具体包括以下步骤:
所述第二智能合约中的函数执行完毕后生成返回值并更新所述第二分片的状态;
将所述返回值打包生成第二事件,所述第二事件发送至所述第一智能合约所在的第一分片;
所述第一智能合约中的函数接收所述第二事件并解析得到所述返回值,所述第一智能合约中的函数对所述返回值进行验证。
一种基于区块链的合约交互方法,包括以下步骤:
获取第一智能合约,调用所述第一智能合约中的函数,判断所述第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数;
若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则生成第一事件并继续执行所述第一智能合约中的剩余函数;
所述第二智能合约所在的分片接收所述第一事件,获取所述第二智能合约所在分片的状态,基于所述分片的状态调用所述第二智能合约中的函数;
所述第二智能合约中的函数执行完毕后生成第二事件,所述第一智能合约基于所述第二事件调用第一智能合约中的回调函数。
优选地,若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则生成第一事件并继续执行所述第一智能合约中的剩余函数,具体包括以下步骤:
将所述第二智能合约中的函数、参数和所述第一智能合约中的回调函数打包生成第一事件,所述第一事件保存在缓存中;
所述第一智能合约继续执行剩余的函数,剩余函数执行完毕后识别缓存中的所述第一事件,所述第一事件传输至所述第二智能合约所在的分片;
其中,所述参数为执行所述第二智能合约中的函数需要的参数。
优选地,所述第二智能合约中的函数执行完毕后生成第二事件,具体包括以下步骤:
所述第二智能合约中的函数执行完毕后生成返回值,将所述返回值和所述第一智能合约中的回调函数打包生成第二事件;
所述第二事件传输至所述第一智能合约所在的分片。
优选地,所述第一智能合约基于所述第二事件调用第一智能合约中的回调函数,具体包括以下步骤:
所述第一智能合约所在的第一分片接收所述第二事件后,获取第一智能合约所在第一分片的第一状态,判断所述第一分片的第一状态是否和所述第一智能合约中的回调函数状态相一致;
若所述第一分片的第一状态和所述第一智能合约中的回调函数状态相一致,则调用所述第一智能合约中的回调函数。
一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,所述计算机指令被处理器执行时实现上述所述方法的步骤。
本申请提供的有益效果在于:
1、本申请获取第一智能合约,调用第一智能合约中的函数,基于第二智能合约所在分片的状态调用第二智能合约中的函数,第二智能合约中的函数执行完毕后生成返回值,第一智能合约对返回值进行验证,验证通过后继续执行第一智能合约中的剩余函数。相互调用的两个智能合约既可以在同一个分片中,也可以在不同的分片中,实现跨分片的智能合约交互方法,显著提升处理智能合约调用的吞吐量。
2、本申请第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则生成第一事件并继续执行第一智能合约中的剩余函数。基于分片的状态调用第二智能合约中的函数,第二智能合约中的函数执行完毕后生成第二事件,第一智能合约基于第二事件调用第一智能合约中的回调函数。实现支持异步模式的跨分片合约交互方法,简化智能合约编写的难度,优化智能合约编写的效率,进一步提升处理智能合约调用的吞吐量。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是实施例1中合约交互方法的流程图;
图2是实施例3中合约交互方法的流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例1:
如图1所示,本实施例的第一智能合约和第二智能合约分别处于不同的分片中。包括一种基于区块链的合约交互方法,包括以下步骤:获取第一智能合约,调用第一智能合约中的函数,判断第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数。若第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则获取第二智能合约所在分片的状态,基于分片的状态调用第二智能合约中的函数。第二智能合约中的函数执行完毕后生成返回值,第一智能合约对返回值进行验证,验证通过后继续执行第一智能合约中的剩余函数。
获取第一智能合约,调用第一智能合约中的函数,具体包括以下步骤:获取第一智能合约所在第一分片的第一状态,判断第一分片的第一状态是否和第一智能合约中的函数状态相一致。若第一分片的第一状态和第一智能合约中的函数状态相一致,则调用第一智能合约中的函数。
若第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则获取第二智能合约所在分片的状态,基于分片的状态调用第二智能合约中的函数,具体包括以下步骤:将第二智能合约中的函数和参数打包生成第一事件,第一事件发送至第二智能合约所在的第二分片。获取第二分片的第二状态,基于第二分片的第二状态调用第二智能合约中的函数。其中,参数为执行第二智能合约中的函数需要的参数。
获取第二分片的第二状态,基于第二分片的第二状态调用第二智能合约中的函数,具体包括以下步骤:判断第二分片的第二状态是否和第二智能合约中的函数状态相一致。若第二状态和第二智能合约中的函数状态相一致,则调用第二智能合约中的函数。
第二智能合约中的函数执行完毕后生成返回值,第一智能合约对返回值进行验证,具体包括以下步骤:第二智能合约中的函数执行完毕后生成返回值并更新第二分片的状态。将返回值打包生成第二事件,第二事件发送至第一智能合约所在的第一分片。第一智能合约中的函数接收第二事件并解析得到返回值,第一智能合约中的函数对返回值进行验证。
在本实施例中,定义调用的第一智能合约中的函数为a函数,定义调用的第二智能合约中的函数为b函数,定义第一状态为Sa,定义第二状态为Sb。
存在第一智能合约,获取第一智能合约所在第一分片的状态Sa,若第一分片的状态Sa和第一智能合约中的a函数状态相一致,则调用第一智能合约中的a函数。执行a函数的过程中需要调用第二智能合约中的b函数,将第二智能合约中的b函数和参数打包生成第一事件。
第二智能合约接收第一事件后,基于第一事件获取第二分片的状态Sb,若第二分片的状态Sb和第二智能合约中的b函数状态相一致,则调用第二智能合约中的b函数,b函数执行完毕后生成返回值并更新状态Sb。将返回值打包生成第二事件,第二事件发送至第一智能合约所在的第一分片,a函数接收第二事件并解析得到返回值,a函数对返回值进行验证,验证通过后继续执行a函数后续的逻辑,a函数执行完毕后更新状态Sa。
实施例2:
本实施例的第一智能合约和第二智能合约处于相同的分片中。包括一种基于区块链的合约交互方法,包括以下步骤:获取第一智能合约,调用第一智能合约中的函数,判断第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数。若第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则获取第二智能合约所在分片的状态,基于分片的状态调用第二智能合约中的函数。第二智能合约中的函数执行完毕后生成返回值,第一智能合约对返回值进行验证,验证通过后继续执行第一智能合约中的剩余函数。
获取第一智能合约,调用第一智能合约中的函数,具体包括以下步骤:获取第一智能合约所在第一分片的第一状态,判断第一分片的第一状态是否和第一智能合约中的函数状态相一致。若第一分片的第一状态和第一智能合约中的函数状态相一致,则调用第一智能合约中的函数。
获取第二分片的第二状态,基于第二分片的第二状态调用第二智能合约中的函数,具体包括以下步骤:判断第二分片的第二状态是否和第二智能合约中的函数状态相一致。若第二状态和第二智能合约中的函数状态相一致,则调用第二智能合约中的函数。
在本实施例中,由于第一智能合约和第二智能合约处于相同的分片中,因此第一分片和第二分片为同一个分片,第一状态和第二状态为相同的状态。定义调用的第一智能合约中的函数为a函数,定义调用的第二智能合约中的函数为b函数,定义相同的状态为S。
存在第一智能合约,获取第一智能合约所在分片的状态S,若分片的状态S和第一智能合约中的a函数状态相一致,则调用第一智能合约中的a函数。执行a函数的过程中需要调用第二智能合约中的b函数,获取分片的状态S,若分片的状态S和第二智能合约中的b函数状态相一致,则调用第二智能合约中的b函数,b函数执行完毕后生成返回值,a函数接收返回值,a函数对返回值进行验证,验证通过后继续执行a函数后续的逻辑,a函数执行完毕后更新状态S。
实施例3:
如图2所示,本实施例的第一智能合约和第二智能合约分别处于不同的分片中。本实施例包括一种基于区块链的合约交互方法,包括以下步骤:获取第一智能合约,调用第一智能合约中的函数,判断第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数。若第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则生成第一事件并继续执行第一智能合约中的剩余函数。
第二智能合约所在的分片接收第一事件,获取第二智能合约所在分片的状态,基于分片的状态调用第二智能合约中的函数。第二智能合约中的函数执行完毕后生成第二事件,第一智能合约基于第二事件调用第一智能合约中的回调函数。
若第一智能合约中的函数在执行过程中需要调用第二智能合约中的函数,则生成第一事件并继续执行第一智能合约中的剩余函数,具体包括以下步骤:将第二智能合约中的函数、参数和第一智能合约中的回调函数打包生成第一事件,第一事件保存在缓存中。第一智能合约继续执行剩余的函数,剩余函数执行完毕后识别缓存中的第一事件,第一事件传输至第二智能合约所在的分片。其中,参数为执行第二智能合约中的函数需要的参数。
第二智能合约中的函数执行完毕后生成第二事件,具体包括以下步骤:第二智能合约中的函数执行完毕后生成返回值,将返回值和第一智能合约中的回调函数打包生成第二事件。第二事件传输至第一智能合约所在的分片。
第一智能合约基于第二事件调用第一智能合约中的回调函数,具体包括以下步骤:第一智能合约所在的第一分片接收第二事件后,获取第一智能合约所在第一分片的第一状态,判断第一分片的第一状态是否和第一智能合约中的回调函数状态相一致。若第一分片的第一状态和第一智能合约中的回调函数状态相一致,则调用第一智能合约中的回调函数。
在本实施例中,定义调用的第一智能合约中的函数为a函数,定义调用的第二智能合约中的函数为b函数,定义第一状态为Sa,定义第二状态为Sb。
存在第一智能合约,获取第一智能合约所在第一分片的状态Sa,若第一分片的状态Sa和第一智能合约中的a函数状态相一致,则调用第一智能合约中的a函数。执行a函数的过程中需要调用第二智能合约中的b函数,将第二智能合约中的b函数、参数和第一智能合约中的回调函数打包生成第一事件,第一事件保存在缓存中。
继续执行a函数后续的逻辑,a函数的后续逻辑执行完毕后识别缓存中的第一事件,将第一事件传输至第二智能合约所在的第二分片,第二分片接收第一事件后,获取第二分片的状态Sb,若第二分片的状态Sb和第二智能合约中的b函数状态相一致,则调用第二智能合约中的b函数,b函数执行完毕后生成返回值,将返回值和第一智能合约中的回调函数打包生成第二事件。
第二事件传输至第一智能合约所在的第一分片,第一分片接收第二事件后,获取第一分片的状态Sa,判断第一分片的状态Sa是否和第一智能合约中的回调函数状态相一致。若第一分片的状态Sa和第一智能合约中的回调函数状态相一致,则调用第一智能合约中的回调函数,将回调函数执行完毕。
实施例1是支持同步模式的跨分片合约交互方法,实施例2是支持同步模式的同分片合约交互方法,实施例3是支持异步模式的跨分片合约交互方法。
实施例4:
一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,计算机指令被处理器执行时实现实施例1至9中方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本申请专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本申请专利的保护范围内。本申请所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本申请的结构或者超越本权利要求书所定义的范围,均应属于本申请的保护范围。
Claims (8)
1.一种基于区块链的合约交互方法,其特征在于,包括以下步骤:
获取第一智能合约,调用所述第一智能合约中的函数,判断所述第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数;
若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则获取所述第二智能合约所在分片的状态,基于所述分片的状态调用所述第二智能合约中的函数,具体包括以下步骤:
将所述第二智能合约中的函数和参数打包生成第一事件,所述第一事件发送至所述第二智能合约所在的第二分片;
获取所述第二分片的第二状态,基于所述第二分片的第二状态调用所述第二智能合约中的函数;
其中,所述参数为执行所述第二智能合约中的函数需要的参数;
所述第二智能合约中的函数执行完毕后生成返回值,所述第一智能合约对所述返回值进行验证,验证通过后继续执行所述第一智能合约中的剩余函数;
其中,获取所述第二分片的第二状态,基于所述第二分片的第二状态调用所述第二智能合约中的函数,具体包括以下步骤:
判断所述第二分片的第二状态是否和所述第二智能合约中的函数状态相一致;
若所述第二状态和所述第二智能合约中的函数状态相一致,则调用所述第二智能合约中的函数。
2.如权利要求1所述的一种基于区块链的合约交互方法,其特征在于,获取第一智能合约,调用所述第一智能合约中的函数,具体包括以下步骤:
获取第一智能合约所在第一分片的第一状态,判断所述第一分片的第一状态是否和所述第一智能合约中的函数状态相一致;
若所述第一分片的第一状态和所述第一智能合约中的函数状态相一致,则调用所述第一智能合约中的函数。
3.如权利要求1所述的一种基于区块链的合约交互方法,其特征在于,所述第二智能合约中的函数执行完毕后生成返回值,所述第一智能合约对所述返回值进行验证,具体包括以下步骤:
所述第二智能合约中的函数执行完毕后生成返回值并更新所述第二分片的状态;
将所述返回值打包生成第二事件,所述第二事件发送至所述第一智能合约所在的第一分片;
所述第一智能合约中的函数接收所述第二事件并解析得到所述返回值,所述第一智能合约中的函数对所述返回值进行验证。
4.一种基于区块链的合约交互方法,其特征在于,包括以下步骤:
获取第一智能合约,调用所述第一智能合约中的函数,判断所述第一智能合约中的函数在执行过程中是否需要调用第二智能合约中的函数;
若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则生成第一事件并继续执行所述第一智能合约中的剩余函数;
所述第二智能合约所在的第二分片接收所述第一事件,获取第二分片的第二状态,基于第二分片的第二状态调用第二智能合约中的函数,其中,参数为执行第二智能合约中的函数需要的参数;
所述第二智能合约中的函数执行完毕后生成第二事件,所述第一智能合约基于所述第二事件调用第一智能合约中的回调函数;
其中,获取第二分片的第二状态,基于第二分片的第二状态调用第二智能合约中的函数,具体包括以下步骤:
判断所述第二分片的第二状态是否和所述第二智能合约中的函数状态相一致;
若第二状态和所述第二智能合约中的函数状态相一致,则调用所述第二智能合约中的函数。
5.如权利要求4所述的一种基于区块链的合约交互方法,其特征在于,若所述第一智能合约中的函数在执行过程中需要调用所述第二智能合约中的函数,则生成第一事件并继续执行所述第一智能合约中的剩余函数,具体包括以下步骤:
将所述第二智能合约中的函数、参数和所述第一智能合约中的回调函数打包生成第一事件,所述第一事件保存在缓存中;
所述第一智能合约继续执行剩余的函数,剩余函数执行完毕后识别缓存中的所述第一事件,所述第一事件传输至所述第二智能合约所在的分片;
其中,所述参数为执行所述第二智能合约中的函数需要的参数。
6.如权利要求4所述的一种基于区块链的合约交互方法,其特征在于,所述第二智能合约中的函数执行完毕后生成第二事件,具体包括以下步骤:
所述第二智能合约中的函数执行完毕后生成返回值,将所述返回值和所述第一智能合约中的回调函数打包生成第二事件;
所述第二事件传输至所述第一智能合约所在的分片。
7.如权利要求4所述的一种基于区块链的合约交互方法,其特征在于,所述第一智能合约基于所述第二事件调用第一智能合约中的回调函数,具体包括以下步骤:
所述第一智能合约所在的第一分片接收所述第二事件后,获取第一智能合约所在第一分片的第一状态,判断所述第一分片的第一状态是否和所述第一智能合约中的回调函数状态相一致;
若所述第一分片的第一状态和所述第一智能合约中的回调函数状态相一致,则调用所述第一智能合约中的回调函数。
8.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210565886.9A CN114979165B (zh) | 2022-05-18 | 2022-05-18 | 一种基于区块链的合约交互方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210565886.9A CN114979165B (zh) | 2022-05-18 | 2022-05-18 | 一种基于区块链的合约交互方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114979165A CN114979165A (zh) | 2022-08-30 |
CN114979165B true CN114979165B (zh) | 2024-05-07 |
Family
ID=82984288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210565886.9A Active CN114979165B (zh) | 2022-05-18 | 2022-05-18 | 一种基于区块链的合约交互方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114979165B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857580A (zh) * | 2019-03-12 | 2019-06-07 | 深圳市网心科技有限公司 | 区块链跨链合约调用方法、装置及存储介质 |
CN112261162A (zh) * | 2020-12-21 | 2021-01-22 | 支付宝(杭州)信息技术有限公司 | 执行跨片事务的方法及系统、主链节点和目标分片节点 |
CN112487092A (zh) * | 2020-12-03 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的智能合约调用方法及装置 |
CN113259478A (zh) * | 2021-06-17 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102020213240A1 (de) * | 2020-10-20 | 2022-04-21 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zum Abwickeln einer Transaktion zwischen mehreren Partitionen einer Blockkette |
-
2022
- 2022-05-18 CN CN202210565886.9A patent/CN114979165B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857580A (zh) * | 2019-03-12 | 2019-06-07 | 深圳市网心科技有限公司 | 区块链跨链合约调用方法、装置及存储介质 |
CN112487092A (zh) * | 2020-12-03 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的智能合约调用方法及装置 |
CN112261162A (zh) * | 2020-12-21 | 2021-01-22 | 支付宝(杭州)信息技术有限公司 | 执行跨片事务的方法及系统、主链节点和目标分片节点 |
CN113259478A (zh) * | 2021-06-17 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中执行交易的方法、装置及区块链系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114979165A (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111144883B (zh) | 一种区块链网络的处理性能分析方法及装置 | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN110750341A (zh) | 任务调度方法、装置、系统、终端设备及存储介质 | |
CN110276688B (zh) | 一种区块链中交易处理的方法及装置 | |
CN111209336B (zh) | 基于区块链的数据分配方法、装置及服务器 | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN110175081A (zh) | 一种针对Android音频播放的优化系统及其方法 | |
CN110599166A (zh) | 一种区块链内获取交易依赖关系的方法及装置 | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、系统和装置 | |
CN112748993A (zh) | 任务执行方法、装置、存储介质及电子设备 | |
CN112785408A (zh) | 基于哈希的对账方法及装置 | |
CN111553652A (zh) | 业务处理方法及装置 | |
CN114979165B (zh) | 一种基于区块链的合约交互方法 | |
US10789183B2 (en) | Aggregation handling | |
CN110602229A (zh) | 基于动态切片的终端系统版本下载方法、装置及系统 | |
CN107678863A (zh) | 页面组件通讯方法及装置 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN110473088B (zh) | 一种基于区块链的波段式数据处理方法及系统 | |
CN113472681A (zh) | 流量限速方法及装置 | |
CN115495515A (zh) | 报文处理方法及装置 | |
CN113220869A (zh) | 银行外围系统的文本处理装置及方法 | |
CN114996350A (zh) | 一种区块链中的区块状态同步方法及第一节点 | |
US20170337316A1 (en) | Data processing system | |
CN111738823A (zh) | 银行外围系统及其切日方法 | |
CN114518917A (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 |