CN111176791A - 一种基于多虚拟机区块链平台跨虚拟机调用方法 - Google Patents
一种基于多虚拟机区块链平台跨虚拟机调用方法 Download PDFInfo
- Publication number
- CN111176791A CN111176791A CN201911418085.4A CN201911418085A CN111176791A CN 111176791 A CN111176791 A CN 111176791A CN 201911418085 A CN201911418085 A CN 201911418085A CN 111176791 A CN111176791 A CN 111176791A
- Authority
- CN
- China
- Prior art keywords
- calling
- virtual machine
- intelligent contract
- cross
- function
- 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.)
- Granted
Links
Images
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
-
- 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
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- 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)
- 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)根据请求中携带的调用函数信息,执行调用方智能合约的的子调用函数。子调用函数用于调用被调用方的智能合约,对子调用函数中的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型进行编码压缩,然后将子调用的请求转发给跨虚拟机代理层VMProxy,并将当前执行子调用函数的环境压入栈帧,以便子调用完成之后恢复调用栈。
(2.3)VMProxy收到子调用的请求后,首先对调用请求的信息进行解码,解码之后得到了该请求中包含的要调用的智能合约地址、调用函数名称、调用函数参数、调用函数参数类型和要调用的虚拟机类型,该虚拟机类型为被调用方的虚拟机类型。VMProxy查询区块链账本中是否存在与子调用请求信息中对应的合约地址。若存在,则执行步骤(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)中,执行剩余的函数部分包括对于跨虚拟机调用返回结果的使用,或者再次进行跨虚拟机调用。
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 true CN111176791A (zh) | 2020-05-19 |
CN111176791B 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) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** |
CN112394939A (zh) * | 2020-10-30 | 2021-02-23 | 迅鳐成都科技有限公司 | 基于联盟链的用户合约自动部署方法、装置及存储介质 |
CN112487092A (zh) * | 2020-12-03 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的智能合约调用方法及装置 |
CN112527466A (zh) * | 2020-12-22 | 2021-03-19 | 上海万向区块链股份公司 | 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及*** |
CN114490318A (zh) * | 2021-12-20 | 2022-05-13 | 江苏康众汽配有限公司 | 一种基于字节码增强实现弱隔离的环境治理***及方法 |
WO2022134186A1 (zh) * | 2020-12-21 | 2022-06-30 | 杭州趣链科技有限公司 | 区块链的智能合约调用方法、装置、服务器和存储介质 |
CN115174589A (zh) * | 2022-05-20 | 2022-10-11 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
CN118152077A (zh) * | 2024-05-10 | 2024-06-07 | 上海特高信息技术有限公司 | 一种异构的智能合约虚拟机融合互通的实现方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117593129B (zh) * | 2024-01-19 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 交易的执行方法、装置、计算机可读介质及电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180365686A1 (en) * | 2017-06-19 | 2018-12-20 | Hitachi, Ltd. | Smart contract lifecycle management |
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 |
US20190205884A1 (en) * | 2017-12-28 | 2019-07-04 | International Business Machines Corporation | Converting processes into multiple blockchain smart contracts |
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 |
US20190355025A1 (en) * | 2018-05-17 | 2019-11-21 | Alibaba Group Holding Limited | Blockchain-based resource value evaluation methods and apparatus |
CN110517047A (zh) * | 2019-09-04 | 2019-11-29 | 腾讯科技(深圳)有限公司 | 基于区块链的虚拟物品调用处理方法、装置及设备和介质 |
CN110569110A (zh) * | 2019-09-11 | 2019-12-13 | 杭州秘猿科技有限公司 | 支持可交互的多虚拟机的区块链方法、电子设备 |
CN110602125A (zh) * | 2019-09-23 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
-
2019
- 2019-12-31 CN CN202311182471.4A patent/CN117251249A/zh active Pending
- 2019-12-31 CN CN201911418085.4A patent/CN111176791B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180365686A1 (en) * | 2017-06-19 | 2018-12-20 | Hitachi, Ltd. | Smart contract lifecycle management |
US10477014B1 (en) * | 2017-09-12 | 2019-11-12 | United Services Automobile Association (Usaa) | Rapid data access |
US20190205884A1 (en) * | 2017-12-28 | 2019-07-04 | International Business Machines Corporation | Converting processes into multiple blockchain smart contracts |
US20190355025A1 (en) * | 2018-05-17 | 2019-11-21 | Alibaba Group Holding Limited | Blockchain-based resource value evaluation methods and apparatus |
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)
Title |
---|
MICHAEL BORKOWSKI等: "Cross-Blockchain Technologies:Rreview, State of the Art, and Outlook", 《WHITE PAPER》, pages 1 - 5 * |
孙炜;: "浅谈区块链虚拟机", 信息通信技术与政策, no. 07 * |
李燕等: "区块链关键技术的研究进展", vol. 55, no. 55, pages 13 - 23 * |
范吉立等: "区块链***中智能合约技术综述", vol. 46, no. 46, pages 1 - 10 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** |
CN111736954B (zh) * | 2020-06-24 | 2024-01-05 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及*** |
CN112394939A (zh) * | 2020-10-30 | 2021-02-23 | 迅鳐成都科技有限公司 | 基于联盟链的用户合约自动部署方法、装置及存储介质 |
CN112394939B (zh) * | 2020-10-30 | 2023-06-13 | 迅鳐成都科技有限公司 | 基于联盟链的用户合约自动部署方法、装置及存储介质 |
CN112487092A (zh) * | 2020-12-03 | 2021-03-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链的智能合约调用方法及装置 |
WO2022134186A1 (zh) * | 2020-12-21 | 2022-06-30 | 杭州趣链科技有限公司 | 区块链的智能合约调用方法、装置、服务器和存储介质 |
CN112527466A (zh) * | 2020-12-22 | 2021-03-19 | 上海万向区块链股份公司 | 基于EVM与Wasm虚拟机的多语言智能合约兼容方法及*** |
CN114490318A (zh) * | 2021-12-20 | 2022-05-13 | 江苏康众汽配有限公司 | 一种基于字节码增强实现弱隔离的环境治理***及方法 |
CN115174589A (zh) * | 2022-05-20 | 2022-10-11 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
CN115174589B (zh) * | 2022-05-20 | 2023-11-03 | 网易(杭州)网络有限公司 | 区块链虚拟机的选择方法、装置、电子设备及存储介质 |
CN118152077A (zh) * | 2024-05-10 | 2024-06-07 | 上海特高信息技术有限公司 | 一种异构的智能合约虚拟机融合互通的实现方法 |
CN118152077B (zh) * | 2024-05-10 | 2024-07-16 | 上海特高信息技术有限公司 | 一种异构的智能合约虚拟机融合互通的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111176791B (zh) | 2023-09-29 |
CN117251249A (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176791B (zh) | 一种基于多虚拟机区块链平台跨虚拟机调用方法 | |
CN110147225B (zh) | 一种代码生成方法、装置及计算机设备、存储介质 | |
US5931935A (en) | File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system | |
EP1038219B1 (en) | Apparatus and method for allowing object-oriented programs created with different framework versions to communicate | |
CN110569108B (zh) | 小游戏虚拟机执行环境的创建方法及相关产品 | |
US10817284B2 (en) | Melding of mediation flow service component architecture (SCA) components | |
CN110297721B (zh) | 一种基于java的智能合约的跨合约调用方法 | |
CN112308716B (zh) | 区块链智能合约执行方法、装置、设备及计算机存储介质 | |
CN106502715A (zh) | 一种应用程序多渠道配置方法及装置 | |
CN112835975A (zh) | 一种在区块链中部署、更新、调用智能合约的方法 | |
CN106909441B (zh) | 一种基于jvm的磁盘直接i/o访问的方法 | |
CN112035090B (zh) | 基于容器化技术实现智能合约智慧化管理***及方法 | |
CN110417857B (zh) | 区块链协议处理装置、处理方法及区块链 | |
JP2022101479A (ja) | イーサリアム仮想マシンのトランザクション処理方法、装置、機器、プログラムおよび媒体 | |
CN101192141A (zh) | 一种将uoml封装成应用程序编程接口的方法 | |
US20040205697A1 (en) | Transferring data along with code for program overlays | |
CN107704277A (zh) | 插件加载方法及*** | |
CN112925586B (zh) | 一种小程序路由方法、装置、计算机设备及存储介质 | |
CN116521181B (zh) | 基于游戏***的脚本数据处理方法、装置、设备及介质 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN112379886A (zh) | 数据格式转换***及其方法 | |
CN108595160B (zh) | Js调用原生对象的方法、存储介质 | |
CN111984595A (zh) | 一种文件处理方法及装置、存储介质 | |
EP1008045B1 (en) | File system primitive allowing reprocessing of i/o requests by multiple drivers in a layered driver i/o system | |
CN111105242A (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 |