CN113467888B - 智能合约的跨链调用方法及装置、电子设备、存储介质 - Google Patents
智能合约的跨链调用方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN113467888B CN113467888B CN202110729055.6A CN202110729055A CN113467888B CN 113467888 B CN113467888 B CN 113467888B CN 202110729055 A CN202110729055 A CN 202110729055A CN 113467888 B CN113467888 B CN 113467888B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- contract
- call
- calling
- intelligent contract
- 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 55
- 230000000977 initiatory effect Effects 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims abstract description 6
- 239000003999 initiator Substances 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 39
- 230000005012 migration Effects 0.000 claims description 10
- 238000013508 migration Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种智能合约的跨链调用方法及装置、电子设备、计算机可读存储介质,该方法包括:响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;判断所述可执行指令串中是否存在指定外部调用指令;若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求。本申请方案提供了指定外部调用指令,当编译出的可执行指令串中存在指定外部调用指令时,可以依据指定外部调用指令对应的调用数据向被调用智能合约所在区块链发起调用,在无需借助第三方系统的情况下便捷地实现了智能合约的跨链调用。
Description
技术领域
本申请涉及区块链处理技术领域,特别涉及一种智能合约的跨链调用方法及装置、电子设备、计算机可读存储介质。
背景技术
区块链的智能合约时存在区块链上可被触发执行的程序代码。在区块链中,可能存在一些无法通过单个智能合约的功能,在这种情况下会涉及智能合约之间的相互调用。在相关技术中,智能合约之间的调用通常仅限于位于同一区块链的智能合约,而并不支持不同区块链上智能合约间的相互调用。对于两个区块链之间数据迁移的应用场景,需要通过中转系统读取第一个区块链的数据,然后将数据写入到第二个区块链中,整个迁移过程涉及三个系统,稳定性和便利性较低。因此,亟需一种智能合约的跨链调用方案。
发明内容
本申请实施例的目的在于提供一种智能合约的跨链调用方法及装置、电子设备、计算机可读存储介质,用于在不借助第三方系统的情况下实现智能合约的跨链调用。
一方面,本申请提供了一种智能合约的跨链调用方法,应用于第一区块链的区块链节点,包括:
响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;
判断所述可执行指令串中是否存在指定外部调用指令;
若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;
通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求。
在一实施例中,在所述发起调用请求之后,所述方法还包括:
接收所述第二区块链返回的调用处理结果。
在一实施例中,所述调用请求包括发起者账户信息;
在所述发起调用请求之前,包括:
将所述发起者账户信息转换为所述第二区块链上对应的第二发起者账户信息。
一方面,本申请提供了一种智能合约的跨链调用方法,应用于第二区块链的区块链节点,包括:
通过预设服务接口接收调用请求;其中,所述调用请求包括第二智能合约的合约地址;
根据所述合约地址确定所述第二智能合约,并通过所述第二智能合约执行所述调用请求,并返回调用处理结果。
在一实施例中,所述调用请求包括第一部署者信息;
在所述通过所述第二智能合约执行所述调用请求之前,所述方法还包括:
判断所述第一部署者信息与所述第二智能合约的第二部署者信息是否一致;
若否,丢弃所述调用请求;
若是,继续执行所述通过所述第二智能合约执行所述调用请求的步骤。
在一实施例中,所述调用请求包括发起者账户信息和调用参数;
在确定所述第一部署者信息与所述第二部署者信息一致后,在所述通过所述第二智能合约执行所述调用请求之前,所述方法还包括:
从所述调用参数中解析出目标账户信息,并判断所述目标账户信息与所述发起者账户信息是否一致;
若否,丢弃所述调用请求;
若是,继续执行所述通过所述第二智能合约执行所述调用请求的步骤。
在一实施例中,所述判断所述目标账户信息与所述发起者账户信息是否一致,包括:
将所述发起者账户信息转换为所述第二区块链上对应的第二发起者账户信息;
判断所述第二发起者账户信息与所述目标账户信息是否一致。
在一实施例中,所述调用请求为数据迁移请求;
所述通过所述第二智能合约执行所述调用请求,并返回调用处理结果,包括:
通过所述第二智能合约从所述第二区块链获取所述数据迁移请求指示的目标数据,并返回作为所述调用处理结果的所述目标数据。
在一实施例中,所述调用请求为数据处理请求,所述数据处理请求携带待处理数据;
所述通过所述第二智能合约执行所述调用请求,并返回调用处理结果,包括:
通过所述第二智能合约对所述待处理数据进行处理,并返回作为所述调用处理结果的数据处理结果。
另一方面,本申请还提供了一种智能合约的跨链调用装置,应用于第一区块链的区块链节点,包括:
编译模块,用于响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;
判断模块,用于判断所述可执行指令串中是否存在指定外部调用指令;
获取模块,用于若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;
调用模块,用于通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求。
另一方面,本申请还提供了一种智能合约的跨链调用装置,应用于第二区块链的区块链节点,包括:
接收模块,用于通过预设服务接口接收针对调用请求;其中,所述调用请求包括第二智能合约的合约地址;
执行模块,用于根据所述合约地址确定所述第二智能合约,并通过所述第二智能合约执行所述调用请求,并返回调用处理结果。
进一步的,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述智能合约的跨链调用方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述智能合约的跨链调用方法。
本申请方案,通过自定义的指定外部调用指令指示区块链节点执行跨链合约调用,当第一区块链的区块链节点将第一智能合约的合约源码编译为可执行指令串之后,如果可执行指令串中存在指定外部调用指令,可以通过区块链虚拟机获取指定外部调用指令对应的调用数据,从而依据调用数据向第二区块链发起调用请求;在不借助第三方系统的情况下,便捷地实现了智能合约的跨链调用。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的智能合约的跨链调用方法的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请另一实施例提供的电子设备的结构示意图;
图4为本申请一实施例提供的智能合约的跨链调用方法的流程示意图;
图5为本申请另一实施例提供的智能合约的跨链调用方法的流程示意图;
图6为本申请一实施例提供的智能合约的跨链调用方法的架构示意图;
图7为本申请一实施例提供的智能合约的跨链调用装置的框图;
图8为本申请另一实施例提供的智能合约的跨链调用装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的智能合约的跨链调用方法的应用场景示意图。如图1所示,该应用场景包括构成第一区块链网络的多个区块链节点20和构成第二区块链网络的多个区块链节点30;区块链节点20和区块链节点30均可以是服务器、计算机或矿机,区块链节点20用于在运行第一区块链上的智能合约时向区块链节点30发起对第二区块链上智能合约的调用请求,区块链节点30用于响应于上述调用请求,通过第二区块链上的智能合约处理该调用请求。
如图2所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图2中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是上述区块链节点20,用于执行应用于第一区块链的区块链节点的智能合约的跨链调用方法。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的应用于第一区块链的区块链节点的智能合约的跨链调用方法。
如图3所示,本实施例提供一种电子设备2,包括:至少一个处理器21和存储器22,图3中以一个处理器21为例。处理器21和存储器22通过总线20连接,存储器22存储有可被处理器21执行的指令,指令被处理器21执行,以使电子设备2可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备2可以是上述区块链节点30。
存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器21执行以完成本申请提供的应用于第二区块链的区块链节点的智能合约的跨链调用方法。
参见图4,为本申请一实施例提供的智能合约的跨链调用方法的流程示意图,如图4所示,该方法可以应用于第一区块链的区块链节点(为便于描述,下文称为“区块链节点20”),包括以下步骤410-步骤440。
步骤410:响应于针对第一智能合约的触发指令,通过预设编译器将第一智能合约的合约源码编译为可执行指令串。
其中,第一智能合约是位于第一区块链的智能合约;第一区块链上每个区块链节点20都可以存储第一智能合约的程序代码。第一区块链可以是联盟链。示例性的,第一区块链可以是以太坊区块链。
触发指令是触发第一智能合约运行的指令。示例性的,针对第一智能合约的触发指令可以是第一区块链上已注册用户发往第一智能合约的交易,该交易中包含第一智能合约的合约地址。
编译器用于将合约源码编译为区块链虚拟机可以执行的可执行指令串。示例性的,编译器可以是solc(solidity compiler)编译器。合约源码可以是solidity源码。
区块链节点20可以通过编译器将第一智能合约的合约源码编译为可执行指令串。当合约源码中存在预设的指定外部调用指令时,可以通过编译器将其编译为可执行指令串中的指定外部调用指令。这里,指定外部调用指令用于实现跨链合约调用,本申请中指定外部调用指令可以通过与现有区块链内实现合约调用的call()、delegatecall()、callcode()等函数构成区别的externalCall()来实现。
步骤420:判断可执行指令串中是否存在指定外部调用指令。
当编译器编译出可执行指令串后,区块链节点20可以判断可执行指令串中是否存在指定外部调用指令。一方面,若不存在,则无需跨链调用其它智能合约。另一方面,若存在,区块链节点20可以继续执行步骤430。
步骤430:若是,通过区块链虚拟机获取指定外部调用指令对应的调用数据。
其中,区块链虚拟机是区块链上用于运行智能合约的虚拟机。示例性的,区块链虚拟机可以是EVM(Ethereum Virtual Machine,以太虚拟机)。
当可执行指令串中存在指定外部调用指令时,区块链节点20可以通过区块链虚拟机获取指定外部调用指令对应的调用数据。这里,调用数据可以包括被调用智能合约所在区块链的URL(Uniform Resource Locator,统一资源定位器)、被调用智能合约的合约地址、上述触发指令的发起者账户信息(示例性的,发起者账户信息可以是发起者的账户地址)。
在一实施例中,调用数据可以包括调用参数。其中,调用参数可以是调用请求所涉及的变量名称;示例性的,变量名称可以包括调用请求所涉及用户账户信息(用户账户信息可以是用户账户地址)和其它第一智能合约在执行过程中需要到的变量的名称。
在一实施例中,调用数据可以包括待处理数据。其中,待处理数据可以是需要被调用的智能合约处理的数据。
步骤440:通过调用数据向指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求。
其中,第二智能合约是位于第二区块链的智能合约;第二区块链上每个区块链节点30都可以存储第二智能合约的程序代码。第二区块链可以是联盟链。示例性的,第二区块链可以是以太坊区块链。
区块链节点20可以通过上述调用数据构造调用请求,并可根据通过被调用的第二智能合约所在第二区块链的URL,通过httpcilent向第二区块链发起调用请求。这里,URL可以对应于第二区块链的服务接口。
通过上述措施,本申请在合约源码和可执行指令串中定义了指定外部调用指令,当合约源码经过编译器编译后的可执行指令串中存在指定外部调用指令时,可以通过区块链虚拟机获取相应的调用数据,并依据调用数据构造调用请求后向被调用的智能合约所在区块链发起调用;整个过程无需借助第三方系统,可以便捷地实现智能合约的跨链调用。
参见图5,为本申请一实施例提供的智能合约的跨链调用方法的流程示意图,如图5所示,该方法可以应用于第二区块链的区块链节点(为便于描述,下文称为“区块链节点30”),包括以下步骤450-步骤460。
步骤450:通过预设服务接口接收调用请求;其中,调用请求包括第二智能合约的合约地址。
其中,第二区块链的服务接口可以接收外部系统发起的调用请求。
第二区块链中任意一个区块链节点30均可以通过服务接口接收针对第二区块链上第二智能合约的调用请求。
步骤460:根据合约地址确定第二智能合约,并通过第二智能合约执行调用请求,并返回调用处理结果。
接收调用请求的区块链节点30可以解析调用请求,从中获得合约地址,并通过该合约地址确定被调用的第二智能合约,通过第二智能合约执行调用请求,获得调用处理结果。区块链节点30可以向发起调用请求的区块链节点20返回调用处理结果。
通过上述措施,被调用的另一区块链的智能合约可以获取调用请求,并对调用请求进行处理。
在一实施例中,第一区块链的区块链节点20可以接收到第二区块链返回的调用处理结果,并可以通过第一智能合约继续处理该调用处理结果。
在一实施例中,可以对跨链调用的智能合约的权限进行限制,限定第一区块链的第一智能合约仅可调用同一部署者部署的第二区块链的第二智能合约。
在此情况下,智能合约内可以包括部署者信息,该部署者信息用于指示部署智能合约的个人或机构。示例性的,部署者信息可以是部署智能合约的用户在区块链中的账户地址。
调用请求可以包括第一部署者信息,第一部署者信息是第一智能合约内的部署者信息。区块链节点30在根据合约地址确定第二智能合约之后,在通过第二智能合约执行调用请求之前,可以获取第二智能合约内的第二部署者信息,并判断调用请求中的第一部署者信息与第二部署者新是否一致。
一方面,若否,则说明第一智能合约与第二智能合约不是同一部署者部署,区块链节点30可以丢弃该调用请求。另一方面,若是,则说明第一智能合约与第二智能合约是同一部署者部署,区块链节点30可以继续执行通过第二智能合约执行调用请求的步骤。
在一实施例中,若调用请求涉及调用第二区块链上用户的数据,可以限制数据仅可被所有者调用。调用请求可以包括第一智能合约的触发指令的发起者账户信息和调用参数,其中,调用参数中可以包含调用请求所涉及的目标账户信息(目标账户信息可以是目标账户的账户地址)。
在确定第一部署者信息与第二部署者信息一致之后,在通过第二智能合约执行调用请求之前,区块链节点30可以从调用参数中解析出目标账户信息,并判断目标账户信息与调用请求中的发起者账户信息是否一致。
一方面,若否,说明发起者没有权限调用目标账户信息对应的数据,可以丢弃调用请求。另一方面,若是,说明发起者有权限调用目标账户信息对应的数据,区块链节点30可以继续执行通过第二智能合约执行调用请求的步骤。
在一实施例中,第一区块链上的账户信息与第二区块链上的账户信息并不通用,在此情况下,同一用户在第一区块链的账户信息与在第二区块链的账户信息不同。
区块链节点30从调用请求中解析出发起者账户信息之后,可以将发起者账户信息转换为第二区块链上对应的第二发起者账户信息。这里,第二发起者账户信息是第二区块链上发起者账户信息对应用户的账户信息。示例性的,区块链节点30可以在预设的账户转换数据库中查找与发起者账户信息对应的账户信息,并将查找到的账户信息作为第二发起者账户信息。其中,账户转换数据库记录第一区块链上账户信息与第二区块链上账户信息之间的映射关系。
区块链节点30可以判断第二发起者账户信息与目标账户信息是否一致,从而比对目标账户信息与发起者账户信息。
在一实施例中,在第一区块链上的账户信息与第二区块链上的账户信息不通用的情况下,可以由第一区块链的区块链节点20执行账户信息转换的步骤。
区块链节点在向第二区块链发起调用请求之前,可以将调用请求中的发起者账户信息转换为第二区块链上对应的第二发起者账户信息,并发起调用请求。这里,第二发起者账户信息是第二区块链上发起者账户信息对应用户的账户信息。示例性的,区块链节点20可以确定触发指令对应的发起者账户信息,并在预设的账户转换数据库中查找与发起者账户信息对应的账户信息,将查找到的账户信息作为第二发起者账户信息。其中,账户转换数据库记录第一区块链上账户信息与第二区块链上账户信息之间的映射关系。
通过上述措施,区块链节点30后续可以直接比对调用请求中的第二发起者账户信息与目标账户信息是否一致。
在一实施例中,调用请求可以为数据迁移请求,该数据迁移请求用于请求在不同区块链之间迁移数据。
区块链节点30在通过第二智能合约执行调用请求,并返回调用处理结果时,可以通过第二智能合约从第二区域链获取数据迁移请求指示的目标数据,并返回作为调用处理请求的目标数据。在一实施例中,区块链节点30可以依据数据迁移请求中的调用参数,确定调用参数中目标账户信息对应的所有数据为待迁移数据,或者,确定调用参数中目标账户信息和若干变量名称对应的数据为待迁移数据,并将待迁移数据作为目标数据返回区块链节点20。
在一实施例中,调用请求为数据处理请求,数据处理请求携带待处理数据。
区块链节点30在通过第二智能合约执行调用请求,并返回调用处理结果时,可以通过第二智能合约从数据处理请求中解析出待处理数据,并对待处理数据进行处理,获得数据处理结果。区块链节点30可以向区块链节点20返回作为调用处理结果的数据处理结果。
参见图6,为本申请一实施例提供的智能合约的跨链调用方法的架构示意图,如图6所示,区块链1上的智能合约1可以跨链调用区块链2上的智能合约2,从而将区块链2上的数据迁移至区块链1;区块链2上的智能合约2也可以跨链调用区块链1上的智能合约1,从而将区块链1上的数据迁移至区块链2。
图7是本发明一实施例的一种智能合约的跨链调用装置,应用于第一区块链的区块链节点,如图7所示,该装置可以包括:
编译模块710,用于响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;
判断模块720,用于判断所述可执行指令串中是否存在指定外部调用指令;
获取模块730,用于若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;
调用模块740,用于通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求。
图8是本发明另一实施例的一种智能合约的跨链调用装置,应用于第二区块链的区块链节点,如图8所示,该装置可以包括:
接收模块810,用于通过预设服务接口接收针对调用请求;其中,所述调用请求包括第二智能合约的合约地址;
执行模块820,用于根据所述合约地址确定所述第二智能合约,并通过所述第二智能合约执行所述调用请求,并返回调用处理结果。
上述装置中各个模块的功能和作用的实现过程具体详见上述智能合约的跨链调用方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (12)
1.一种智能合约的跨链调用方法,应用于第一区块链的任意一个区块链节点,其特征在于,包括:
响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;
判断所述可执行指令串中是否存在指定外部调用指令;其中,所述指定外部调用指令用于实现跨链合约调用,且与区块链内实现合约调用的调用函数不同;
若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;其中,所述调用数据中至少包括被调用智能合约的合约地址;所述区块链虚拟机表征区块链上用于运行智能合约的虚拟机;
通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求,并接收所述第二区块链返回的调用处理结果。
2.根据权利要求1所述的方法,其特征在于,所述调用请求包括发起者账户信息;
在所述发起调用请求之前,包括:
将所述发起者账户信息转换为所述第二区块链上对应的第二发起者账户信息。
3.一种智能合约的跨链调用方法,应用于第二区块链的任意一个区块链节点,其特征在于,包括:
通过预设服务接口接收第一区块链的区块链节点发送的调用请求;其中,所述调用请求包括第二智能合约的合约地址;所述调用请求是所述第一区块链的区块链节点按照权利要求1所述的方法进行发送的;
根据所述合约地址确定所述第二智能合约,并通过所述第二智能合约执行所述调用请求,并向所述第一区块链的区块链节点返回调用处理结果。
4.根据权利要求3所述的方法,其特征在于,所述调用请求包括第一部署者信息;
在所述通过所述第二智能合约执行所述调用请求之前,所述方法还包括:
判断所述第一部署者信息与所述第二智能合约的第二部署者信息是否一致;
若否,丢弃所述调用请求;
若是,继续执行所述通过所述第二智能合约执行所述调用请求的步骤。
5.根据权利要求4所述的方法,其特征在于,所述调用请求包括发起者账户信息和调用参数;
在确定所述第一部署者信息与所述第二部署者信息一致后,在所述通过所述第二智能合约执行所述调用请求之前,所述方法还包括:
从所述调用参数中解析出目标账户信息,并判断所述目标账户信息与所述发起者账户信息是否一致;
若否,丢弃所述调用请求;
若是,继续执行所述通过所述第二智能合约执行所述调用请求的步骤。
6.根据权利要求5所述的方法,其特征在于,所述判断所述目标账户信息与所述发起者账户信息是否一致,包括:
将所述发起者账户信息转换为所述第二区块链上对应的第二发起者账户信息;
判断所述第二发起者账户信息与所述目标账户信息是否一致。
7.根据权利要求3-6任一所述的方法,其特征在于,所述调用请求为数据迁移请求;
所述通过所述第二智能合约执行所述调用请求,并返回调用处理结果,包括:
通过所述第二智能合约从所述第二区块链获取所述数据迁移请求指示的目标数据,并返回作为所述调用处理结果的所述目标数据。
8.根据权利要求3或4所述的方法,其特征在于,所述调用请求为数据处理请求,所述数据处理请求携带待处理数据;
所述通过所述第二智能合约执行所述调用请求,并返回调用处理结果,包括:
通过所述第二智能合约对所述待处理数据进行处理,并返回作为所述调用处理结果的数据处理结果。
9.一种智能合约的跨链调用装置,应用于第一区块链的任意一个区块链节点,其特征在于,包括:
编译模块,用于响应于针对第一智能合约的触发指令,通过预设编译器将所述第一智能合约的合约源码编译为可执行指令串;
判断模块,用于判断所述可执行指令串中是否存在指定外部调用指令;其中,所述指定外部调用指令用于实现跨链合约调用,且与区块链内实现合约调用的调用函数不同;
获取模块,用于若是,通过区块链虚拟机获取所述指定外部调用指令对应的调用数据;其中,所述调用数据中至少包括被调用智能合约的合约地址;所述区块链虚拟机表征区块链上用于运行智能合约的虚拟机;
调用模块,用于通过所述调用数据向所述指定外部调用指令对应的第二智能合约所在的第二区块链发起调用请求,并接收所述第二区块链返回的调用处理结果。
10.一种智能合约的跨链调用装置,应用于第二区块链的任意一个区块链节点,其特征在于,包括:
接收模块,用于通过预设服务接口接收第一区块链的区块链节点发送的调用请求;其中,所述调用请求包括第二智能合约的合约地址;所述调用请求是所述第一区块链的区块链节点按照权利要求1所述的方法进行发送的;
执行模块,用于根据所述合约地址确定所述第二智能合约,并通过所述第二智能合约执行所述调用请求,并向所述第一区块链的区块链节点返回调用处理结果。
11.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-8任意一项所述的智能合约的跨链调用方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-8任意一项所述的智能合约的跨链调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729055.6A CN113467888B (zh) | 2021-06-29 | 2021-06-29 | 智能合约的跨链调用方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110729055.6A CN113467888B (zh) | 2021-06-29 | 2021-06-29 | 智能合约的跨链调用方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467888A CN113467888A (zh) | 2021-10-01 |
CN113467888B true CN113467888B (zh) | 2024-02-23 |
Family
ID=77873831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110729055.6A Active CN113467888B (zh) | 2021-06-29 | 2021-06-29 | 智能合约的跨链调用方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467888B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256864A (zh) * | 2018-02-13 | 2018-07-06 | 中链科技有限公司 | 一种区块链之间的跨链联盟的建立及通信方法、系统 |
CN110046998A (zh) * | 2019-01-31 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 跨链用权系统及方法、装置、电子设备、存储介质 |
CN110278264A (zh) * | 2019-06-20 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种基于区块链的跨链通信的方法、装置及交易系统 |
CN110442652A (zh) * | 2019-08-15 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 一种基于区块链的跨链数据处理方法及装置 |
CN111145023A (zh) * | 2019-12-17 | 2020-05-12 | 上海交通大学 | 基于可信预言机的跨链交换方法、系统及介质 |
CN111163129A (zh) * | 2019-12-05 | 2020-05-15 | 深圳前海微众银行股份有限公司 | 一种基于跨链网络的资源处理方法及装置 |
CN111769957A (zh) * | 2020-09-02 | 2020-10-13 | 百度在线网络技术(北京)有限公司 | 区块链跨链查询方法、装置、设备和存储介质 |
CN112287029A (zh) * | 2020-11-17 | 2021-01-29 | 北京物资学院 | 一种区块链多链跨链系统及其实现机制 |
CN112417049A (zh) * | 2020-11-24 | 2021-02-26 | 杭州云象网络技术有限公司 | 一种基于区块链一体机的跨链交互方法与系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7254585B2 (ja) * | 2019-03-28 | 2023-04-10 | 株式会社日立製作所 | システム間連携方法およびノード |
-
2021
- 2021-06-29 CN CN202110729055.6A patent/CN113467888B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256864A (zh) * | 2018-02-13 | 2018-07-06 | 中链科技有限公司 | 一种区块链之间的跨链联盟的建立及通信方法、系统 |
CN110046998A (zh) * | 2019-01-31 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 跨链用权系统及方法、装置、电子设备、存储介质 |
CN110278264A (zh) * | 2019-06-20 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种基于区块链的跨链通信的方法、装置及交易系统 |
CN110442652A (zh) * | 2019-08-15 | 2019-11-12 | 腾讯科技(深圳)有限公司 | 一种基于区块链的跨链数据处理方法及装置 |
CN111163129A (zh) * | 2019-12-05 | 2020-05-15 | 深圳前海微众银行股份有限公司 | 一种基于跨链网络的资源处理方法及装置 |
WO2021109735A1 (zh) * | 2019-12-05 | 2021-06-10 | 深圳前海微众银行股份有限公司 | 一种基于跨链网络的资源处理方法及装置 |
CN111145023A (zh) * | 2019-12-17 | 2020-05-12 | 上海交通大学 | 基于可信预言机的跨链交换方法、系统及介质 |
CN111769957A (zh) * | 2020-09-02 | 2020-10-13 | 百度在线网络技术(北京)有限公司 | 区块链跨链查询方法、装置、设备和存储介质 |
CN112287029A (zh) * | 2020-11-17 | 2021-01-29 | 北京物资学院 | 一种区块链多链跨链系统及其实现机制 |
CN112417049A (zh) * | 2020-11-24 | 2021-02-26 | 杭州云象网络技术有限公司 | 一种基于区块链一体机的跨链交互方法与系统 |
Non-Patent Citations (1)
Title |
---|
发布区块链标准应用模型及应用部署技术研究;白杰;李东云;吴先锋;;信息技术与网络安全(08);17-22 * |
Also Published As
Publication number | Publication date |
---|---|
CN113467888A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176668B (zh) | 预言机部署方法、装置、电子设备及存储介质 | |
CN111752571B (zh) | 程序升级方法、装置、设备及存储介质 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN109254765B (zh) | 定时任务管理方法、装置、计算机设备及存储介质 | |
CN111984228B (zh) | 一种接口文档的处理方法、装置、计算机设备和存储介质 | |
CN109766261B (zh) | 覆盖测试方法、装置、计算机设备和存储介质 | |
CN112037061A (zh) | 区块链中交易的处理方法、装置、电子设备及存储介质 | |
CN110597518A (zh) | 项目构建方法、装置、计算机设备和存储介质 | |
CN112380130A (zh) | 基于调用依赖关系的应用测试方法和装置 | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN110232279A (zh) | 一种漏洞检测方法及装置 | |
CN111124480A (zh) | 应用程序包的生成方法、装置、电子设备及存储介质 | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN111083054B (zh) | 路由配置处理方法、装置、计算机设备和存储介质 | |
CN116523457A (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN115390944A (zh) | 一种算法服务调用方法、装置、电子设备及存储介质 | |
CN111813803A (zh) | 语句块执行计划的生成方法、装置、设备和存储介质 | |
CN111190584A (zh) | Ehis-db系统版本发布方法、装置、计算机设备和存储介质 | |
CN114581241A (zh) | 智能合约的处理方法和装置、处理器及电子设备 | |
CN112230963B (zh) | 安全漏洞修复的方法、装置、计算机设备和存储介质 | |
CN113467888B (zh) | 智能合约的跨链调用方法及装置、电子设备、存储介质 | |
CN107301097B (zh) | 一种调用java对象、java对象的引用地址信息的存储方法及装置 | |
CN111966744B (zh) | 工作流部署方法、装置、计算机设备和存储介质 | |
CN111143790B (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 |