用于执行不同类型区块链合约的系统和方法技术方案

技术编号:38858761 阅读:13 留言:0更新日期:2023-09-17 10:02
提供了用于执行区块链合约的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。其中一个方法包括:获得区块链合约的字节码,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。虚拟机执行所述区块链合约。虚拟机执行所述区块链合约。

【技术实现步骤摘要】
用于执行不同类型区块链合约的系统和方法


[0001]本申请一般涉及用于执行不同类型区块链合约的方法和设备。

技术介绍

[0002]区块链通过将数据保存在彼此之间具有优先关系的一系列数据区块中,以去中心化的方式提供数据存储。区块的链由节点网络维护并更新,该节点网络也负责验证数据。最近,区块链已经扩展到提供用于执行区块链合约(例如,智能合约)的框架,区块链合约包括用代码行编写的用户之间的合约条款。区块链合约可以是一种计算机协议,其旨在以数字方式促进、验证或施行合约的协商或履行。为了处理区块链合约,区块链网络的每个节点运行相应的虚拟机(VM)并执行相同的指令。虚拟机是基于计算机架构的计算机系统的、提供物理计算机的功能的软件仿真。区块链背景下的虚拟机可以理解为被设计用作区块链合约的运行时环境的系统。
[0003]目前,每个区块链系统通常支持一种类型的虚拟机和一种相应的编程语言。例如,以太坊支持以太坊虚拟机(EVM),它需要用solidity(面向合约的编程语言,用于编写由EVM实现的区块链合约)编程。这会阻止接受用诸如c++、java和python的其他编程语言编写的区块链合约,并且拒绝尚未掌握solidity语言的用户。如果区块链系统试图集成多个虚拟机,则不可避免地提高了成本并且数据格式兼容性成为问题。因此,期望提供一种支持以不同编程语言编写并且对应于不同虚拟机的区块链合约的机制。

技术实现思路

[0004]本文的各种实施例包括但不限于用于执行不同类型的区块链合约的系统、方法和非暂时性计算机可读介质
[0005]根据一些实施例,计算机实现的用于执行区块链合约的方法包括:获得区块链合约的字节码,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
[0006]根据其他实施例,所述一个或多个指示符还包括指示用于执行所述区块链合约的所述虚拟机的版本的第二指示符;以及使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:使用与所述第一指示符和所述第二指示符相关联的虚拟机类型的所述虚拟机来执行所述区块链合约。
[0007]根据一个实施例,获得所述区块链合约的字节码包括:从客户端设备获得所述区块链合约的字节码,其中所述字节码是从所述区块链合约的源代码编译的,并且所述源代码包括所述一个或多个指示符。
[0008]根据另一实施例,获得所述区块链合约的字节码包括:从客户端设备获得所述区块链合约的源代码,所述源代码包括所述一个或多个指示符;以及编译所述源代码以获得区块链合约的字节码。
[0009]根据又一实施例,获得所述区块链合约的字节码包括:从客户端设备获得用于执行所述区块链合约的原始字节码,其中所述原始字节码是从用于执行所述区块链合约的原始源代码编译的;以及将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。
[0010]根据还一实施例,获得所述区块链合约的字节码包括:从客户端设备获得用于执行所述区块链合约的原始源代码;编译所述原始源代码以获得原始字节码;以及将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。
[0011]根据一些实施例,所述第一指示符与所述区块链合约的字节码中第一个字节对应。
[0012]根据一些实施例,所述第二指示符与所述区块链合约的字节码中第二个字节对应。
[0013]根据其他实施例,所述区块链合约的字节码中第三个到第n个字节与用于执行所述区块链合约的代码对应,n是不小于3的自然数,并且所述区块链合约的字节码中第一个到第n个字节指定应用二进制接口(ABI)格式。
[0014]根据其他实施例,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:触发与所述第一指示符相关联的虚拟机类型的虚拟机以在相应的区块链上部署所述区块链合约,所述部署的区块链合约与所述虚拟机类型相关联。
[0015]根据一些实施例,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约还包括:触发与所述第一指示符相关联的虚拟机类型的虚拟机以调用部署的区块链合约。
[0016]根据其他实施例,用于执行所述区块链合约的虚拟机类型包括:用于执行用c++编程语言编写的区块链合约的GNU编译器集合(GCC)虚拟机、用于执行用java编程语言编写的区块链合约的Java虚拟机(JVM)、用于执行用solidity编程语言编写的区块链合约的以太网虚拟机(EVM)或用于执行用python编程语言编写的区块链合约的python虚拟机(PVM)。
[0017]根据其他实施例,所述第一指示符包括十六进制数。
[0018]根据其他实施例,用于执行区块链合约的系统包括一个或多个处理器以及耦接到所述一个或多个处理器且配置有指令的一个或多个非暂时性计算机可读存储器,所述指令能由所述一个或多个处理器执行以促使该系统执行操作,这些操作包括:获得区块链合约的字节码,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
[0019]根据其他实施例,用于执行区块链合约的非暂时性计算机可读存储介质,该存储介质配置有能由一个或多个处理器执行的指令,以促使所述一个或多个处理器执行操作,这些操作包括:获得区块链合约的字节码,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
[0020]根据其他实施例,用于执行区块链合约的装置包括:用于获得区块链合约的字节码的获得模块,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及用于使用与所述第一指示
符相关联的虚拟机类型的虚拟机执行所述区块链合约的执行模块。
[0021]根据一些实施例,计算机实现的用于执行区块链合约的方法包括:生成区块链合约的字节码,其中所述字节码包括一个或多个指示符,并且所述一个或多个指示符包括指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及将所述区块链合约的字节码发送到区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。
[0022]根据其他实施例,所述一个或多个指示符还包括指示用于执行所述区块链合约的所述虚拟机的版本的第二指示符;以及将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:将所述区块链合约的字节码发送到所述区块链节点,以供所述区块链节点触发与所述第一指示符和所述第二指示符相关联的虚拟机类型的虚拟机执行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种计算机实现的用于执行区块链合约的方法,包括:获得区块链合约的字节码,所述字节码包括一个或多个指示符;所述一个或多个指示符包括:指示用于执行所述区块链合约的虚拟机类型的第一指示符;以及,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约。2.根据权利要求1所述的方法,其中:所述一个或多个指示符还包括:指示用于执行所述区块链合约的所述虚拟机的版本的第二指示符;以及,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约,包括:使用与所述第一指示符和所述第二指示符相关联的虚拟机类型的虚拟机来执行所述区块链合约。3.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:从客户端设备获得所述区块链合约的字节码,其中所述字节码是从所述区块链合约的源代码编译的,并且所述源代码包括所述一个或多个指示符。4.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:从客户端设备获得所述区块链合约的源代码,所述源代码包括所述一个或多个指示符;以及编译所述源代码以获得所述区块链合约的字节码。5.根据权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:从客户端设备获得用于执行所述区块链合约的原始字节码,其中所述原始字节码是从用于执行所述区块链合约的原始源代码编译的;以及将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。6.如权利要求1所述的方法,其中,获得所述区块链合约的字节码包括:从客户端设备获得用于执行所述区块链合约的原始源代码;编译所述原始源代码以获得原始字节码;以及将所述一个或多个指示符添加到所述原始字节码以获得所述区块链合约的字节码。7.根据权利要求2所述的方法,所述第二指示符与所述区块链合约的字节码中第二个字节对应。8.根据权利要求1所述的方法,所述第一指示符与所述区块链合约的字节码中第一个字节对应。9.根据权利要求1所述的方法,所述区块链合约的字节码中第三个到第n个字节与用于执行所述区块链合约的代码对应,n是不小于3的自然数,并且所述区块链合约的字节码中第一个到第n个字节指定应用二进制接口ABI格式。10.根据权利要求1所述的方法,其中,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约包括:触发与所述第一指示符相关联的虚拟机类型的虚拟机以在相应的区块链上部署所述区块链合约,所述部署的区块链合约与所述虚拟机类型相关联。11.根据权利要求10所述的方法,其中,使用与所述第一指示符相关联的虚拟机类型的虚拟机执行所述区块链合约还包括:
触发与所述第一指示符相关联的虚拟机类型的虚拟机以调用部署的区块链合约。12.根据权利要求1所述的方法,其中:用于执行所述区块链合约的所述虚拟机类型包括:用于执行用c++编程语言编写的区块链合约的GNU编译器集合GCC虚拟机、用于执行用java编程语言编写的区块链合约的Java虚拟机JVM、用于执行用solidity编程语言编写的区块链合约的以太网虚拟机EVM或用于执行用python编程语言编写的区块链合约的python虚拟机PVM。13.根据权利要求1所述的方法,其中:所述第一指示符包括十六进制数。14.一种用于执行区块链合约的系统,包括:一个或多个处理器;以及耦接到所述一个或多个处理器且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至13中任一项所述的方法。15.一种用于执行区块链合约的装置,包括用于执行权利要求1至13中任一项所述的方法的多个模块。16.一种存储有指令的非暂时性计算机可读介质,所述指令在由设备的处理器执行时,促使所述设备执行权利要求1至13中任一项所述的方法。17...

【专利技术属性】
技术研发人员:王士峰
申请(专利权)人:创新先进技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1