CN109034814A - 基于以太坊虚拟机的智能合约处理方法和装置 - Google Patents
基于以太坊虚拟机的智能合约处理方法和装置 Download PDFInfo
- Publication number
- CN109034814A CN109034814A CN201811073894.1A CN201811073894A CN109034814A CN 109034814 A CN109034814 A CN 109034814A CN 201811073894 A CN201811073894 A CN 201811073894A CN 109034814 A CN109034814 A CN 109034814A
- Authority
- CN
- China
- Prior art keywords
- contract
- transaction
- virtual machine
- description information
- ether mill
- 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
Classifications
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S50/00—Market activities related to the operation of systems integrating technologies related to power network operation or related to communication or information technologies
- Y04S50/12—Billing, invoicing, buying or selling transactions or other related activities, e.g. cost or usage evaluation
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提出一种基于以太坊虚拟机的智能合约处理方法和装置。该方法包括:接收来自请求节点的部署合约交易,部署合约交易中包括待部署合约的第一描述信息;向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括第一描述信息,初始化合约交易用于在以太坊虚拟机中执行第一描述信息得到待部署合约的初始化状态;接收来自以太坊虚拟机的初始化状态的存储地址;在区块链网络的账本中保存第一描述信息、所述存储地址和交易标识的对应关系;向所述请求节点返回所述待部署合约的交易标识。对于以太坊虚拟机的执行机制改动小,可以使用以太坊虚拟机的状态存储方式,对以太坊上的原生合约的兼容性好,有利于区块链网络的更新与升级。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种基于以太坊虚拟机的智能合约处理方法和装置。
背景技术
智能合约是区块链2.0非常显著的特征,其中一个典型的代表是以太坊。以太坊是一个开源的有智能合约功能的公共区块链平台。以太坊通过专用的加密货币以太币(Ether)提供去中心化的虚拟机、即“以太虚拟机(EVM,Ethereum Virtual Machine)”来处理点对点合约。EVM是基于栈的精简指令虚拟机,具备丰富的开发生态。EVM支持Sodility、类LISP语言(LLL,LISP Like Language)等多种图灵完备的高级语言执行,为智能合约的开发提供了良好的基础设施。
目前在区块链中移植EVM的方案,对EVM本身的工作机制进行了很大的调整,对以太坊上的原生合约的兼容性差。一旦移植,后续升级需要完全脱离EVM主干进行升级,导致很多特性没法及时合并支持,因此难以升级。
发明内容
本发明实施例提供一种基于以太坊虚拟机的智能合约处理方法和装置,以解决现有技术中的一个或多个技术问题。
第一方面,本发明实施例提供了一种基于以太坊虚拟机的智能合约处理方法,包括:
接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息;
向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态;
接收来自所述以太坊虚拟机的所述初始化状态的存储地址;
在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系;
向所述请求节点返回所述待部署合约的交易标识。
结合第一方面,本发明实施例在第一方面的第一种实现方式中,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
结合第一方面,本发明实施例在第一方面的第二种实现方式中,还包括:
接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息;
在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址;
向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约;
接收所述以太坊虚拟机返回的执行后的合约的新的状态;
向所述请求节点返回所述新的状态。
结合第一方面的第二种实现方式,本发明实施例在第一方面的第三种实现方式中,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
结合第一方面或其任意一种实现方式,本发明实施例在第一方面的第四种实现方式中,向所述以太坊虚拟机发起的交易符合区块链协议,所述区块链协议包括UTXO模型、以太坊和超级链中的至少一种;其中:
在UTXO模型的交易的脚本中包括合约的描述信息;或
在以太坊的交易的数据字段中包括合约的描述信息;或
在超级链的交易的描述字段中包括合约的描述信息。
第二方面,本发明实施例提供了一种基于以太坊虚拟机的智能合约处理装置,包括:
第一接收模块,用于接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息;
第一发起模块,用于向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态;
第二接收模块,用于接收来自所述以太坊虚拟机的所述初始化状态的存储地址;
保存模块,用于在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系;
第一返回模块,用于向所述请求节点返回所述待部署合约的交易标识。
结合第二方面,本发明实施例在第二方面的第一种实现方式中,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
结合第二方面,本发明实施例在第二方面的第二种实现方式中,还包括:
第三接收模块,用于接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息;
查找模块,用于在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址;
第二发起模块,用于向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约;
第四接收模块,用于接收所述以太坊虚拟机返回的执行后的合约的新的状态;
第二返回模块,用于向所述请求节点返回所述新的状态。
结合第二方面的第二种实现方式,本发明实施例在第二方面的第三种实现方式中,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
结合第二方面或其任意一种实现方式,本发明实施例在第二方面的第四种实现方式中,向所述以太坊虚拟机发起的交易符合区块链协议,所述区块链协议包括UTXO模型、以太坊和超级链中的至少一种;其中:
在UTXO模型的交易的脚本中包括合约的描述信息;或
在以太坊的交易的数据字段中包括合约的描述信息;或
在超级链的交易的描述字段中包括合约的描述信息。
第三方面,本发明实施例提供了一种基于以太坊虚拟机的智能合约处理装置,所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,所述装置的结构中包括处理器和存储器,所述存储器用于存储支持所述装置执行上述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述装置还可以包括通信接口,用于与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储基于以太坊虚拟机的智能合约处理装置所用的计算机软件指令,其包括用于执行上述方法所涉及的程序。
上述技术方案中的一个技术方案具有如下优点或有益效果:在部署合约的过程中,可以在区块链网络的账本中保存合约的交易标识与合约状态的对应关系,后续能够利用交易标识在以太坊虚拟机中进行寻址来执行合约,对于以太坊虚拟机的执行机制改动小,可以使用以太坊虚拟机的状态存储方式,对以太坊上的原生合约的兼容性好,有利于区块链网络的更新与升级。
上述技术方案中的另一个技术方案具有如下优点或有益效果:可以保留以太坊虚拟机的激励机制,有利于提高公链上矿工的积极性,适合移植到公链上。此外,还可以支持采用多种区块链协议向以太坊虚拟机发起交易。
上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
图1示出根据本发明实施例的基于以太坊虚拟机的智能合约处理方法的流程图。
图2示出根据本发明实施例的基于以太坊虚拟机的智能合约处理方法的流程图。
图3示出根据本发明实施例的基于以太坊虚拟机的智能合约处理方法的一种应用示例的示意图。
图4示出根据本发明实施例的基于以太坊虚拟机的智能合约处理装置的结构框图。
图5示出根据本发明实施例的基于以太坊虚拟机的智能合约处理装置的结构框图。
图6示出根据本发明实施例的基于以太坊虚拟机的智能合约处理装置的结构框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
图1示出根据本发明实施例的基于以太坊虚拟机的智能合约处理方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤S11、接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息。
步骤S12、向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态。
步骤S13、接收来自所述以太坊虚拟机的所述初始化状态的存储地址。
步骤S14、在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系。
步骤S15、向所述请求节点返回所述待部署合约的交易标识。
在一种实现方式中,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
在本发明实施例中,请求节点可以包括合约参与方的终端设备。区块链网络中可以设置部署接口。用户在请求节点对待部署合约进行编译,得到待部署合约的字节码和预支付的费用(Gas)等描述信息。请求节点可以通过部署合约交易将待部署合约的描述信息发送到部署接口,例如在部署合约交易的描述字段(desc)携带待部署合约的字节码和预支付的费用(Gas)等。在部署接口接收到待部署合约的描述信息后,可以为待部署合约生成对应的交易标识。然后,向以太坊虚拟机(EVM)发起部署合约请求交易。通过部署合约请求交易将待部署合约的描述信息发送到EVM中执行。EVM执行描述信息中的字节码,产生合约状态例如合约的成员变量、合约的函数入口地址表、全局变量表、静态变量表等。EVM可以将这些合约状态转换为键值(KV,Key-Value)的形式进行存储,保存到例如LevelDB等KV数据库中。
EVM可以将这些合约状态的存储地址返回给区块链网络。在区块链网络的账本中记录之前生成的交易标识与存储地址的对应关系。此外,可以将这个交易标识返回给请求节点。后续,需要执行该合约时,可以利用该交易标识进行寻址。在本发明实施例中,既可以在生成该交易标识后,就返回给请求节点。也可以在保存了上述对应关系后,在返回给请求节点。
在一种实现方式中,如图2所示,所述方法还包括:
步骤S21、接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息。
步骤S22、在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址。
步骤S23、向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约。
步骤S24、接收所述以太坊虚拟机返回的执行后的合约的新的状态。
步骤S25、向所述请求节点返回所述新的状态。
在一种实现方式中,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
在本发明实施例中,区块链网络中可以设置调用接口。请求节点可以通过执行合约交易将待执行合约的交易标识和描述信息发送到调用接口。在调用接口接收到待执行合约的描述信息后,可以在区块链网络的账本中查找待执行合约的交易标识对应的存储地址。然后,向EVM发起调用合约交易。通过调用合约交易将待执行合约的描述信息和该存储地址发送到EVM中。EVM根据该存储地址找到待执行合约的合约状态。然后,利用待执行合约的合约状态和描述信息中的输入参数,执行合约。执行后,得到合约中相关函数的执行结果,合约状态发生转移,产生了新的状态。合约的新的状态可以包括对预支付的费用的使用情况。例如哪个账户花费了多少费用,剩余了多少费用。再如,哪个账户收到了多少费用。
在一种实现方式中,根据区块链网络的账本中的交易标识向以太坊虚拟机发起的交易,可以符合某种区块链协议。区块链协议的类型可以包括UTXO(Unspent TransactionOutput,未花费的交易输出)模型、以太坊和超级链中的至少一种。不同区块链协议的交易中,包括描述信息的格式有所不同。其中:在UTXO模型的交易的脚本中包括合约的描述信息。或者,在以太坊的交易的数据字段中包括合约的描述信息。或者,在超级链的交易的描述字段中包括合约的描述信息。
本发明实施例对于EVM的执行机制改动小,可以使用EVM的状态存储方式,对以太坊上的原生合约的兼容性好,有利于区块链网络的更新与升级。
此外,由于可以保留EVM的Gas激励机制,有利于提高公链上矿工的积极性,适合移植到公链上。此外,还可以支持采用多种区块链协议,例如采用UTXO模型以太坊或百度超级链的区块链协议向EVM发起交易。
在一种应用示例中,如图3所示,本发明实施例主要包括以下模块:
(一)输入接口模块
用户通过请求节点编译完合约之后,将合约部署到区块链网络上,然后通过交易触发执行合约。在区块链网络中为用户的请求节点提供以下接口:
1)部署接口:部署接口接收合约编译后的字节码(bytescode)和预支付的费用(Gas)等描述信息,通过不同的区块链协议实现的交易,将合约的这些描述信息传递给EVM。从EVM收到合约状态的存储地址后,可以在区块链网络例如账本中保存该存储地址与交易标识(Identity,ID)的对应关系。然后,返回给用户的请求节点该交易ID。后续,调用接口可以利用该交易ID进行代码寻址。
2)调用接口:调用接口可以从请求节点接收3个参数。一个是部署之后返回的交易ID,作为代码寻址的地址。一个是输入(input)参数。input参数也可以是一段bytescode。可以通过需要执行的方法和参数进行加密后连接在一起得到input参数。对应的加密方法可以利用以太坊项目提供的单独的软件库实现。另一个参数是Gas,表示执行本次交易需要预支付的费用。
在本发明实施例中,根据区块链网络的账本中的交易标识可以向EVM发起交易来部署合约和执行合约。在交易中可以携带智能合约的描述信息,包括代码、参数等。采用不同的区块链协议,在交易的数据包中的描述信息的格式各不相同。例如基于比特币的UTXO模型的区块链协议,可以通过交易的脚本(script)携带描述信息。再如,基于以太坊等账户协议的区块链协议,可以通过交易的数据(data)字段携带描述信息。再如,在百度超级链中,可以通过百度超级链交易的智能合约描述(desc)字段携带描述信息。
(二)外部存储模块
一个图灵完备的计算系统采用稳定的外部存储设备,保存计算过程中的产生的中间状态。EVM可以采用外部存储设备来存储以下几方面的数据:
1)合约描述信息:当智能合约的部署请求通过交易传递到区块链网络内部的账本(简称区块链账本)时,可以通过EVM将合约的代码和相关的描述信息持久化到外部存储设备上。这样,可以保证合约能够在执行时进行寻址。
2)合约状态:EVM包括计算器和指令系统。在EVM执行用户合约的过程中,会产生一系列的中间状态,例如合约的成员变量、合约的函数入口地址表、全局变量表、静态变量表等。这些状态的数据结构,可以包括简单的列表,也可以包含复杂的多维数据结构。在EVM中可以将这些状态转换为简单的KV的形式进行存储。因此,可以通过GetState(获取状态)和PutState(发送状态)对合约执行中的状态进行保存。
外部存储设备可以使用例如LevelDB等KV数据库作为存储媒介,EVM可以通过外存接口将合约状态存储到KV数据库。考虑到在公链上会出现分叉的情况,在存储到LevelDB之后,可以通过快照技术为每个块(block)关联一个LevelDB的快照。这样便于后面出现分叉时进行快速回滚。
(三)区块链协议适配层
EVM可以访问区块链网络的区块(block)相关的信息,以获取用户的合约在执行过程中需要的区块链协议的相关信息。
例如,这些相关信息可以包括:
1)块头部(block header):包括block的标识(ID),前一个block的哈希值、高度、签发人等信息。
2)地址余额操作:能够在EVM执行过程中查询余额的信息,发起余额转账等。其中也包括退款操作。在执行部署合约或者执行合约的请求时,Gas是预付的费用,不是准确的,因此可以实现退款操作。如果费用有剩余的话,可以通过退款操作,将其返还给调用方(caller)、即请求节点。
本发明采用上述模块提供了一个计算框架。在区块链网络中提供这上述模块,能够完成将EVM移植到区块链网络中。本发明实施例的方法,可以将EVM移植到任意公链。不仅支持移植到公链,也支持移植到联盟链和私链。例如,将本发明实施例在百度超级链,支持百度超级链执行基于EVM上的分布式应用(Dapp,Decentralized Application),使得百度超级链可以兼容以太坊生态。
本发明实施例可以提高EVM对以太坊的Dapp的兼容性,容易升级,并且可以支持多种账户模型。对于任意的区块链网络,只需要实现各自业务层面区块链协议和账本管理,就能无缝的跟EVM结合,支持以太坊的智能合约,使得以太坊上的Dapp能够在EVM上执行。
图4示出根据本发明实施例的基于以太坊虚拟机的智能合约处理装置的结构框图。该装置可以包括:
第一接收模块41,用于接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息;
第一发起模块42,用于向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态;
第二接收模块43,用于接收来自所述以太坊虚拟机的所述初始化状态的存储地址;
保存模块44,用于在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系;
第一返回模块45,用于向所述请求节点返回所述待部署合约的交易标识。
在一种实现方式中,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
在一种实现方式中,如图5所示,该装置还包括:
第三接收模块51,用于接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息;
查找模块52,用于在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址;
第二发起模块53,用于向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约;
第四接收模块54,用于接收所述以太坊虚拟机返回的执行后的合约的新的状态;
第二返回模块55,用于向所述请求节点返回所述新的状态。
在一种实现方式中,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
在一种实现方式中,向所述以太坊虚拟机发起的交易符合区块链协议,所述区块链协议包括UTXO模型、以太坊和超级链中的至少一种;其中:
在UTXO模型的交易的脚本中包括合约的描述信息;或
在以太坊的交易的数据字段中包括合约的描述信息;或
在超级链的交易的描述字段中包括合约的描述信息。
本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
图6示出根据本发明实施例的基于以太坊虚拟机的智能合约处理装置的结构框图。如图6所示,该装置包括:存储器910和处理器920,存储器910内存储有可在处理器920上执行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的基于以太坊虚拟机的智能合约处理方法。所述存储器910和处理器920的数量可以为一个或多个。
该装置还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
存储器910可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,PeripheralComponent)总线或扩展工业标准体系结构(EISA,Extended Industry StandardComponent)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种基于以太坊虚拟机的智能合约处理方法,其特征在于,包括:
接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息;
向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态;
接收来自所述以太坊虚拟机的所述初始化状态的存储地址;
在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系;
向所述请求节点返回所述待部署合约的交易标识。
2.根据权利要求1所述的方法,其特征在于,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息;
在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址;
向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约;
接收所述以太坊虚拟机返回的执行后的合约的新的状态;
向所述请求节点返回所述新的状态。
4.根据权利要求3所述的方法,其特征在于,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
5.根据权利要求1至4中任一项所述的方法,其特征在于,向所述以太坊虚拟机发起的交易符合区块链协议,所述区块链协议包括UTXO模型、以太坊和超级链中的至少一种;其中:
在UTXO模型的交易的脚本中包括合约的描述信息;或
在以太坊的交易的数据字段中包括合约的描述信息;或
在超级链的交易的描述字段中包括合约的描述信息。
6.一种基于以太坊虚拟机的智能合约处理装置,其特征在于,包括:
第一接收模块,用于接收来自请求节点的部署合约交易,所述部署合约交易中包括待部署合约的第一描述信息;
第一发起模块,用于向以太坊虚拟机发起初始化合约交易,所述初始化合约交易中包括所述第一描述信息,所述初始化合约交易用于在所述以太坊虚拟机中执行所述第一描述信息得到所述待部署合约的初始化状态;
第二接收模块,用于接收来自所述以太坊虚拟机的所述初始化状态的存储地址;
保存模块,用于在区块链网络的账本中保存所述第一描述信息、所述存储地址和交易标识的对应关系;
第一返回模块,用于向所述请求节点返回所述待部署合约的交易标识。
7.根据权利要求6所述的装置,其特征在于,所述第一描述信息中包括待部署合约的字节码和预支付的费用。
8.根据权利要求6所述的装置,其特征在于,还包括:
第三接收模块,用于接收来自所述请求节点的执行合约交易,所述执行合约交易中包括待执行合约的交易标识和第二描述信息;
查找模块,用于在所述区块链网络的账本中查找与所述待执行合约的交易标识对应的存储地址;
第二发起模块,用于向所述以太坊虚拟机发起调用合约交易,所述调用合约交易中包括所述第二描述信息和查找到的存储地址,以在所述以太坊虚拟机中按照所述查找到的存储地址调取所述待执行合约的状态、结合所述第二描述信息来执行所述待执行合约;
第四接收模块,用于接收所述以太坊虚拟机返回的执行后的合约的新的状态;
第二返回模块,用于向所述请求节点返回所述新的状态。
9.根据权利要求8所述的装置,其特征在于,所述第二描述信息包括所述待执行合约的输入参数和预支付的费用。
10.根据权利要求6至9中任一项所述的装置,其特征在于,向所述以太坊虚拟机发起的交易符合区块链协议,所述区块链协议包括UTXO模型、以太坊和超级链中的至少一种;其中:
在UTXO模型的交易的脚本中包括合约的描述信息;或
在以太坊的交易的数据字段中包括合约的描述信息;或
在超级链的交易的描述字段中包括合约的描述信息。
11.一种基于以太坊虚拟机的智能合约处理装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的方法。
12.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073894.1A CN109034814B (zh) | 2018-09-14 | 2018-09-14 | 基于以太坊虚拟机的智能合约处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811073894.1A CN109034814B (zh) | 2018-09-14 | 2018-09-14 | 基于以太坊虚拟机的智能合约处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109034814A true CN109034814A (zh) | 2018-12-18 |
CN109034814B CN109034814B (zh) | 2020-10-16 |
Family
ID=64621848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811073894.1A Active CN109034814B (zh) | 2018-09-14 | 2018-09-14 | 基于以太坊虚拟机的智能合约处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109034814B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710385A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约复杂度限制方法 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
CN109976871A (zh) * | 2018-12-28 | 2019-07-05 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN110602133A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 智能合约处理方法、区块链管理设备及存储介质 |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN110750329A (zh) * | 2019-09-25 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现虚拟机运算的方法及装置 |
CN110852887A (zh) * | 2020-01-14 | 2020-02-28 | 支付宝(杭州)信息技术有限公司 | 获取去中心化应用集群中的交易处理状态的方法及装置 |
CN111033468A (zh) * | 2019-03-26 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 实施不同类型的区块链合约的系统和方法 |
CN111061698A (zh) * | 2019-12-30 | 2020-04-24 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
WO2020133069A1 (zh) * | 2018-12-27 | 2020-07-02 | 合肥达朴汇联科技有限公司 | 区块链的数据处理方法和装置 |
CN111415254A (zh) * | 2020-03-05 | 2020-07-14 | 贵州造梦天地信息科技有限公司 | 基于区块链通证的ip衍生品数字资产化方法及系统 |
CN111414159A (zh) * | 2020-03-16 | 2020-07-14 | 北京艾鸥科技有限公司 | 一种区块链虚拟机装置、虚拟机创建方法及交易方法 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
CN111858089A (zh) * | 2020-06-29 | 2020-10-30 | 北京百度网讯科技有限公司 | 以太坊节点的调用方法以及装置 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
CN112118133A (zh) * | 2020-09-11 | 2020-12-22 | 北京易安睿龙科技有限公司 | 基于自定义结构数据便于以太坊智能合约快速升级方法 |
CN112286643A (zh) * | 2020-12-24 | 2021-01-29 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备、程序和介质 |
CN112286642A (zh) * | 2020-12-24 | 2021-01-29 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备和介质 |
CN112559635A (zh) * | 2020-12-23 | 2021-03-26 | 网易(杭州)网络有限公司 | 以太坊联盟链节点的业务处理方法、装置、设备及介质 |
CN112740251A (zh) * | 2019-12-31 | 2021-04-30 | 深圳市网心科技有限公司 | 一种基于区块链的数字货币交易方法、装置及系统 |
CN113689188A (zh) * | 2021-08-23 | 2021-11-23 | 交通银行股份有限公司 | 基于以太坊智能合约的去中心化信息管理系统及其方法 |
CN114202215A (zh) * | 2021-12-15 | 2022-03-18 | 中山大学 | 智能合约交易异常维护方法、装置、设备及可读存储介质 |
CN117350724A (zh) * | 2023-12-04 | 2024-01-05 | 安徽中科晶格技术有限公司 | 基于账户链的智能合约运行方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106951307A (zh) * | 2017-03-06 | 2017-07-14 | 钱德君 | 一种智能合约虚拟机实现方法 |
CN107846278A (zh) * | 2017-10-30 | 2018-03-27 | 中国联合网络通信集团有限公司 | 智能合约处理方法及装置 |
US20180089758A1 (en) * | 2016-09-26 | 2018-03-29 | Shapeshift Ag | System and method of providing a contract-creator application |
WO2018141792A1 (en) * | 2017-01-31 | 2018-08-09 | Sony Corporation | Apparatus and method for providing a virtual device |
WO2018144302A1 (en) * | 2017-01-31 | 2018-08-09 | Rush Thomas Jay | Blockchain data-processing engine |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
-
2018
- 2018-09-14 CN CN201811073894.1A patent/CN109034814B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180089758A1 (en) * | 2016-09-26 | 2018-03-29 | Shapeshift Ag | System and method of providing a contract-creator application |
WO2018141792A1 (en) * | 2017-01-31 | 2018-08-09 | Sony Corporation | Apparatus and method for providing a virtual device |
WO2018144302A1 (en) * | 2017-01-31 | 2018-08-09 | Rush Thomas Jay | Blockchain data-processing engine |
CN106951307A (zh) * | 2017-03-06 | 2017-07-14 | 钱德君 | 一种智能合约虚拟机实现方法 |
CN107846278A (zh) * | 2017-10-30 | 2018-03-27 | 中国联合网络通信集团有限公司 | 智能合约处理方法及装置 |
CN108510389A (zh) * | 2018-03-30 | 2018-09-07 | 深圳前海微众银行股份有限公司 | 基于区块链的智能合约调用方法、设备及可读存储介质 |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020133069A1 (zh) * | 2018-12-27 | 2020-07-02 | 合肥达朴汇联科技有限公司 | 区块链的数据处理方法和装置 |
CN109976871A (zh) * | 2018-12-28 | 2019-07-05 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN109976871B (zh) * | 2018-12-28 | 2023-07-07 | 无锡井通网络科技有限公司 | 智能合约部署方法、装置、电子设备及存储介质 |
CN109710385A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java虚拟机的智能合约复杂度限制方法 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
CN111033468B (zh) * | 2019-03-26 | 2024-04-19 | 创新先进技术有限公司 | 实施不同类型的区块链合约的系统和方法 |
CN111033468A (zh) * | 2019-03-26 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 实施不同类型的区块链合约的系统和方法 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
CN110675256A (zh) * | 2019-08-30 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
US10783082B2 (en) | 2019-08-30 | 2020-09-22 | Alibaba Group Holding Limited | Deploying a smart contract |
US11307990B2 (en) | 2019-08-30 | 2022-04-19 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
US11010303B2 (en) | 2019-08-30 | 2021-05-18 | Advanced New Technologies Co., Ltd. | Deploying a smart contract |
CN110602133B (zh) * | 2019-09-20 | 2021-04-09 | 腾讯科技(深圳)有限公司 | 智能合约处理方法、区块链管理设备及存储介质 |
CN110602133A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 智能合约处理方法、区块链管理设备及存储介质 |
CN110750329A (zh) * | 2019-09-25 | 2020-02-04 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现虚拟机运算的方法及装置 |
CN110750329B (zh) * | 2019-09-25 | 2020-10-20 | 支付宝(杭州)信息技术有限公司 | 基于fpga实现虚拟机运算的方法及装置 |
CN111061698A (zh) * | 2019-12-30 | 2020-04-24 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN111061698B (zh) * | 2019-12-30 | 2023-09-05 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN112740251A (zh) * | 2019-12-31 | 2021-04-30 | 深圳市网心科技有限公司 | 一种基于区块链的数字货币交易方法、装置及系统 |
CN110852887B (zh) * | 2020-01-14 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 获取去中心化应用集群中的交易处理状态的方法及装置 |
CN110852887A (zh) * | 2020-01-14 | 2020-02-28 | 支付宝(杭州)信息技术有限公司 | 获取去中心化应用集群中的交易处理状态的方法及装置 |
CN111415254B (zh) * | 2020-03-05 | 2023-10-27 | 贵州造梦天地信息科技有限公司 | 基于区块链通证的ip衍生品数字资产化方法及系统 |
CN111415254A (zh) * | 2020-03-05 | 2020-07-14 | 贵州造梦天地信息科技有限公司 | 基于区块链通证的ip衍生品数字资产化方法及系统 |
CN111414159A (zh) * | 2020-03-16 | 2020-07-14 | 北京艾鸥科技有限公司 | 一种区块链虚拟机装置、虚拟机创建方法及交易方法 |
CN111858089A (zh) * | 2020-06-29 | 2020-10-30 | 北京百度网讯科技有限公司 | 以太坊节点的调用方法以及装置 |
CN111858089B (zh) * | 2020-06-29 | 2024-01-23 | 北京百度网讯科技有限公司 | 以太坊节点的调用方法以及装置 |
CN112118133A (zh) * | 2020-09-11 | 2020-12-22 | 北京易安睿龙科技有限公司 | 基于自定义结构数据便于以太坊智能合约快速升级方法 |
CN112118133B (zh) * | 2020-09-11 | 2023-06-09 | 北京易安睿龙科技有限公司 | 基于自定义结构数据便于以太坊智能合约快速升级方法 |
CN112559635B (zh) * | 2020-12-23 | 2023-06-16 | 网易(杭州)网络有限公司 | 以太坊联盟链节点的业务处理方法、装置、设备及介质 |
CN112559635A (zh) * | 2020-12-23 | 2021-03-26 | 网易(杭州)网络有限公司 | 以太坊联盟链节点的业务处理方法、装置、设备及介质 |
CN112286643A (zh) * | 2020-12-24 | 2021-01-29 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备、程序和介质 |
CN112286642B (zh) * | 2020-12-24 | 2021-04-30 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备和介质 |
CN112286642A (zh) * | 2020-12-24 | 2021-01-29 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备和介质 |
CN113689188A (zh) * | 2021-08-23 | 2021-11-23 | 交通银行股份有限公司 | 基于以太坊智能合约的去中心化信息管理系统及其方法 |
CN114202215A (zh) * | 2021-12-15 | 2022-03-18 | 中山大学 | 智能合约交易异常维护方法、装置、设备及可读存储介质 |
CN117350724A (zh) * | 2023-12-04 | 2024-01-05 | 安徽中科晶格技术有限公司 | 基于账户链的智能合约运行方法、设备及存储介质 |
CN117350724B (zh) * | 2023-12-04 | 2024-03-15 | 安徽中科晶格技术有限公司 | 基于账户链的智能合约运行方法、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109034814B (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034814A (zh) | 基于以太坊虚拟机的智能合约处理方法和装置 | |
RU2732506C1 (ru) | Способ и оборудование перевода активов и электронное устройство | |
CN103688244B (zh) | 用于为分布式计算提供端到端隐私的方法和装置 | |
WO2021017429A1 (zh) | 基于区块链的票据实名领取方法、装置及电子设备 | |
CN110298190A (zh) | 去中心化多方安全数据处理方法、装置及存储介质 | |
CN111784514B (zh) | 基于区块链的业务处理方法以及装置 | |
CN109683869A (zh) | Dapp的开发方法和装置 | |
CN109493205A (zh) | 智能记账方法、计算机可读存储介质和终端设备 | |
CA2984833A1 (en) | Device, method and program for securely reducing an amount of records in a database | |
CN109559229A (zh) | 基于区块链的更新智能合约组的方法 | |
CN110471951A (zh) | 确定数据区块中交易信息的顺序的方法、记账节点和介质 | |
CN110032598A (zh) | 字段更新方法及装置、电子设备 | |
CN108595451A (zh) | 业务请求处理方法及装置 | |
KR20140063512A (ko) | 다중-서버 예약 시스템 상에서 집중화된 예약 컨텍스트 관리를 위한 방법 및 시스템 | |
CN109977638A (zh) | 基于以太坊的智能合约更新方法及系统、存储介质及终端 | |
CN109784703A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN109949108A (zh) | 基于区块链的发票创建方法和装置、电子设备 | |
CN107809332A (zh) | 复合接口配置及复合接口调用方法、装置 | |
CN110505311A (zh) | 一种同构区块链跨链交互方法和系统 | |
CN109271564A (zh) | 保单查询方法及设备 | |
CN110417857A (zh) | 区块链协议处理装置、处理方法及区块链 | |
CN109816517A (zh) | 基于增信的业务处理方法、装置、计算机设备和存储介质 | |
CN109003030A (zh) | 区块链的对象物流转方法、系统和计算机可读存储介质 | |
CN108733374A (zh) | 应用程序首页开发方法及终端设备 | |
CN109683867A (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 |