CN111176791B - 一种基于多虚拟机区块链平台跨虚拟机调用方法 - Google Patents

一种基于多虚拟机区块链平台跨虚拟机调用方法 Download PDF

Info

Publication number
CN111176791B
CN111176791B CN201911418085.4A CN201911418085A CN111176791B CN 111176791 B CN111176791 B CN 111176791B CN 201911418085 A CN201911418085 A CN 201911418085A CN 111176791 B CN111176791 B CN 111176791B
Authority
CN
China
Prior art keywords
virtual machine
calling
intelligent contract
call
type
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
Application number
CN201911418085.4A
Other languages
English (en)
Other versions
CN111176791A (zh
Inventor
尹可挺
邱炜伟
李伟
匡立中
杨攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN201911418085.4A priority Critical patent/CN111176791B/zh
Priority to CN202311182471.4A priority patent/CN117251249A/zh
Publication of CN111176791A publication Critical patent/CN111176791A/zh
Application granted granted Critical
Publication of CN111176791B publication Critical patent/CN111176791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种基于多虚拟机区块链平台跨虚拟机调用方法,该方法主要通过各个虚拟机之间的代理层VMProxy来处理区块链平台各个虚拟机之间合约的相互调用,进而使得各个虚拟机产生合约数据实现了互通。该方法抽象了各个虚拟机之间的调用函数接口,以及进行了相应的虚拟机之间的数据格式的匹配,实现跨虚拟机的智能合约调用,并且对这个智能合约产生相应的存储影响,而且能将调用的结果返回到调用方虚拟机中,对调用方的智能合约存储数据也产生相应的影响。通过VMProxy可以灵活的进行各个虚拟机智能合约的方法互相调用,这样极大的提升区块链平台的多虚拟机各自之间数据的通用性,也减少了智能合约开发者的工作量。

Description

一种基于多虚拟机区块链平台跨虚拟机调用方法
技术领域
本发明涉及区块链技术,尤其涉及一种基于多虚拟机区块链平台跨虚拟机调用方法。
背景技术
区块链是一种分布式账本的技术,与我们平时所使用的中心化系统不一样,它是完全的去中心化的,而且它具有不可篡改的特性。这使得没有一个主体可以随便操纵区块链上的数据,它是完全的透明公开的,在区块链上的节点上的任何人都可以验证区块链上数据的正确性,这也保证了区块链上数据的公正与不可篡改性。
虚拟机是指通过软件模拟出的一套具有完整硬件功能的,运行在一个隔离的环境里面的计算机系统。它可以模拟出宿主机的各种指令,从而使得在实体机里面能进行的操作在虚拟机里面都可以。高级语言要想在各种特定的机器平台上执行,往往是需要编译为各个机器平台对应的机器码的,这是非常的麻烦的。引入虚拟机之后就可以使得高级语言编译称为对应的虚拟机字节码,然后供虚拟机解释执行,而不需要编译为特定平台的机器码。一个典型的虚拟机就是JAVA虚拟机。
随着区块链的日益发展,各种区块链平台现在都可以支持不同编程语言编写的智能合约。这些智能合约依靠虚拟机技术可以在被区块链平台内置的虚拟机执行引擎执行,然后将执行结果写入到区块链账本中。但是一种虚拟机往往是针对某一种特定的编程语言设定的执行环境,如果需要用其他编程语言编写区块链智能合约,就得又换一个虚拟机去执行智能合约。随着平台的不断发展完善,以及为了更广泛的方便用户编写智能合约,也不断的有新的虚拟机加入到区块链平台。但是这些虚拟机产生的智能合约数据直接是互不相通的,一个虚拟机产生的智能合约数据不能被另外一个虚拟机产生的智能合约调用,因为他们有各自的编码以及不同的调用形式和规范。
发明内容
针对现有技术的不足,本发明提出了一种基于多虚拟机区块链平台跨虚拟机调用方法,从而解决了多虚拟机的区块链平台的跨虚拟机调用问题。
本发明的目的是通过以下技术方案来实现的:一种基于多虚拟机区块链平台的跨虚拟机调用方法,包括如下步骤:
步骤(1):编写和部署智能合约:
(1.1)用户在多虚拟机区块链平台上基于被调用方虚拟机的语言规则编写跨虚拟机调用过程中的被调用方的智能合约,然后将被调用方的智能合约部署在多虚拟机区块链平台上,被调用方的智能合约写入区块链账本,得到部署后的被调用方的智能合约地址。
(1.2)用户在多虚拟机区块链平台上基于调用方虚拟机的语言规则编写跨虚拟机调用过程中的调用方的智能合约,调用方智能合约包含跨虚拟机调用过程的具体函数,该函数包括此次跨虚拟机调用过程的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和调用虚拟机类型。编写完成调用方智能合约之后,将调用方智能合约部署在多虚拟机区块链平台上,调用方智能合约写入区块链账本,得到部署后的调用方智能合约地址。
步骤(2):跨虚拟机调用智能合约:
(2.1)用户在多虚拟机区块链平台发起跨虚拟机调用智能合约的请求,该请求包含调用方的智能合约地址,调用函数名称、调用函数参数、调用函数参数类型和调用方的虚拟机类型。调用智能合约的请求首先到达调用方虚拟机,调用方虚拟机对请求中携带的信息进行提取,然后查询区块链账本中是否存在请求中对应的合约地址。若存在,则执行步骤(2),若不存在,则结束本次跨虚拟机调用过程。
(2.2)根据请求中携带的调用函数信息,执行调用方智能合约的的具体函数。该函数包含一次子调用,子调用用于调用被调用方的智能合约,对子调用过程中的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型进行编码压缩,然后将子调用的请求转发给跨虚拟机代理层VMProxy,并将当前执行子调用过程的环境压入栈帧,以便子调用完成之后恢复调用栈。
(2.3)VMProxy收到子调用的请求后,首先对调用请求的信息进行解码,解码之后得到了该请求中包含的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型,该虚拟机类型为被调用方的虚拟机类型。VMProxy查询区块链账本中是否存在与子调用请求信息中对应的合约地址。若存在,则执行步骤(4),若不存在,则结束本次跨虚拟机调用过程。
(2.4)VMProxy对调用请求信息中包含的函数参数类型和函数参数进行匹配转换为被调用方的虚拟机类型所能识别的函数参数类型和函数参数,然后对转换后的调用请求的信息重新组装发送给被调用方虚拟机。
(2.5)被调用方虚拟机对VMProxy发送过来的调用请求的信息进行提取,判断虚拟机是否支持请求中携带的函数参数类型和函数参数。如果不支持,则此次跨虚拟机调用结束,如果支持,执行该调用请求。执行过程对区块链账本进行读写,并将执行结果和执行结果类型编码后返回给VMProxy。
(2.6)VMProxy对返回的结果信息进行解码,对收到的执行结果和执行结果类型进行类型匹配转换,将结果转换为调用方虚拟机所能识别的结果类型,并发送给调用方虚拟机。
(2.7)调用方虚拟机获取到VMProxy转发回来的结果后,从栈中取出栈帧,恢复当前调用栈信息,然后执行剩余的函数部分,执行过程会对区块链账本进行读写。执行完成之后,将执行结果返回给用户。
进一步地,所述的步骤(1)中,跨虚拟机调用过程为多虚拟机区块链平台的多个虚拟机之间的任意智能合约中的函数互相调用。
进一步地,所述的步骤(2)中,VMProxy负责进行各个虚拟机之间相互调用函数的参数类型匹配以及解码,然后将请求转发到具体对应的虚拟机上执行,并且会对执行的结果进行类型转换和解码。
进一步地,跨虚拟机调用既可以调用虚拟机自身部署的合约,也可以调用其他的虚拟机部署的智能合约。
本发明的有益效果:本发明应用于多虚拟机的区块链平台上,可以实现多个虚拟机之间的智能合约的相互调用,这使得相同的智能合约逻辑无需再用每个虚拟机所能支持的语言重新写一份。每个虚拟机所产生的区块链账本数据在区块链底层实现了互通,而无需通过虚拟机数据迁移来达到互通的效果,极大地便利了区块链平台的使用者以及智能合约开发者。
附图说明
图1是智能合约部署图;
图2是跨虚拟机调用图。
具体实施方式
下面根据附图和具体实施例详细描述本发明,本发明的目的和效果将变得更加明显。
本发明提供的一种基于多虚拟机区块链平台的跨虚拟机调用方法,包括如下步骤:
步骤(1):如图1所示,编写和部署智能合约:编写跨虚拟机机调用合约存在两种方式,第一种可以在代码里面直接固定填入被调用方的智能合约地址进行跨虚拟机调用,也可以通过函数传入被调用方合约地址参数的形式进行跨虚拟机调用,第二种方式更加灵活。跨虚拟机调用需要有先后顺序,首先基于被调用方虚拟机执行环境的被调用智能合约要被编写和部署,部署完成之后拿到部署后的合约地址。接下来基于调用方虚拟机编写调用调用方的智能合约,然后编写好的合约部署在区块链上。具体步骤如下:
(1.1)用户在多虚拟机区块链平台上基于被调用方虚拟机的语言规则编写跨虚拟机调用过程中的被调用方的智能合约,然后将被调用方的智能合约部署在多虚拟机区块链平台上,被调用方的智能合约写入区块链账本,得到部署后的被调用方的智能合约地址。
(1.2)用户在多虚拟机区块链平台上基于调用方虚拟机的语言规则编写跨虚拟机调用过程中的调用方的智能合约,调用方智能合约包含跨虚拟机调用过程的具体函数,该函数包括此次跨虚拟机调用过程的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和调用虚拟机类型。跨虚拟机调用过程为多虚拟机区块链平台的多个虚拟机之间的任意智能合约中的函数互相调用。编写完成调用方智能合约之后,将调用方智能合约部署在多虚拟机区块链平台上,调用方智能合约写入区块链账本,得到部署后的调用方智能合约地址。
步骤(2):如图2所示,跨虚拟机调用智能合约:
(2.1)用户在多虚拟机区块链平台发起跨虚拟机调用智能合约的请求,该请求包含调用方的智能合约地址,调用函数名称、调用函数参数、调用函数参数类型和调用方的虚拟机类型。调用智能合约的请求首先到达调用方虚拟机,调用方虚拟机对请求中携带的信息进行提取,然后查询区块链账本中是否存在请求中对应的合约地址。若存在,则执行步骤(2),若不存在,则结束本次跨虚拟机调用过程。
(2.2)根据请求中携带的调用函数信息,执行调用方智能合约的的具体函数。该函数实现跨合约调用,并且包含一次子调用,而且子调用过程中的被调用合约可以不是在自身虚拟机中部署的智能合约。子调用用于调用被调用方的智能合约,对子调用过程中的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型进行编码压缩,然后将子调用的请求转发给跨虚拟机代理层VMProxy,并将当前执行子调用过程的环境压入栈帧,以便子调用完成之后恢复调用栈。VMProxy负责进行各个虚拟机之间相互调用函数的参数类型匹配以及解码,然后将请求转发到具体对应的虚拟机上执行,并且会对执行的结果进行类型转换和解码。
(2.3)VMProxy收到子调用的请求后,首先对调用请求的信息进行解码,解码之后得到了该请求中包含的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型,该虚拟机类型为被调用方的虚拟机类型。VMProxy查询区块链账本中是否存在与子调用请求信息中对应的合约地址。若存在,则执行步骤(4),若不存在,则结束本次跨虚拟机调用过程。
(2.4)VMProxy对调用请求信息中包含的函数参数类型和函数参数进行匹配转换为被调用方的虚拟机类型所能识别的函数参数类型和函数参数,然后对转换后的调用请求的信息重新组装发送给被调用方虚拟机。
(2.5)被调用方虚拟机对VMProxy发送过来的调用请求的信息进行提取,判断虚拟机是否支持请求中携带的函数参数类型和函数参数。如果不支持,则此次跨虚拟机调用结束,如果支持,执行该调用请求。执行过程对区块链账本进行读写,并将执行结果和执行结果类型编码后返回给VMProxy。
(2.6)VMProxy对返回的结果信息进行解码,对收到的执行结果和执行结果类型进行类型匹配转换,将结果转换为调用方虚拟机所能识别的结果类型,并发送给调用方虚拟机。
(2.7)调用方虚拟机获取到VMProxy转发回来的结果后,从栈中取出栈帧,恢复当前调用栈信息,然后执行剩余的函数部分,执行过程会对区块链账本进行读写。执行完成之后,将执行结果返回给用户。
所述步骤(1)中,编写跨虚拟机调用合约时需要指明调用的虚拟机的类型。如果指定的跨虚拟机调用虚拟机类型为自身类型,则此次跨虚拟机调用简化为一次跨合约调用。
所述的步骤(2)中,多虚拟机区块链平台的每个虚拟机启动时都会在抽象调用层中注册自己的虚拟机实例,一是为了方便抽象调用层判断是否存在该类型的虚拟机,二是为了方便抽象调用层判断该类型虚拟机此时的状态是否可用,如果抽象调用层通过判断虚拟机状态(比如特定的端口是否打开)不可用,则会从自己的虚拟机存活列表中移除该虚拟机实例,直到下次该虚拟机重新启用。
VMProxy为了适配各个虚拟机的数据类型,所以会对请求内容以及返回值内容进行类型转换,只要实现了对应数据类型的转换关系以及相应的数据组装格式,就可以完成多个虚拟机之间的调用适配。
下表展示了常见的区块链平台的虚拟机之间对应的数据类型转换
VMProxy需要多次对调用参数类型和返回参数类型进行转换。所以这里VMProxy会将常用的跨虚拟机调用参数和返回类型进行缓存,防止每次都创建相应的类型对象,造成性能损失。
实施例:
一个区块链平台中存在JVM虚拟机和EVM(以太坊虚拟机)两种虚拟机。此时需要用JVM虚拟机部署的智能合约调用EVM虚拟机上部署的智能合约,或者是EVM虚拟机部署的智能合约调用JVM虚拟机部署的智能合约,但是因为两种虚拟机智能合约数据格式以及调用方式都是不一致的,无法进行直接调用。下面给出基于本发明方法使用EVM虚拟机部署的智能合约调用JVM部署的智能合约的具体实施例如下:
步骤一:编写和部署智能合约:(1)用户在多虚拟机区块链平台上基于JVM虚拟机的java语言规则编写跨虚拟机调用过程中的JVM智能合约,然后将JVM智能合约部署在多虚拟机区块链平台上,JVM智能合约被写入区块链账本,得到部署后的被调用方的JVM智能合约地址。
(2)用户在多虚拟机区块链平台基于EVM虚拟机的solidity语言规则编写跨虚拟机调用过程中的EVM智能合约。EVM智能合约包含跨虚拟机调用过程的具体函数,该函数包括此次跨虚拟机调用过程的基于JVM虚拟机已经部署过的JVM合约地址、调用函数名称、调用函数参数、调用函数参数类型和调用虚拟机类型。此时调用函数中的虚拟机类型设定为JVM虚拟机。编写完成调用方智能合约之后,将EVM智能合约部署在多虚拟机区块链平台上,得到部署后的EVM智能合约地址。
步骤二:跨虚拟机调用智能合约:
(1)用户在多虚拟机区块链平台发起跨虚拟机调用EVM智能合约的请求,该请求包含要调用的EVM合约地址,合约里面调用的EVM智能合约中的函数、函数参数类型、函数具体参数。调用智能合约的请求首先到达EVM虚拟机,EVM虚拟机对请求中携带的信息进行提取,然后查询区块链账本中是否存在请求中对应的EVM合约地址。若存在,则执行步骤(2),若不存在,则结束本次跨虚拟机调用过程。
(2)根据请求中携带的调用EVM合约的函数信息,执行EVM虚拟机中部署的EVM智能合约的对应的调用函数。该函数实现跨合约调用,并且函数包含一次子调用,子调用过程实际是需要调用到JVM智能合约。对于子调用过程中的要调用的JVM合约地址、合约里面调用的函数、函数参数类型、具体函数参数和要跨虚拟机调用的JVM虚拟机类型进行编码压缩,然后将子调用请求转发给跨虚拟机代理层VMProxy;并将当前EVM执行子调用过程的环境压入栈帧,以便子调用完成之后恢复调用栈。
(3)VMProxy收到调用请求后,首先对调用请求的信息进行解码,解码之后得到了该请求中包含的要调用的JVM智能合约地址、合约里面调用的函数、函数参数类型、具体函数参数、要跨虚拟机调用的虚拟机类型,该虚拟机类型为JVM虚拟机。VMProxy查询区块链账本中是否存在与本次调用请求信息中对应的合约地址。若存在,则执行步骤(4),若不存在,则结束本次跨虚拟机调用过程。
(4)VMProxy根据解码后的信息确定此次请求为调用JVM虚拟机的智能合约,VMProxy对调用请求信息中包含的函数参数类型和函数参数进行匹配转换为JVM所能识别的函数参数类型和函数参数,然后对转换后的调用请求的信息重新组装发送JVM虚拟机。
(5)JVM虚拟机对VMProxy发送过来的调用请求的信息进行提取,判断虚拟机是否支持请求中携带的函数参数类型和函数参数。如果不支持,则此次跨虚拟机调用结束,如果支持,执行该调用请求。执行过程对区块链账本进行读写,并将执行结果和执行结果类型编码后返回给VMProxy。
(6)VMProxy对返回的结果信息进行解码,对收到的执行结果和执行结果类型进行类型匹配转换,将结果转换EVM虚拟机所能识别的结果类型,并发送给EVM虚拟机。
(7)EVM虚拟机获取到VMProxy转发回来的结果后,从栈中取出栈帧,恢复当前调用栈信息,然后执行剩余的函数部分,执行过程会对区块链账本进行读写。执行完成之后,将执行结果返回给用户。
使用JVM虚拟机部署的智能合约调用EVM部署的智能合约与使用EVM虚拟机部署的智能合约调用JVM部署的智能合约原理一致,不再赘述。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (5)

1.一种基于多虚拟机区块链平台的跨虚拟机调用方法,其特征在于,包括如下步骤:
步骤(1):编写和部署智能合约:
(1.1)用户在多虚拟机区块链平台上基于被调用方虚拟机的语言规则编写跨虚拟机调用过程中的被调用方的智能合约,然后将被调用方的智能合约部署在多虚拟机区块链平台上,被调用方的智能合约写入区块链账本,得到部署后的被调用方的智能合约地址;
(1.2)用户在多虚拟机区块链平台上基于调用方虚拟机的语言规则编写跨虚拟机调用过程中的调用方的智能合约,调用方智能合约包含跨虚拟机调用过程的子调用函数,该函数包括此次跨虚拟机调用过程的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和调用虚拟机类型;编写完成调用方智能合约之后,将调用方智能合约部署在多虚拟机区块链平台上,调用方智能合约写入区块链账本,得到部署后的调用方智能合约地址;
步骤(2):跨虚拟机调用智能合约:
(2.1)用户在多虚拟机区块链平台发起跨虚拟机调用智能合约的请求,该请求包含调用方的智能合约地址,调用函数名称、调用函数参数、调用函数参数类型和调用方的虚拟机类型;调用智能合约的请求首先到达调用方虚拟机,调用方虚拟机对请求中携带的信息进行提取,然后查询区块链账本中是否存在请求中对应的合约地址;若存在,则执行步骤(2.2),若不存在,则结束本次跨虚拟机调用过程;
(2.2)根据请求中携带的调用函数信息,执行调用方智能合约的的子调用函数;子调用函数用于调用被调用方的智能合约,对子调用函数中的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型进行编码压缩,然后将子调用的请求转发给跨虚拟机代理层VMProxy,并将当前执行子调用函数的环境压入栈帧,以便子调用完成之后恢复调用栈;
(2.3)VMProxy收到子调用的请求后,首先对调用请求的信息进行解码,解码之后得到了该请求中包含的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型,该虚拟机类型为被调用方的虚拟机类型;VMProxy查询区块链账本中是否存在与子调用请求信息中对应的合约地址;若存在,则执行步骤(2.4),若不存在,则结束本次跨虚拟机调用过程;
(2.4)VMProxy对调用请求信息中包含的函数参数类型和函数参数进行匹配转换为被调用方的虚拟机类型所能识别的函数参数类型和函数参数,然后对转换后的调用请求的信息发送给被调用方虚拟机;
(2.5)被调用方虚拟机对VMProxy发送过来的调用请求的信息进行提取,判断虚拟机是否支持请求中携带的函数参数类型和函数参数;如果不支持,则此次跨虚拟机调用结束,如果支持,执行该调用请求;执行过程对区块链账本进行读写,并将执行结果和执行结果类型编码后返回给VMProxy;
(2.6)VMProxy对返回的结果信息进行解码,对收到的执行结果和执行结果类型进行类型匹配转换,将结果转换为调用方虚拟机所能识别的结果类型,并发送给调用方虚拟机;
(2.7)调用方虚拟机获取到VMProxy转发回来的结果后,从栈中取出栈帧,恢复当前调用栈信息,然后执行剩余的函数部分,执行过程会对区块链账本进行读写;执行完成之后,将执行结果返回给用户。
2.如权利要求1所述的一种基于多虚拟机区块链平台的跨虚拟机调用方法,其特征在于,所述的步骤(1)中,跨虚拟机调用过程为多虚拟机区块链平台的多个虚拟机之间的任意智能合约中的函数互相调用。
3.如权利要求1所述的一种基于多虚拟机区块链平台的跨虚拟机调用方法,其特征在于,所述的步骤(2)中,VMProxy负责进行各个虚拟机之间相互调用函数的参数类型匹配以及解码,然后将请求转发到具体对应的虚拟机上执行,并且会对执行的结果进行类型转换和解码。
4.如权利要求1所述的一种基于多虚拟机区块链平台的跨虚拟机调用方法,其特征在于,跨虚拟机调用既可以调用虚拟机自身部署的合约,也可以调用其他的虚拟机部署的智能合约。
5.如权利要求1所述的一种基于多虚拟机区块链平台的跨虚拟机调用方法,其特征在于,所述步骤(2.7)中,执行剩余的函数部分包括对于跨虚拟机调用返回结果的使用,或者再次进行跨虚拟机调用。
CN201911418085.4A 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法 Active CN111176791B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911418085.4A CN111176791B (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法
CN202311182471.4A CN117251249A (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911418085.4A CN111176791B (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311182471.4A Division CN117251249A (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法

Publications (2)

Publication Number Publication Date
CN111176791A CN111176791A (zh) 2020-05-19
CN111176791B true CN111176791B (zh) 2023-09-29

Family

ID=70654291

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311182471.4A Pending CN117251249A (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法
CN201911418085.4A Active CN111176791B (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202311182471.4A Pending CN117251249A (zh) 2019-12-31 2019-12-31 一种基于多虚拟机区块链平台跨虚拟机调用方法

Country Status (1)

Country Link
CN (2) CN117251249A (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111736954B (zh) * 2020-06-24 2024-01-05 陈鹏 多智能合约虚拟机实现方法、多智能合约虚拟机及系统
CN112394939B (zh) * 2020-10-30 2023-06-13 迅鳐成都科技有限公司 基于联盟链的用户合约自动部署方法、装置及存储介质
CN112631803A (zh) * 2020-12-21 2021-04-09 杭州趣链科技有限公司 区块链的智能合约调用方法、装置、服务器和存储介质
CN112527466A (zh) * 2020-12-22 2021-03-19 上海万向区块链股份公司 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及系统
CN115174589B (zh) * 2022-05-20 2023-11-03 网易(杭州)网络有限公司 区块链虚拟机的选择方法、装置、电子设备及存储介质
CN117593129B (zh) * 2024-01-19 2024-05-03 腾讯科技(深圳)有限公司 交易的执行方法、装置、计算机可读介质及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109582438A (zh) * 2018-10-30 2019-04-05 广州斯拜若科技有限公司 一种具有多个智能合约执行引擎的虚拟机及其实现方法
AU2019204729A1 (en) * 2019-04-03 2019-06-27 Advanced New Technologies Co., Ltd. Processing blockchain data based on smart contract operations executed in a trusted execution environment
CN110188097A (zh) * 2019-04-19 2019-08-30 阿里巴巴集团控股有限公司 区块链中智能合约的存储、执行方法及装置和电子设备
CN110245946A (zh) * 2019-05-20 2019-09-17 阿里巴巴集团控股有限公司 结合代码标注与多类型维度的收据存储方法和节点
CN110297721A (zh) * 2019-06-24 2019-10-01 杭州趣链科技有限公司 一种基于java的智能合约的跨合约调用方法
US10477014B1 (en) * 2017-09-12 2019-11-12 United Services Automobile Association (Usaa) Rapid data access
CN110517047A (zh) * 2019-09-04 2019-11-29 腾讯科技(深圳)有限公司 基于区块链的虚拟物品调用处理方法、装置及设备和介质
CN110569110A (zh) * 2019-09-11 2019-12-13 杭州秘猿科技有限公司 支持可交互的多虚拟机的区块链方法、电子设备
CN110602125A (zh) * 2019-09-23 2019-12-20 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055703B2 (en) * 2017-06-19 2021-07-06 Hitachi, Ltd. Smart contract lifecycle management
US11205178B2 (en) * 2017-12-28 2021-12-21 International Business Machines Corporation Converting processes into multiple blockchain smart contracts
CN108648071B (zh) * 2018-05-17 2020-05-19 阿里巴巴集团控股有限公司 基于区块链的资源价值评估方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10477014B1 (en) * 2017-09-12 2019-11-12 United Services Automobile Association (Usaa) Rapid data access
CN109582438A (zh) * 2018-10-30 2019-04-05 广州斯拜若科技有限公司 一种具有多个智能合约执行引擎的虚拟机及其实现方法
AU2019204729A1 (en) * 2019-04-03 2019-06-27 Advanced New Technologies Co., Ltd. Processing blockchain data based on smart contract operations executed in a trusted execution environment
CN110188097A (zh) * 2019-04-19 2019-08-30 阿里巴巴集团控股有限公司 区块链中智能合约的存储、执行方法及装置和电子设备
CN110245946A (zh) * 2019-05-20 2019-09-17 阿里巴巴集团控股有限公司 结合代码标注与多类型维度的收据存储方法和节点
CN110297721A (zh) * 2019-06-24 2019-10-01 杭州趣链科技有限公司 一种基于java的智能合约的跨合约调用方法
CN110517047A (zh) * 2019-09-04 2019-11-29 腾讯科技(深圳)有限公司 基于区块链的虚拟物品调用处理方法、装置及设备和介质
CN110569110A (zh) * 2019-09-11 2019-12-13 杭州秘猿科技有限公司 支持可交互的多虚拟机的区块链方法、电子设备
CN110602125A (zh) * 2019-09-23 2019-12-20 腾讯科技(深圳)有限公司 数据处理方法、装置、终端及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Michael Borkowski等.Cross-Blockchain Technologies:Rreview,State of the Art, and Outlook.《White Paper》.2019,第1-5页. *
李燕等.区块链关键技术的研究进展.《计算机工程与应用》.2019,第第55卷卷(第第55卷期),13-23+100页. *
浅谈区块链虚拟机;孙炜;;信息通信技术与政策(07);全文 *
范吉立等.区块链系统中智能合约技术综述.《计算机科学》.2019,第第46卷卷(第第46卷期),第1-10页. *

Also Published As

Publication number Publication date
CN111176791A (zh) 2020-05-19
CN117251249A (zh) 2023-12-19

Similar Documents

Publication Publication Date Title
CN111176791B (zh) 一种基于多虚拟机区块链平台跨虚拟机调用方法
CN107147704B (zh) 一种面向区块链的通用服务中间件系统
CN110297721B (zh) 一种基于java的智能合约的跨合约调用方法
US20080222665A1 (en) System and Method for Support of Legacy Communications Protocols in a Smart Card
CN112835975B (zh) 一种在区块链中部署、更新、调用智能合约的方法
CN109739508B (zh) 源代码编译方法、装置、系统及存储介质
CN112308716B (zh) 区块链智能合约执行方法、装置、设备及计算机存储介质
JP2003501741A (ja) 様々なソース言語の実行メディアへの移植
KR20080043517A (ko) 통신 소프트웨어 구조에서의 도메인 프로파일 파싱 장치 및그 방법
CN112363845A (zh) 系统集成中台的数据同步方法及集成中台系统
CN101236503A (zh) 一种热部署实体类组件
CN112685020A (zh) 动态创建服务接口的方法、装置、电子设备及存储介质
CN107704277A (zh) 插件加载方法及系统
JP2009289272A (ja) 構造化ソフトウェアオブジェクトについての反復式シリアライゼーションプロシージャ
CN116521181B (zh) 基于游戏系统的脚本数据处理方法、装置、设备及介质
CN111324395B (zh) 调用方法、装置和计算机可读存储介质
CN116680209A (zh) 基于wasm的多智能合约实例管理方法
CN112379886A (zh) 数据格式转换系统及其方法
CN111984595A (zh) 一种文件处理方法及装置、存储介质
CN115328679A (zh) 异构函数库的自动化集成方法、计算设备及其系统
CN112650512A (zh) 硬件驱动方法及装置、终端、存储介质
CN117076004B (zh) 微服务打包合并方法、装置和电子设备
JP2019179383A (ja) Api処理方法、端末、api処理プログラム
CN117519691B (zh) 应用程序处理方法、装置、计算机设备和存储介质
US20070033248A1 (en) System and method for support of legacy communications protocols in a smart card

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