当前位置: 首页 > 专利查询>钱德君专利>正文

一种智能合约虚拟机实现方法技术

技术编号:15822506 阅读:39 留言:0更新日期:2017-07-15 04:46
本发明专利技术涉及一种智能合约虚拟机实现方法,智能合约虚拟机为一个以太坊虚拟机,以太坊虚拟机是一个带有256字节的机器字的以栈为基础的虚拟机;智能合约基于量子链系统,能够运行在以太坊上,并且执行所述智能合约虚拟机;包含与智能合约虚拟机相关的操作码以方便交易的执行;本发明专利技术的有益成果为:本发明专利技术的智能合约虚拟机实现方法为以太坊虚拟机(EVM),它可以在以太坊上写出更强大的程序,负责太坊区块链中智能合约的执行,并且得益于以太坊的网络的合约执行环境,以太坊中的合约的编写和执行也因此变得非常简单。

【技术实现步骤摘要】
一种智能合约虚拟机实现方法
本专利技术涉及互联网上区块链系统的智能合约,为一种智能合约虚拟机实现方法。
技术介绍
在区块链中,合约代码通过虚拟机执行,并且不侧重链下数据的输入,借助于区块链网络本身提供合约触发条件,就能完成合约的执行。而以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它不仅被封装起来,事实上,它被完全隔离,即运行在以太坊虚拟机内部的代码不能接触到网络、文件系统或者其它进程。甚至智能合约与其它智能合约只有有限的接触。因此,由于智能合约虚拟机的重要地位,必须对它的具体细节进行设计满足虚拟机的基本要求,并且需要满足智能合约的执行要求。
技术实现思路
有鉴于此,本专利技术提供一种解决或部分解决上述问题的智能合约虚拟机实现方法。为达到上述技术方案的效果,本专利技术的技术方案为:一种智能合约虚拟机实现方法,包含以下步骤:智能合约虚拟机为一个以太坊虚拟机,以太坊虚拟机是一个带有256字节的机器字的以栈为基础的虚拟机;智能合约基于量子链系统,能够运行以太坊,并且执行智能合约虚拟机;量子链系统中包含三种与智能合约虚拟机相关的操作码,分别为OP_EXEC操作码、OP_EXEC_ASSIGN操作码、OP_TXHASH操作码;OP_EXEC操作码,用于触发一个特殊的交易处理,并且将执行用于传递的以太坊虚拟机的字节码;OP_EXEC_ASSIGN操作码,用于触发类似于OP_EXEC操作码执行的处理,并且传递合同地址和数据给智能合约,传递数据时执行智能合约的字节码,OP_EXEC_ASSIGN操作码能够将给定的资金传递给智能合约;数据在智能合约虚拟机中表示为CALLERDATA;OP_TXHASH操作码,用于协调帐本抽象层的剩余部分,并且当前执行交易的交易ID哈希值也被压入栈中;包含OP_EXEC操作码与OP_EXEC_ASSIGN操作码的输出脚本的特殊处理,以使智能合约的立即执行能够融入到区块链中;特殊处理包含的过程为:当交易中的脚本检测到OP_EXEC操作码或OP_EXEC_ASSIGN操作码,在交易被放置到区块链网络中后由区块链网络的所有节点进行执行;在特殊处理的背景下,比特币的脚本语言作为一种将数据传送给智能合约虚拟机的一种方式;当智能合约虚拟机执行OP_EXEC操作码或OP_EXEC_ASSIGN操作码,智能合约虚拟机可以在自己的状态数据库里改变状态,即在以太坊上执行一个类似的合约;OP_EXEC操作码和OP_EXEC_ASSIGN操作码的交易输出是可以消费的,当交易输出的代码发送资金到另一个合约或者另一个公钥哈希值地址,OP_EXEC_ASSIGN操作码的输出通过合约被消费;OP_EXEC操作码的输出被消费,当任何时候智能合约使用自杀操作将自己从区块链中移除;构建气体模型,用于衡量以太坊虚拟机操作码的执行的价值,每个交易要花费一定量的气体模型中气体;在交易完成后,剩余的气体数量会被返回给发送的人,当在合约中执行的气体的数量超过合约需要的数量,那么交易的状态以及动作会被恢复;状态被恢复,交易的气体也已被消耗;气体的详细条目分为GasLimit与GasPrice;GasLimit用于记录在合约执行中消耗的气体数量;GasPrice用于记录每个气体单元的精确价格;合约执行中最大量子花费等于GasLimit与GasPrice进行相乘。本专利技术的有益成果为:本专利技术的智能合约虚拟机实现方法为以太坊虚拟机(EVM),它可以在以太坊上写出更强大的程序,负责太坊区块链中智能合约的执行,并且得益于以太坊的网络的合约执行环境,以太坊中的合约的编写和执行也因此变得非常简单。具体实施方式为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合及实施例,对本专利技术进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术,能实现同样功能的产品属于等同替换和改进,均包含在本专利技术的保护范围之内。具体方法如下:实施例1:智能合约能够运行以太坊,并且执行智能合约虚拟机;以太坊虚拟机被设计用于以太坊的区块链,因此假定所有价值的传递都基于账目为基础的方法。在量子链中,脚本仅仅在一个输出需要被花费时才能执行,举例,对于一个标准的公钥哈希值交易,虽然脚本在区块链上,它将不会以任何方式被验证或执行。执行和验证不会发生,直到一个交易输入参考输出。从这点来说,如果输入脚本不能提供一个有效的数据到输出脚本,导致其返回1,交易将无效。然而量子链,必须适应智能合约,智能合约的立即执行已经融入到区块链中,做到这个过程必须通过对包含OP_EXEC或OP_EXEC_ASSIGN交易的输出脚本的特殊处理。当在脚本中检测到这些操作码之一,在交易被放置到块中后由网络的所有节点进行执行。在这种模式下,实际的比特币脚本语言不太像脚本语言,更为严格来说,是将数据传送到以太坊虚拟机的一种方式。当以太坊虚拟机执行时通过这些操作码中的任一个,以太坊虚拟机可以改变状态在其自己的状态数据库里,实际上就像一个类似的合约被执行在以太坊上。为了使量子链智能合约尽可能易于使用,我们必须将认证数据作为特定的公钥哈希值地址发送给智能合约以及其的创建者。相对于UTXO模型,以太坊是一个以帐目为基础的系统;有关于帐目模型详细阐述如下所示:在以太坊,状态由称为“帐目”的对象组成,每个帐目都有一个20字节的地址,状态转换直接在帐目之间传输价值和信息;以太坊帐目包含四个部分:nonce随机数,是确保每笔交易只能处理一次的计数器;帐目中当前以太坊余额;帐目的合约代码;帐目的存储(默认为空);“以太”是以太坊的主要内部加密燃料,通常用于支付交易费;一般来说,这里有两种类型的帐户:外部所有者的帐目以及合约帐目,外部所有者的帐目由私钥控制,合约帐目由他们的合约代码控制;外部拥有的帐目没有代码,和能通过建立和签署交易从外部拥有的帐目中发送消息。在合约帐目中,任何时候合约帐目接收一个代码激活信息,允许其读写内部存储并发送其他消息或依次创建合约。在以太坊的系统中,帐目余额在帐目系统里管理,其中帐户余额的任何增加或减少被更像是现实世界中的银行帐户,并且每个新块的产生有可能会对帐目的全局状态产生影响。每个帐目都有自己的余额,基于合约的存储和编码空间能称为帐目或地址,通过存储器存储执行结果。在当前的以太坊帐目系统中,用户可以通过客户端/远程过程调用协议进行一对一交易,这意味着每个交易每次仅仅只能从一个帐目到另一个帐目中生成。尽管有可能通过智能合约发送到更多的帐目,这些内部交易只能在每个帐目的余额中显示,很难在以太坊的公开帐本上追踪它们。实施例2:气体模型在量子链中面临的主要问题为会增加图灵完备性到比特币的区块链中,具体为从理论上可以不只依赖于交易的大小来决定矿工花费的合适费用。导致上述发生的原因为一个简单的、小的交易在矿工对区块链进行作用时中会陷入无限循环,并且造成整个区块链停止运转。气体模型为了解决上述问题来创建的。气体模型的概念被总结为每个以太坊虚拟机操作符的执行都存在一个价值,并且每个交易都需要花费一定量的气体。在交易完成后,剩余的气体数量会被返回给发送的人。当在合约中执行的气体的数量超过合约需要的数量,那么交易的状态以及动作会被恢复。那意味着任何需要被修改的永久存储会被还原本文档来自技高网...

【技术保护点】
一种智能合约虚拟机实现方法,其特征在于,包含:所述智能合约虚拟机为一个以太坊虚拟机,所述以太坊虚拟机是一个带有256字节的机器字的以栈为基础的虚拟机;所述智能合约基于量子链系统,能够运行在以太坊上,并且执行所述智能合约虚拟机;所述量子链系统中包含三种与所述智能合约虚拟机相关的操作码,分别为OP_EXEC操作码、OP_EXEC_ASSIGN操作码、OP_TXHASH操作码;所述OP_EXEC操作码,用于触发一个特殊的交易处理,并且将执行用于传递的所述以太坊虚拟机的字节码;所述OP_EXEC_ASSIGN操作码,用于触发类似于所述OP_EXEC操作码执行的处理,并且传递合同地址和数据给所述智能合约,传递所述数据时执行所述智能合约的字节码,所述OP_EXEC_ASSIGN操作码能够将给定的资金传递给所述智能合约;所述数据在所述智能合约虚拟机中表示为CALLERDATA;所述OP_TXHASH操作码,用于协调帐本抽象层的剩余部分,并且当前执行交易的交易ID哈希值也被压入栈中;包含所述OP_EXEC操作码与所述OP_EXEC_ASSIGN操作码的输出脚本的特殊处理,以使所述智能合约的立即执行能够融入到区块链中;所述特殊处理包含的过程为:当交易中的脚本检测到所述OP_EXEC操作码或所述OP_EXEC_ASSIGN操作码,在交易被放置到区块链网络中后由区块链网络的所有节点进行执行;在所述特殊处理的背景下,比特币的脚本语言作为一种将所述数据传送给所述智能合约虚拟机的一种方式;当所述智能合约虚拟机执行所述OP_EXEC操作码或所述OP_EXEC_ASSIGN操作码,所述智能合约虚拟机可以在自己的状态数据库里改变状态,即在以太坊上执行一个类似的合约;所述OP_EXEC操作码和所述OP_EXEC_ASSIGN操作码的交易输出是可以消费的,当所述交易输出的代码发送资金到另一个合约或者另一个公钥哈希值地址,所述OP_EXEC_ASSIGN操作码的输出通过合约被消费;所述OP_EXEC操作码的输出被消费,当任何时候所述智能合约使用自杀操作将自己从区块链中移除;构建气体模型,用于衡量所述以太坊虚拟机操作码的执行的价值,每个交易要花费一定量的所述气体模型中气体;在交易完成后,剩余的气体数量会被返回给发送的人,当在合约中执行的气体的数量超过合约需要的数量,那么交易的状态以及动作会被恢复;状态被恢复,交易的气体也已被消耗;气体的详细条目分为GasLimit与GasPrice;GasLimit用于记录在合约执行中消耗的气体数量;GasPrice用于记录每个气体单元的精确价格;合约执行中最大量子花费等于GasLimit与GasPrice进行相乘。...

【技术特征摘要】
1.一种智能合约虚拟机实现方法,其特征在于,包含:所述智能合约虚拟机为一个以太坊虚拟机,所述以太坊虚拟机是一个带有256字节的机器字的以栈为基础的虚拟机;所述智能合约基于量子链系统,能够运行在以太坊上,并且执行所述智能合约虚拟机;所述量子链系统中包含三种与所述智能合约虚拟机相关的操作码,分别为OP_EXEC操作码、OP_EXEC_ASSIGN操作码、OP_TXHASH操作码;所述OP_EXEC操作码,用于触发一个特殊的交易处理,并且将执行用于传递的所述以太坊虚拟机的字节码;所述OP_EXEC_ASSIGN操作码,用于触发类似于所述OP_EXEC操作码执行的处理,并且传递合同地址和数据给所述智能合约,传递所述数据时执行所述智能合约的字节码,所述OP_EXEC_ASSIGN操作码能够将给定的资金传递给所述智能合约;所述数据在所述智能合约虚拟机中表示为CALLERDATA;所述OP_TXHASH操作码,用于协调帐本抽象层的剩余部分,并且当前执行交易的交易ID哈希值也被压入栈中;包含所述OP_EXEC操作码与所述OP_EXEC_ASSIGN操作码的输出脚本的特殊处理,以使所述智能合约的立即执行能够融入到区块链中;所述特殊处理包含的过程为:当交易中的脚本检测到所述OP_EXEC操作码或所述OP_EXEC_ASSIGN操...

【专利技术属性】
技术研发人员:钱德君
申请(专利权)人:钱德君
类型:发明
国别省市:上海,31

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

1