CN111381938B - 一种基于基础指令集执行区块链中智能合约的方法及系统 - Google Patents
一种基于基础指令集执行区块链中智能合约的方法及系统 Download PDFInfo
- Publication number
- CN111381938B CN111381938B CN202010478700.7A CN202010478700A CN111381938B CN 111381938 B CN111381938 B CN 111381938B CN 202010478700 A CN202010478700 A CN 202010478700A CN 111381938 B CN111381938 B CN 111381938B
- Authority
- CN
- China
- Prior art keywords
- instruction
- virtual machine
- instruction set
- module
- analysis module
- 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
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本说明书实施例公开了一种基于基础指令集执行区块链中智能合约的方法及系统,所述方法包括:区块链中的节点将部署好的智能合约的字节码,加载到所述节点的虚拟机中;所述虚拟机对所述字节码进行解析,得到对应的解析模块;所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令;若否,所述虚拟机基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种基于基础指令集执行区块链中智能合约的方法及系统。
背景技术
随着计算机领域的快速发展,程序的应用越来越广泛。智能合约是部署在区块链上的可执行代码,属于一种可执行的程序。程序执行时程序应用的重要环节。程序执行的方式有很多种,例如,解释执行或编译执行等。
为了提高程序(例如,智能合约)执行的性能,本说明书提出一种基于基础指令集执行区块链中智能合约的方法及系统。
发明内容
本说明书实施例的一个方面提供一种基于基础指令集执行区块链中智能合约的方法,所述方法包括:区块链中的节点将部署好的智能合约的字节码,加载到所述节点的虚拟机中;所述虚拟机对所述字节码进行解析,得到对应的解析模块;所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令;若否,所述虚拟机基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。
本说明书实施例的一个方面提供一种基于基础指令集执行区块链中智能合约的系统,所述系统包括:加载模块,用于将部署好的智能合约的字节码,加载到所述节点的虚拟机中;解释模块,用于对所述字节码进行解析,得到对应的解析模块;判断模块,用于基于所述解析模块,判断所述解析模块中是否包含扩展指令;执行模块,用于若否,基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。
本说明书实施例的一个方面提供一种基于基础指令集执行区块链中智能合约的装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现基于基础指令集执行区块链中智能合约的方法。
附图说明
本说明书将以示例性实施例的方式进一步描述,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的系统的应用场景示意图;
图2是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的系统的模块图;
图3是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的方法的流程图;
图4是根据本说明书的一些实施例所示的部署与执行智能合约的示例性示意图;
图5是根据本说明书的一些实施例所示的基础指令集和完整指令集的示例性示意图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本说明书中所使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的系统的应用场景示意图。如图1所示,该应用场景100可以包括区块链系统110、终端120以及网络130。
在一些实施例中,区块链系统110可以由多个节点组成,每个节点包括对应的虚拟机。任一节点可以接收来自区块链系统110中的其他设备发送的合约创建交易。相应的,任一节点可以接收来自区块链系统110中的其他设备上传的合约创建交易,并在运行共识机制后部署和执行(调用)相应的智能合约。在执行(调用)智能合约的过程中,虚拟机会加载并运行智能合约的字节码。更具体而言,虚拟机中的解释器会对字节码代表的指令流进行解释和执行,从而执行智能合约。
在一些实施例中,终端120可以是具备输入输出、计算、处理或/和存储能力的设备,开发人员可以在终端120实现智能合约的源代码开发。如,开发人员基于计算机开发软件工具包(SDK)在用户端开发智能合约。在一些实施例中,使用终端120的可以是一个或多个用户,终端120可以是移动设备、平板计算机、膝上型计算机、台式计算机等其他具有输入或输出等功能的设备中的一种或其任意组合。
网络130连接系统的各组成部分,使得各部分之间可以进行通讯。在应用场景100中各部分之间的网络可以包括有线网络和/或无线网络。例如,开发人员在终端120开发完成智能合约之后,通过网络130传输给区块链系统110中的节点。
网络130可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。可以理解,网络130与区块链系统110中的网络不必具有明显的分界,在更一般的应用场景中,区块链节点与普通网络节点可以共同接入同一物理网络中,其中的区块链节点在逻辑上构成区块链系统。
图2是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的系统的模块图。如图2所示,该系统200可以包括加载模块210、解释模块220、判断模块230、执行模块240以及写入模块250。
加载模块210可以用于将部署好的智能合约的字节码,加载到所述节点的虚拟机中。
在一些实施例中,加载模块210可以进一步用于:接收调用所述智能合约的请求;基于所述请求中指向的所述智能合约的地址,从本地存储中将所述字节码加载到所述虚拟机中。
解释模块220可以用于对所述字节码进行解析,得到对应的解析模块。
判断模块230可以用于基于所述解析模块,判断所述解析模块中是否包含扩展指令。
在一些实施例中,判断模块230可以进一步用于:判断所述解析模块的前缀字节中是否包含扩展指令对应的前缀字节,是则所述解析模块中包含扩展指令。
执行模块240可以用于当解析模块中不包含扩展指令时,基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。
在一些实施例中,执行模块240可以进一步用于:当所述解析模块中包含所述扩展指令时,基于完整指令集执行所述解析模块;所述完整指令集由基础指令和扩展指令及对应的行为构成。
在一些实施例中,执行模块240可以进一步用于:判断所述解析模块中的指令是否出现在所述基础指令集中,是则执行所述指令,否则不执行。在一些实施例中,所述基础指令或/和所述扩展指令为WASM指令,所述WASM指令由WASM标准定义。
在一些实施例中,该系统200还包括写入模块250。在一些实施例中,写入模块250可以用于将所述智能合约中是否包含扩展指令的判断结果写入所述解析模块中。
应当理解,图2所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于基于基础指令集执行目标程序的系统200及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,图2中披露的加载模块210、解释模块220、判断模块230、执行模块240以及写入模块250可以是一个系统中的不同模块,也可以是一个模块实现上述的两个模块的功能。又例如,基于基础指令集执行区块链中智能合约的系统200中各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
图3是根据本说明书的一些实施例所示的基于基础指令集执行区块链中智能合约的方法的流程图。该方法300包括:
步骤302,区块链中的节点将部署好的智能合约的字节码,加载到所述节点的虚拟机中。在一些实施例中,步骤302可以由加载模块210执行。
智能合约是一段可由计算机执行的程序。智能合约可以通过高级语言(例如C语言、C++语言、java语言或VC++语言等)编写而成。字节码是一种包含执行程序的中间码,智能合约的字节码则为智能合约程序的中间码。
节点可以是任何具备计算、处理能力的设备、平台或设备集群。
虚拟机是一种虚构出来的计算机,往往通过在实际的计算机上仿真模拟各种计算机功能来实现。每个参与到区块链的节点,都会运行一个虚拟机,虚拟机运行在硬件处理器上。虚拟机可以包括但不限于:java虚拟机(JVM,Java Virtual Machine)、以太坊虚拟机(Ethereum Virtual Machine,EVM)、WASM虚拟机或其他非Java的其他高级语言虚拟机(High-Level Language Virtual Machine, HLLVM)。在一些实施例中,虚拟机可以与编译智能合约的格式相适应的,例如,若智能合约基于WASM(WebAssembly)编译,则虚拟机为WASM虚拟机;若智能合约基于java的编译器编译,则虚拟机为java虚拟机(JVM,JavaVirtual Machine)。
由高级语言编写好的智能合约,可以通过编译器编译成字节码(bytecode),例如,java语言编写的智能合约程序代码,则通过java的编译器编译,得到对应的字节码;又例如,使用C/C++/RUST/Go等多种语言编写智能合约,基于WASM标准(关于WASM标准见后文),编译成对应格式的字节码。然后将字节码部署在区块链的各个节点中,可以理解,部署的字节码是指字节码代表的实质内容,字节码形式可能因为存储方式不同而发生变化,例如,若是存储在磁盘中,则字节码的形式为二进制。在一些实施例中,存储在磁盘中的字节码是经过编码的。节点无法直接执行部署的字节码,需要通过节点的虚拟机解释执行,具体的,虚拟机对字节码进行解析(或解释),并基于解析得到的解析模块进行执行(即“解释执行”)。解释和执行具体见步骤304-310。
如图4所示,用户通过客户端(例如,Bob)通过高级语言编写了智能合约之后,可以本地对智能合约进行编译,得到对应格式的字节码。在一些实施例中,可以由用户通过客户端(例如,Bob)发起创建智能合约的请求(例如,创建智能合约的交易),并将该发送给区块链的节点(例如,节点1、2、3和4)。示例的,创建智能合约的交易可以如图4所示的交易Tx,交易的data字段保存的可以是字节码,交易的to字段可以为一个空(null)的地址,交易的from字段可以是发起创建交易的地址(例如,Bob的地址,0xf5e)和数字签名0xe12cfez4。
区块链的各个节点接收到该创建请求,并通过共识机制达成一致后,该智能合约成功创建,即,该智能合约部署在区块链的各个节点(或达成共识的节点(简称共识节点))中。具体的,各节点将智能合约的字节码都存在本地存储中,例如,将字节码进行编码后存入磁盘中。如图4所示,各节点(或共识节点)创建一个智能合约对应的合约账户,字节码和账户存储可以保存在该合约账户对应的本地存储中,通过该合约账户拥有一个特定的地址(例如,0x68e12cf284)。其中,各节点通过相同的规则给合约账户创建一个地址(例如,0x68e12cf284),各节点针对同一合约创建的地址是相同的。
智能合约部署完成以后,各个节点可以执行该智能合约。例如,用户通过客户端发起一个调用智能合约的请求(例如,调用智能合约的交易),并将该请求发送给区块链。调用智能合约的交易可以如图4所示交易Ty,from字段是发起调用智能合约的地址(例如,客户端的地址,如0x24a51371),to字段中的“0x68e12cf284”代表了被调用的智能合约的地址,交易的data字段保存的调用智能合约的函数和参数function(parameter)。区块链的节点接收到调用智能合约的请求时,可以先对该请求进行共识。完成共识后,节点基于请求中指向智能合约的地址(即,to字段中的地址),从本地存储中将智能合约的字节码,加载到节点的虚拟机中。从而,虚拟机可以对该字节码进行解释执行。可以理解,如前所述,本实施例的字节码是指字节码的实质内容,而非形式或格式内容,因此,当从节点的磁盘中加载字节码时,加载的是编码后的字节码。
智能合约的字节码,均可以代表一个或多个指令,可以理解,智能合约的字节码可以至少表示智能合约的所有指令。例如,字节码文件中每一行代表一个指令,每一行对应一个操作码(OP code),该操作码代表指令的实际内容,操作码可以由不同形式的代码表示,例如,二进制等。其中,指令可以分为基础指令和扩展指令,基础指令可以是指常用的指令,可以是实现程序的基础功能的指令;扩展指令可以是指不常用的指令,可以是实现程序除基础功能以外其他功能的指令。
在一些实施例中,上述指令可以是由WASM标准定义的WASM指令,指令中的基础指令和扩展指令也可以由标准(例如,WASM标准自定义)自定义。目前,WASM标准定义了400条指令,包括约180多条基础指令(如,nop指令或block指令等),和约200多条扩展指令(如,SIMD指令或多线程(treads)指令等)。WASM是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C/C++/Rust等语言提供一个编译目标,以便它们可以在Web上运行。WASM是一个可移植、体积小、加载快并且兼容Web的格式。WASM的标准定义了WASM模块结构、指令集、二进制和文本格式的表示,验证、执行的语义等内容,该标准是由万维网联盟(World Wide Web Consortium,W3C)组织制定。可以理解,WASM标准可以是组织公开的任意版本的标准,还可以是随着发展更新后的版本,本申请不做限制。
步骤304,所述虚拟机对所述字节码进行解析,得到对应的解析模块。在一些实施例中,步骤304可以由解释模块220执行。
虚拟机对字节码进行解析,是为了得到用于执行的解析模块。例如,解析的过程可以包括:对编码后的字节码进行解码,得到解码后字节码。在一些实施例中,虚拟机可以基于解码协议对编码后的字节码进行解码。例如,可以采用leb 128可变长编码方式进行编码,对应的,可以基于leb 128可变长解码协议进行解码。leb 128即“Little-Endian Base128”,是对任意有符号或者无符号整数型的可变长度的编码,因此,用leb 128编码的整数,会根据数字的大小改变所占字节数,可以减小智能合约的字节码文件体积,节约存储空间。还可以通过其他协议进行编码解码,本实施例不做限制。
解析之后可以得到对应的解析模块(module),该解析模块用于存储解码后的字节码。同时还可以存储执行需要的其他信息,包括但不限于:字节码所占的内存、字节码的数据段、指令、导入导出函数列表、执行入口等。可以理解,在解析完成生成对应的模块时,上述信息自动存入解析模块中。在一些实施例中,虚拟机可以将生成的解析模块载入到虚拟机的内存(Memory)中。
步骤306所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令。在一些实施例中,步骤306可以由判断模块230执行。
在一些实施例中,判断模块230可以基于解析模块,判断解析模块中是否包含扩展指令,从而确定智能合约中是否存在扩展指令。在一些实施例中,虚拟机可以通过解析模块中的前缀字节来实现判断。具体的,虚拟机判断解析得到的解析模块的前缀字节中是否包含扩展指令对应的前缀字节,是则解析模块中包含扩展指令。可以理解,若解析模块对应N(N为大于等于1的正数)个指令,且每个指令的解析模块均有对应的前缀字节,若其中任意一个指令的前缀字节为扩展指令的前缀字节,则说明解码中包含扩展指令,即,智能合约包含扩展指令。例如,可以基于解析模块中记录的解码后的字节码来判断,具体的,判断字节码中每行的操作码对应的代码(例如,16进制代码)的前缀字节是否为扩展指令的前缀字节。
根据WASM标准,0x00代表unreachable指令,0x01代表nop指令,0x02代表block指令,0xfe 0x49代表i64.atomic.rmw.cmpxchg指令,0xfe 0x3d代表i32.atomic.rmw16_u.xor指令,0xfe 0x23代表i64.atomic.rmw16_u.add指令等。根据WASM标准,不同类型的指令对应的前缀字节不同,例如,基础指令的前缀字节为0x00、0x01、0x02等,但扩展指令的前缀字节为0xfe、0xfd等。因此,可以根据解析模块的前缀字节,确定智能合约是否包含扩展指令。例如,若某个智能合约的解析模块文件部分内容为下表:
0x01 |
0x02 |
0xfe 0x49 |
可以看出,字节码解析得到的解析模块中包含3个前缀字节0x01、0x02和0xfe,因为0xfe这个前缀字节,可以确定智能合约中包含扩展指令。
在一些实施例中,可以将判断的结果进行记录,例如,写入步骤304所述解析模块中,从而在执行的过程中,直接读取该记录即可确定若何执行,即,基于基础指令集执行,还是基于扩展指令集执行。
步骤308,若否,所述虚拟机基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。在一些实施例中,步骤308可以由执行模块240执行。
在一些实施例中,可以通过表格(table)记录基础指令集中的指令和对应的行为。其中,每个指令对应的行为可以由标准定义(例如,WASM标准)。对应的行为可以是由标准定义的执行相应指令的相关内容,例如,执行的过程、操作等。
如图5所示的表格table1和table2,基础指令unreachable的代码表示0x00和对应的行为1,基础指令nop的代码表示0x01和对应行为2,基础指令block的代码表示0x02和对应的行为3,基础指令loop的代码表示0x03和对应的作为4,基础指令if的代码表示0x04和对应的行为5等。在一些实施例中,当解析模块不包含扩展指令时,虚拟机可以基于基础指令集,执行解析模块,实现对智能合约的执行。
具体的,虚拟机判断解析模块中的指令是否出现在基础指令集中,是则执行该指令(是则该指令合法),否则不执行(否则该指令不合法)。例如,若基础指令集中包含解析模块中的某个指令,则虚拟机基于索引找到该指令对应的行为,并基于该行为执行该指令。示例的,可以基于解析模块生成执行的参数,若该指令合法,则基于参数执行指令,实现该指令的对应行为。
步骤310,若是,所述虚拟机基于完整指令集执行所述解析模块;所述完整指令集由基础指令和扩展指令及对应的行为构成。在一些实施例中,步骤310可以由执行模块240执行。
在一些实施例中,若解析模块中出现了扩展指令,则虚拟机基于既包含扩展指令又包含基础指令的集合(简称“完整指令集”),执行解析模块。具体的,虚拟机判断解析模块中的指令是否出现在完整指令集中,是则执行,否则不执行。在一些实施例中,可以通过表格(table)记录完整指令集中的指令,如图5所示的table2,基础指令loop的代码表示0x03对应行为4,基础指令if的代码表示0x04对应行为5,扩展指令i64.atomic.rmw.cmpxchg的代码表示0xfe 0x49对应行为6,扩展指令 i32.atomic.rmw16_u.xor的代码表示0xfe 0x3d对应行为7等。
如前所述,可以将解析模块(即,智能合约)中是否包含扩展指令的判断结果写入模块。可以理解,当智能合约执行时,可以读取模块中记录的信息,例如,读取是否包含扩展指令的信息,确定执行使用的对应指令集,即是基于基础指令集还是扩展指令集执行该智能合约,进一步的,确定模块中的指令是否出现在对应的指令集(基础指令集或完整指令集)中,是则基于对应的行为和模块中记录的其他执行需要的信息,执行该指令,否则不执行。
如前文所述,WASM标准中基础指令约180多条,从而基础指令集仅包含大约180条基础指令,而完整指令集中包含400条指令(包括180多条基础指令和200多条扩展指令),因此在执行不包含扩展指令的智能合约时,仅需要在包含少量指令条数的基础指令集中匹配查找相应的指令,减少了匹配查找的开销,提升执行的效率。
本说明书实施例还提供一种基于基础指令集执行区块链中智能合约的装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现前述的基于基础指令集执行区块链中智能合约的方法,所述方法包括:区块链中的节点将部署好的智能合约的字节码,加载到所述节点的虚拟机中;所述虚拟机对所述字节码进行解析,得到对应的解析模块;所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令;若否,所述虚拟机基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成。
本说明书实施例可能带来的有益效果包括但不限于:本说明书实施例基于基础指令集执行不包含扩展指令的智能合约,使得虚拟机在执行此类智能合约时,仅需要在包含少量指令条数的基础指令集中匹配查找相应的指令,减少了匹配查找的开销,提升执行的性能。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (13)
1.一种基于基础指令集执行区块链中智能合约的方法,包括:
区块链中的节点将部署好的智能合约的字节码,加载到所述节点的虚拟机中;
所述虚拟机对所述字节码进行解析,得到对应的解析模块;
所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令;
若否,所述虚拟机基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成;
所述方法还包括:所述虚拟机将所述智能合约中是否包含扩展指令的判断结果写入所述解析模块中。
2.如权利要求1所述的方法,所述方法还包括:
若是,所述虚拟机基于完整指令集执行所述解析模块;所述完整指令集由基础指令和扩展指令及对应的行为构成。
3.如权利要求1所述的方法,所述虚拟机基于所述解析模块,判断所述解析模块中是否包含扩展指令,包括:
所述虚拟机判断所述解析模块中的前缀字节是否包含扩展指令对应的前缀字节,是则所述解析模块中包含扩展指令。
4.如权利要求1所述的方法,所述区块链中的节点将部署好的智能合约的字节码,加载到区块链节点的虚拟机中,包括:
所述节点接收调用所述智能合约的请求;
所述节点基于所述请求中指向的所述智能合约的地址,从本地存储中将所述字节码加载到所述虚拟机中。
5.如权利要求1所述的方法,所述若否,所述虚拟机基于基础指令集,执行所述解析模块,包括:
所述虚拟机判断所述解析模块中的指令是否出现在所述基础指令集中,是则执行所述指令,否则不执行。
6.如权利要求1所述的方法,所述基础指令或/和所述扩展指令为WASM指令,所述WASM指令由WASM标准定义。
7.一种基于基础指令集执行区块链中智能合约的系统,包括:
加载模块,用于将部署好的智能合约的字节码,加载到节点的虚拟机中;
解释模块,用于对所述字节码进行解析,得到对应的解析模块;
判断模块,基于所述解析模块,判断所述解析模块中是否包含扩展指令;
执行模块,用于若否,基于基础指令集执行所述解析模块;所述基础指令集由基础指令及对应的行为构成;
写入模块,用于将所述智能合约中是否包含扩展指令的判断结果写入所述解析模块中。
8.如权利要求7所述的系统,所述执行模块进一步用于:
若是,基于完整指令集执行所述解析模块;所述完整指令集由基础指令和扩展指令及对应的行为构成。
9.如权利要求7所述的系统,所述判断模块进一步用于:
所述虚拟机判断所述解析模块的前缀字节中是否包含扩展指令对应的前缀字节,是则所述解析模块中包含扩展指令。
10.如权利要求7所述的系统,所述加载模块进一步用于:
接收调用所述智能合约的请求;
基于所述请求中指向的所述智能合约的地址,从本地存储中将所述字节码加载到所述虚拟机中。
11.如权利要求7所述的系统,所述执行模块进一步用于:
判断所述解析模块中的指令是否出现在所述基础指令集中,是则执行所述指令,否则不执行。
12.如权利要求7所述的系统,所述基础指令或/和所述扩展指令为WASM指令,所述WASM指令由WASM标准定义。
13.一种基于基础指令集执行区块链中智能合约的装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现如权利要求1~6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010478700.7A CN111381938B (zh) | 2020-05-29 | 2020-05-29 | 一种基于基础指令集执行区块链中智能合约的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010478700.7A CN111381938B (zh) | 2020-05-29 | 2020-05-29 | 一种基于基础指令集执行区块链中智能合约的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111381938A CN111381938A (zh) | 2020-07-07 |
CN111381938B true CN111381938B (zh) | 2020-09-25 |
Family
ID=71220430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010478700.7A Active CN111381938B (zh) | 2020-05-29 | 2020-05-29 | 一种基于基础指令集执行区块链中智能合约的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381938B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111738710B (zh) * | 2020-07-23 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 对智能合约的执行进行资源扣除的方法和处理器 |
CN111768183B (zh) | 2020-08-31 | 2024-04-19 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111770204B (zh) * | 2020-08-31 | 2021-10-22 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111770202B (zh) | 2020-08-31 | 2021-10-29 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111768184A (zh) | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN112306645B (zh) | 2020-12-24 | 2021-05-04 | 北京百度网讯科技有限公司 | 以太坊虚拟机的事务处理方法、装置、设备和介质 |
CN112612482A (zh) * | 2020-12-28 | 2021-04-06 | 杭州趣链科技有限公司 | 执行智能合约的方法、装置、设备及存储介质 |
CN113094395B (zh) * | 2021-03-19 | 2022-05-24 | 杭州复杂美科技有限公司 | 数据查询方法、计算机设备和存储介质 |
CN113472512A (zh) * | 2021-06-10 | 2021-10-01 | 东软集团股份有限公司 | 智能合约执行方法、装置、存储介质及电子设备 |
CN117215544B (zh) * | 2023-11-09 | 2024-02-09 | 中国科学院软件研究所 | 一种智能合约专用指令集的实现及运行方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046023A (zh) * | 2018-12-12 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的数据处理方法及系统 |
CN111078279A (zh) * | 2019-12-20 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 字节码文件的处理方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101299199A (zh) * | 2008-06-26 | 2008-11-05 | 上海交通大学 | 基于可配置处理器及指令集扩展的异构多核系统 |
WO2019045589A1 (en) * | 2017-08-31 | 2019-03-07 | Siemens Aktiengesellschaft | REAL-TIME CONTROL NETWORK BASED ON BLOCK CHAIN, REAL-TIME CONTROL SYSTEM, AND REAL-TIME CONTROL METHOD |
CN110009321B (zh) * | 2018-12-12 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的转账方法及系统 |
CN109948308A (zh) * | 2019-03-13 | 2019-06-28 | 智者四海(北京)技术有限公司 | 代码安全保护方法、装置、电子设备和计算机可读存储介质 |
CN110675256B (zh) * | 2019-08-30 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 部署和执行智能合约的方法及装置 |
CN111045792A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存和执行智能合约的方法和装置 |
-
2020
- 2020-05-29 CN CN202010478700.7A patent/CN111381938B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110046023A (zh) * | 2018-12-12 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种基于区块链智能合约的数据处理方法及系统 |
CN111078279A (zh) * | 2019-12-20 | 2020-04-28 | 北京字节跳动网络技术有限公司 | 字节码文件的处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111381938A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111381938B (zh) | 一种基于基础指令集执行区块链中智能合约的方法及系统 | |
US7200842B1 (en) | Object-oriented instruction set for resource-constrained devices | |
US9785456B2 (en) | Metadata-driven dynamic specialization | |
JP4902129B2 (ja) | セキュリティ仮想マシンを介してセキュリティポリシーを実施するための方法およびシステム | |
US6880155B2 (en) | Token-based linking | |
TWI536263B (zh) | 將作業系統之原始應用程式介面投射至其它程式語言 | |
JP4913302B2 (ja) | 言語サブセットの妥当性検査 | |
US8863079B2 (en) | Efficient and expansive conversions between reference and primitive | |
US6823504B1 (en) | Method and apparatus for interfacing a javascript interpreter with library of host objects implemented in java | |
US6951014B1 (en) | Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter | |
US6898786B1 (en) | Javascript interpreter engine written in Java | |
WO2022017242A1 (zh) | 在第一系统运行第二系统应用的方法、装置、设备及介质 | |
US8745605B2 (en) | Execution contexts with polymorphic type implementations | |
CN110941443A (zh) | 修改sdk中文件名的方法、装置及电子设备 | |
Tanaka et al. | Python deserialization denial of services attacks and their mitigations | |
US20010007146A1 (en) | Method for providing a set of software components | |
CN112765676A (zh) | 一种智能合约执行方法、智能合约执行装置及节点设备 | |
Varghese et al. | Using Standard Library Packages | |
Späth et al. | Classes and Objects: Extended Features | |
CN114356359A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40032832 Country of ref document: HK |