CN113220326B - 智能合约升级方法及区块链系统 - Google Patents
智能合约升级方法及区块链系统 Download PDFInfo
- Publication number
- CN113220326B CN113220326B CN202110510125.9A CN202110510125A CN113220326B CN 113220326 B CN113220326 B CN 113220326B CN 202110510125 A CN202110510125 A CN 202110510125A CN 113220326 B CN113220326 B CN 113220326B
- Authority
- CN
- China
- Prior art keywords
- contract
- block chain
- transaction
- code
- jit
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Abstract
本说明书提供一种智能合约升级方法及区块链节点;该方法可以包括:区块链网络中的所有区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并基于所述机器码生成针对所述智能合约的合约升级交易;所述区块链网络中的所有区块链节点分别获取所述合约升级交易,并基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
Description
技术领域
本说明书涉及区块链领域,特别涉及一种智能合约升级方法及区块链系统。
背景技术
区块链技术(也被称为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。而JIT(Just-In-TimeCompiler,即时编译)则是一种能够提高程序代码执行效率的编译方式。如何将JIT编译应用于区块链,以提高智能合约的执行效率,已成为亟待解决的技术问题。
相关技术在将JIT编译应用至区块链时,通常需要在将智能合约的字节码部署至各个区块链节点后,由各个区块链节点自行对字节码进行JIT编译,并将已部署的字节码升级为编译得到的机器码。由于这种方式需要各个区块链节点分别对字节码进行JIT编译,占用了大量区块链处理资源。
除此之外,相关技术中的区块链节点在部署智能合约和升级智能合约时,均需在接收到用户发送的指示信息的情况下,才能执行相应的操作。换言之,由合约的部署操作到合约的升级操作,用户至少需要参与两次交互,合约升级的效率较低。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种智能合约升级方法及区块链系统。
本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种智能合约升级方法,包括:
区块链网络中的所有区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;
所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并基于所述机器码生成针对所述智能合约的合约升级交易;
所述区块链网络中的所有区块链节点分别获取所述合约升级交易,并基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链系统,包括:多个区块链节点;其中,
所述区块链系统中的各个区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;
所述区块链网络中的任一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并基于所述机器码生成针对所述智能合约的合约升级交易;
所述区块链网络中的所有区块链节点分别获取所述合约升级交易,并基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
附图说明
图1是一实施例中编译执行和解释执行的原理示意图。
图2是一实施例中解释执行和JIT的原理示意图。
图3是本说明书一示例性实施例示出的一种智能合约升级方法的流程图。
图4是本说明书一示例性实施例示出的一种区块链系统。
图5是本说明书一示例性实施例示出的一种智能合约升级方法的交互图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
区块链1.0时代通常是指在2009年到2014年之间,以比特币为代表的区块链应用发展阶段,它们主要致力于解决货币和支付手段的去中心化问题。从2014年开始,开发者们越来越注重于解决比特币在技术和扩展性方面的不足。2013年底,VitalikButerin发布了以太坊白皮书《以太坊:下一代智能合约和去中心化应用平台》,将智能合约引入区块链,打开了区块链在货币领域以外的应用,从而开启了区块链2.0时代。
智能合约是一种基于规定触发规则的,可自动执行的计算机合约,也可以看作是传统合约的数字版本。智能合约这一概念最早由跨领域法律学者、密码学研究工作者尼克·萨博(NickSzabo)在1994年提出。这项技术曾一度因为缺乏可编程数字系统和相关技术而没有被用于实际产业中,直到区块链技术和以太坊的出现为其提供了可靠的执行环境。由于区块链技术采用的块链式账本,产生的数据不可篡改或者删除,且整个账本将不断新增账本数据,从而保证了历史数据的可追溯;同时,去中心化的运行机制避免了中心化因素的影响。基于区块链技术的智能合约不仅可以发挥智能合约在成本、效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。
智能合约本质上是一段可由计算机执行的程序。智能合约与现在广泛使用的计算机程序一样,可以通过高级语言(例如C语言、C++语言等)编写而成。由高级语言编写好的智能合约的程序代码,一般可以通过“编译器”转换为计算机的CPU可以识别和运行的“机器码”,进而可以由CPU执行这样的机器码(或者称为“微处理器指令”)。这种方式一般称为“编译执行”。
编译执行一般不具有跨平台的可扩展性。由于存在不同厂商、不同品牌和不同代的CPU,而这些不同的CPU支持的指令集很多情况下是不同的,如x86指令集,ARM指令集等,且同一厂商同一品牌但不同代的CPU(如不同代的IntelCPU)支持的指令集也不完全相同,因此,用同样的高级语言编写的同样的程序代码,在不同CPU上被编译器转换出来的机器码可能不同。具体的,编译器在转换高级语言编写的程序代码到机器码的过程中,会结合具体的CPU指令集的特点(如向量指令集等)进行优化以提升程序执行的速度,而此类优化往往与具体的CPU硬件相关。这样,同样的机器码,一个在x86上可以运行,但另一个在ARM上就可能无法运行;甚至同样是x86平台,随着时间的推移,指令集也不断丰富和扩展,这就导致不同代的x86平台运行的机器码也有不同。而且,由于执行机器码需要由操作系统内核对CPU进行调度,因此即使是同样的硬件,在不同操作系统下支持运行的机器码也可能不同。
不同于编译执行,还存在一种“解释执行”的程序运行方式。比如Java语言,将Java源代码通过Java的编译器编译成标准的字节码(bytecode),这里编译器不针对任何实际的硬件处理器的指令集,而是定义了一套抽象的标准指令集。编译成的标准字节码一般无法在硬件CPU上直接运行,因此引入了一个虚拟机,即JVM,JVM运行在特定的硬件处理器上,用以解释和执行编译后的标准字节码。
JVM是Java Virtual Machine(Java虚拟机)的缩写,是一种虚构出来的计算机,往往通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM屏蔽了与具体的硬件平台、操作系统等相关的信息,使Java程序只需要是生成的可在Java虚拟机上运行的标准字节码,就可以在多种平台上不加修改地运行。
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
JVM运行在特定的硬件处理器上,负责针对所运行的特定处理器而进行字节码的解释和执行,并向上屏蔽这些底层的差异,呈现给开发者以标准的开发规范。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。具体的,JVM接收到输入的字节码后,逐句解释其中的每一条指令,并翻译成适合当前机器的机器码来运行,这些过程例如由称为Interpreter的解释器进行解释和执行。这样一来,编写Java程序的开发者不需要考虑编写后的程序代码将运行在哪种硬件平台上。JVM本身的开发是由Java组织的专业开发人员完成,以将JVM适配到不同的处理器架构上。迄今为止,主流的处理器架构只有有限的几种,如X86,ARM,RISC-V,MIPS。专业的开发人员将JVM分别移植到支持这几种特定硬件的平台后,Java程序理论上就可以在所有的机器上运行了。JVM的移植工作通常由Java开发组织专业的人员提供的,这就极大减轻了Java应用开发者的负担。
解释执行带来了跨平台可移植性,但由于bytecode的执行经历了JVM中间翻译的过程,因此执行效率不如上述编译执行效率高,这种效率的差异有时甚至可达几十倍。
图1示出了编译执行和解释执行的共同点和不同点。不论是解释执行还是编译执行,也不论是物理机还是虚拟机,对于应用程序,机器都不可能如人那样阅读、理解,然后就获得了执行能力。大部分的程序代码到物理机的目标代码或虚拟机能执行的指令集之前,都需要经过图1中的各个步骤。图1中从顶部到左边的那条分支就是传统编译原理中程序代码到目标机器代码的生成过程,从顶部到右边的那条分支是解释执行的过程。如今,基于物理机、Java虚拟机,或者非Java的其他高级语言虚拟机(High-Level LanguageVirtualMachine,HLLVM)的语言,大多都会遵循这种基于现代经典编译原理的思路,在执行前先对程序源码进行词法分析和语法分析处理,把源码转化为抽象语法树(AbstractSyntaxTree,AST)。对于一门具体语言的实现来说,词法分析、语法分析以至后面的优化器和目标代码生成器都可以选择独立于执行引擎,形成一个完整意义的编译器去实现,这类代表是C/C++语言。也可以选择把其中一部分步骤(如生成抽象语法树之前的步骤)实现为一个半独立的编译器,这类代表是Java语言。又或者把这些步骤和执行引擎全部集中封装在一个封闭的黑匣子之中,如大多数的JavaScript执行器。
为了尽可能地兼顾跨平台可移植性和高性能,即时编译器(Just-In-TimeCompiler,JIT)的概念被提出。JIT的核心思想是“如何高效避免解释指令的重复工作”。计算机程序中存在大量重复执行的代码,比如某些计算“函数”在一个程序执行过程中可能被循环调用了很多次。如果是解释执行,则循环过程的每次执行都要对这个函数进行字节码到机器码的翻译。然而实际情况是,这个函数在几十次的翻译中产生的机器码都是完全一样的。很自然的,在第一次翻译后,将翻译好的函数的机器码缓存下来,后续再次执行的过程中,不需要再次翻译,而是直接使用缓存好的代码,这样可以提高执行效率。
相反的,有些函数在程序运行周期过程中只执行了一次(比如启动初始化),那么这类函数就不需要缓存,直接解释执行一次即可。因此JIT技术中一个核心的模块就是“热点分析”,即通过程序执行过程中分析出哪些代码执行了多次,从而对其翻译后的机器码进行缓存。对于执行次数较少的操作,不需要进行缓存。这样可以在执行效率和内存开销上达到最佳平衡。
此外,JIT技术中的另一个核心的模块是编译优化(或称为优化编译)。直接翻译的机器码,没有结合上下文进行优化,仅仅是将高频的机器码缓存下来,性能提升有限。如果要获得更好的性能,可以对编译器进行进一步的优化。编译优化的方式,一般需要相对更多的时间来实现。
JIT的工作原理例如图2中所示。Java源代码经过Java编译器编译后生成一段Java字节码,经过热点分析后被分发到两个执行路径上(JIT Compiler和Interpreter)。被判断为热点(高频执行)的代码经JIT compiler中进行编译得到机器码,缓存并执行,一般是由CPU在操作系统(OperatingSystem,OS)的控制下执行。低频的进入解释器(Interpreter),翻译成机器码后由CPU在OS的控制下执行。
由于程序代码本身的前后关联性,编译过程往往存在较大的优化空间。优化后的机器码,执行效率会远高于直接翻译的机器码。如果要获得更好的性能,编译器的优化是必须的。JIT compiler编译的过程可能比较耗时。特别是JIT Compiler在第一次编译字节码的过程可能耗时很长,甚至不如解释执行。那么,对于某些java程序,如果热点不是很突出,即整体的执行频度都不是很高,而整体执行流程又很长的,JIT就很难发挥出编译执行的优势。
鉴于上述优势,在区块链之外,JIT编译已经成为提升程序执行效率的一种重要手段,但由于区块链技术对各个节点的一致性要求,“如何将JIT编译集成至区块链,以提升智能合约的执行效率”已经成为区块链领域亟待解决的问题。
在相关技术中,若需要对区块链网络中的智能合约进行JIT编译,通常需要在将智能合约的字节码部署至各个区块链节点后,由各个区块链节点自行进行JIT编译,并在JIT编译完成后,将已部署的字节码升级为JIT编译得到的机器码。由于这种方式需要各个区块链节点分别对字节码进行JIT编译,占用了大量区块链处理资源。
除此之外,区块链中智能合约,通常由用户自行编译后,通过发送合约部署交易的方式完成部署。进一步的,在需要对已部署的智能合约进行升级时,还需进一步向各个区块链节点发送合约升级交易,以便各个区块链节点将已部署的字节码升级为JIT编译得到的机器码。可见,相关技术在合约部署和合约升级的过程中,需要用户与区块链节点进行多次交互,合约升级的效率较低。
为此,本说明书提出了一种智能合约升级方法,使得在将JIT编译应用于区块链技术时,既无需占用大量的区块链处理资源,也无需用户与区块链节点进行多次交互。
图3是本说明书一示例性实施例示出的一种智能合约升级方法的流程图。该方法可以包括以下步骤:
步骤302,区块链网络中的所有区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约。
与相关技术相类似的是,本说明书需要优先对智能合约的字节码进行部署。在实际操作中,用户可以自行编译智能合约的字节码,并通过向自身使用的客户端发送合约部署请求的方式,使客户端基于该字节码生成合约部署交易。客户端可以将生成的合约部署交易发送至任一区块链节点,以使该任一区块链节点对该合约部署交易进行交易共识,以在共识通过后,由各个区块链节点分别对其中包含的字节码进行部署。
由上述内容可知,在相关技术中,在各个区块链节点对字节码完成部署后,各个区块链节点需要自行对该字节码进行JIT编译,致使占用了较多的区块链处理资源。除此之外,在需要对已部署的字节码进行升级时,用户还需额外向区块链节点发送针对智能合约的升级指示,降低了合约升级的效率。其中,需要指出的是,由于相关技术中由各个区块链节点分别执行JIT编译,因此,用户在发送升级指示时,需要向各个区块链节点分别发送升级指示,以保证各个区块链节点均能完成合约升级操作。可见,该方式不仅增加了交互次数,还占用了大量传输资源。
有鉴于此,本说明书中不再由各个区块链节点分别执行JIT编译,而是由区块链网络中的某一节点在执行JIT编译后,再将编译得到的机器码发送至区块链网络中的各个区块链节点,以使各个区块链节点无需分别执行JIT编译操作,减少了JIT编译过程对区块链处理资源的占用。同时,为了避免用户与区块链节点之间的交互次数较多,而导致升级效率较低的问题,以及占用传输资源较多的问题,本说明书不再由用户控制合约升级操作,而是由区块链节点在完成JIT编译后,自行将已部署的字节码升级为机器码。
步骤304,所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并基于所述机器码生成针对所述智能合约的合约升级交易。
在本说明书中,将上述负责对智能合约进行JIT编译的区块链节点称为第一区块链节点。
在实际应用中,并非所有的智能合约均需要被编译为机器码。因此,第一区块链节点可以根据实际需求确定是否对合约部署交易中的智能合约进行JIT编译。
在一实施例中,第一区块链节点可以在接收到用户发送的用于指示将智能合约的字节码编译为机器码的指示信息的情况下,再对上述合约部署交易中包含的字节码进行JIT编译,以得到智能合约的机器码。在该实施例中,相当于由用户控制JIT编译的过程,提高了合约升级的可控性。
在另一实施例中,第一区块链节点可以在接收到智能合约部署交易的情况下,判断该智能合约交易中是否包含用于指示将智能合约的字节码编译为机器码的指示标识,并在包含该指示标识的情况下,对合约部署交易中包含的字节码进行JIT编译。在该实施例中,用户只需在合约部署交易中添加相应的指示标识即可告知第一区块链节点“该合约部署交易中的字节码需要进行JIT编译”,而无需如上一实施例额外发送指示信息。
在又一实施例中,第一区块链节点可以根据合约部署交易的发起方或者合约部署交易中包含的业务数据的类型,判断是否需要对合约部署交易中的字节码进行JIT编译。具体的,第一区块链节点可以在确定接收到的合约部署交易由预定义的特定用户发起的情况下,对该合约部署交易中的字节码进行JIT编译;或者,第一区块链节点可以在确定接收到的合约部署交易中包含的业务数据属于预定义的业务类型的情况下,对该合约部署交易中的字节码进行JIT编译。
在本说明书中,还可以根据实际情况确定执行JIT编译的时机。
在一实施例中,第一区块链节点可以在确定智能合约的字节码被部署完成后,开始对智能合约的字节码进行JIT编译。该方式相当于依次执行字节码的部署和字节码的JIT编译。
在另一实施例中,第一区块链节点可以在确定智能合约的字节码被部署完成的情况下,利用相对空闲的时间对智能合约的字节码进行JIT编译。例如,可以在第一区块链节点无需处理交易时,对该智能合约的字节码进行JIT编译。
在又一实施例中,针对字节码的JIT编译和合约部署操作可以并行执行。换言之,合约部署交易中的字节码在被部署至各个区块链节点的过程中,第一区块链节点可以同时对合约部署交易中的字节码进行JIT编译。在该实施例中,由于两个操作并行执行,可以快速获得智能合约的机器码,进而更及时地对已部署的字节码进行合约升级。
在本说明书中,第一区块链节点在对智能合约的字节码进行JIT编译时,可以对合约部署交易中的所有字节码进行编译;或者,第一区块链节点可以利用JIT编译的特性,优先对合约部署交易中的字节码进行热点分析,再对通过热点分析确定出的热点字节码(高频执行的字节码)进行编译;再或者,由于合约代码本身的前后关联性,通常有较大的优化空间,因此,第一区块链节点可以在对智能合约的字节码进行JIT编译时,对合约部署交易中包含的字节码进行优化编译,以提高编译得到的机器码的执行效率。
步骤306,所述区块链网络中的所有区块链节点分别获取所述合约升级交易,并基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
需要声明的是,正如上文所述:区块链中部署的智能合约,通常由用户自行编译后,通过递交合约部署交易的方式完成部署。换言之,智能合约的归属权属于用户个人。因此,在相关技术中,在区块链节点将智能合约编译为机器码后,通常需要用户向相应的区块链节点发送用于表征允许将字节码升级为机器码的升级指示后,区块链节点才能执行将已部署的字节码升级为机器码的操作。然而,在相关技术中,由于需要各个区块链节点分别执行JIT编译的操作,因此,在发送升级指示时,也需要用户向各个区块链节点分别发送升级指示,占用了大量的传输资源。
为此,本说明书中的第一区块链节点可以预先获取合约部署交易发送方的合约升级授权,以便第一区块链节点在完成针对智能合约的JIT编译后,即可自行生成包含编译得到的机器码的合约升级交易,进而对已部署的字节码进行升级。
应当理解的是,在实际操作中,用户在完成字节码的编译后,通常是将包含字节码的合约部署交易发送至区块链网络中的任一节点,以进行智能合约的部署。换言之,负责JIT编译的区块链节点通常不是固定的。因此,用户通常会将合约升级授权授予区块链网络中的所有节点,以使在由任一节点负责JIT编译时,均可基于编译得到的机器码生成合约升级交易。
在实际操作中,区块链网络通常由区块链技术的提供方(也被称为提供区块链技术的平台方)进行维护。因此,在实际的授权过程中,用户只需授予该提供方合约升级授权即可,相当于给区块链网络中的各个节点均授予了合约升级授权。
在本说明书中,区块链网络中的任一区块链节点在将字节码升级为机器码时,需要优先确定智能合约的合约地址,再将合约地址对应的已部署的字节码替换为机器码,以实现智能合约的升级。
在实际应用中,区块链网络中部署的智能合约随时都有可能被用户调用。而在已部署的智能合约被调用时,该智能合约既有可能尚未进行升级,仍以字节码的形式被部署于相应的合约地址中;也有可能已经被升级,以机器码的形式被部署于相应的合约地址中。应当理解的是,对于以不同形式部署的智能合约,需要通过不同的方式进行调用。
具体的,当区块链网络中的第二区块链节点接收到针对智能合约的调用交易时,区块链网络中的所有节点可以对该调用交易进行交易共识,并在共识通过的情况下,所有区块链节点可以根据该调用交易确定所要调用的智能合约的合约地址,以通过该合约地址获取所调用智能合约的合约代码。其中,在获取到的合约代码为字节码的情况下,各个区块链节点可以对该字节码进行解释执行,以实现智能合约的调用;而在获取到的合约代码为机器码的情况下,各个区块链节点可以直接执行获取到的机器码。其中,第三区块链节点既可以与第一区块链节点为同一节点,也可以为不同节点。
需要声明的是,当获取到的合约代码为机器码时,并非必须执行获取到的所有机器码,而是可以根据调用交易中包含的所调用函数/代码块,确定出所需执行的机器码。换言之,可以仅执行获取的智能合约的合约代码中与所调用函数/代码块对应的机器码。
除此之外,为了使区块链网络中的各个区块链节点能够在接收到的合约升级交易对相应的智能合约执行合约升级操作,各个区块链节点所运行的链代码中通常包含有合约升级逻辑代码,该合约升级逻辑代码用于在确定JIT编译已完成的情况下,生成针对智能合约的合约升级交易,以通过该合约升级交易将已部署的合约代码由字节码升级为机器码。
需要强调的是,本说明书中的技术方案既可以应用于区块链技术的传统架构,即区块链网络中的所有区块链节点均通过在相应实体设备上部署区块链代码而形成,大多数情况下,每个节点均对应于一个实体设备;本说明书的技术方案也可以应用于区块链技术中的BaaS(Blockchain as a Service)架构,即区块链网络中的所有节点均通过云服务在云端实现的虚拟机上部署区块链代码而形成,区块链节点无需一一对应于相应的实体设备。
其中,在本说明书的技术方案应用于BaaS架构时,相当于第一区块链节点搭载于虚拟机中,此时,第一区块链节点对应的虚拟机中可以预先部署有JIT编译服务,以用于对智能合约的字节码进行JIT编译。
由上述技术方案可知,本说明书中的区块链网络在获取到合约部署交易后,一方面将该合约部署交易中的字节码部署至各个区块链节点中;另一方面又通过所包含的第一区块链节点对合约部署交易中的字节码进行JIT编译,以得到相应智能合约的机器码。在此基础上,该第一区块链节点即可在JIT编译已完成的情况下,将包含编译得到的机器码的合约升级交易发送至各个区块链节点,以由各个区块链节点分别将已部署的字节码升级为机器码。
应当理解的是,本说明书的技术方案相当于仅通过区块链网络中的一个节点对智能合约的字节码进行JIT编译,并在编译完成后,通过生成合约升级交易的方式,将编译得到的机器码同步至各个区块链节点,以由各个区块链节点将字节码升级为机器码。显然,通过本说明书的技术方案,避免了相关技术中需要各个区块链节点分别执行JIT编译操作的情况,减少了JIT编译对区块链处理资源的占用。
进一步的,本说明书中的区块链节点可以预先获取用户授予的合约升级授权,使得本说明书中的区块链节点在完成JIT编译的情况下,能够基于编译得到的机器码自行生成合约升级交易,进而完成针对智能合约的合约升级操作,避免了相关技术中需要用户向各个区块链节点发送升级指示的情况,进而解决了相关技术中由于交互次数较多而导致的升级效率较低的问题,以及占用大量传输资源的问题。
为实现上述智能合约升级方法,本说明书还提出了一种区块链系统。该区块链系统用于实现上述方案,大多操作方式与上一实施例类似,如何进行JIT编译、如何生成合约升级交易等,均可参照上一实施例的介绍,在下一实施例中不再赘述。
图4为本说明书一示例性实施例示出的一种区块链系统,如图4所示,该区块链系统4包括:多个区块链节点;其中,
所述区块链系统中的各个区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;
所述区块链网络中的任一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并基于所述机器码生成针对所述智能合约的合约升级交易;
所述区块链网络中的所有区块链节点分别获取所述合约升级交易,并基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
如上所述,本说明书需要优先对智能合约的字节码进行部署。在实际操作中,用户可以自行编译智能合约的字节码,并通过向自身使用的客户端发送合约部署请求的方式,使客户端基于该字节码生成合约部署交易。客户端可以将生成的合约部署交易发送至区块链系统4中的任一区块链节点,以使该任一区块链节点对该合约部署交易进行交易共识,并在共识通过后,由各个区块链节点分别对其中包含的字节码进行部署。
如上所述,本说明书中负责对智能合约进行JIT编译的区块链节点可以为区块链系统中的任一节点。例如,该任一区块链节点可以为图4中的节点41,即将节点41作为上一实施例中的第一区块链节点。
如上所述,第一区块链节点可以在接收到上述用户发送的用于指示将智能合约的字节码编译为机器码的指示信息的情况下,再对上述合约部署交易中包含的字节码进行JIT编译,以得到智能合约的机器码。或者,第一区块链节点可以在接收到智能合约部署交易的情况下,判断该智能合约交易中是否包含用于指示将智能合约的字节码编译为机器码的指示标识,并在包含该指示标识的情况下,对合约部署交易中包含的字节码进行JIT编译。再或者,第一区块链节点可以根据合约部署交易的发起方或者合约部署交易中包含的业务数据的类型,判断是否需要对合约部署交易中的字节码进行JIT编译。
如上所述,第一区块链节点可以在确定智能合约的字节码被部署完成后,开始对智能合约的字节码进行JIT编译。第一区块链节点也可以在确定智能合约的字节码被部署完成的情况下,利用相对空闲的时间对智能合约的字节码进行JIT编译。
如上所述,本说明书中的区块链节点可以预先获取合约部署交易发送方的合约升级授权,以便区块链节点在完成针对智能合约的JIT编译后,即可自行生成包含编译得到的机器码的合约升级交易,进而对已部署的字节码进行升级。
如上所述,区块链系统中部署的智能合约随时都有可能被用户调用。而在已部署的智能合约被调用时,该智能合约既有可能尚未进行升级,仍以字节码的形式被部署于相应的合约地址中;也有可能已经被升级,以机器码的形式被部署于相应的合约地址中。具体的,当区块链网络中的第二区块链节点接收到针对智能合约的调用交易时,区块链网络中的所有节点可以对该调用交易进行交易共识,并在共识通过的情况下,所有区块链节点可以根据该调用交易确定所要调用的智能合约的合约地址,以通过该合约地址获取所调用智能合约的合约代码。其中,在获取到的合约代码为字节码的情况下,各个区块链节点可以对该字节码进行解释执行,以实现智能合约的调用;而在获取到的合约代码为机器码的情况下,各个区块链节点可以直接执行获取到的机器码。其中,该第二区块链节点既可以与第一区块链节点为同一节点,如均为节点41;该第二区块链节点也可以与第一区块链节点为不同节点,如为节点42。
如上所述,上述区块链系统既可以基于区块链技术的传统架构,即区块链系统中的所有区块链节点均通过在相应实体设备上部署区块链代码而形成,大多数情况下,每个节点均对应于一个实体设备;上述区块链系统也可以基于区块链技术中的BaaS(Blockchain as a Service)架构,即区块链系统中的所有节点均通过云服务在云端实现的虚拟机上部署区块链代码而形成,区块链节点无需一一对应于相应的实体设备。
由上述区块链系统可知,本说明书中的区块链系统在获取到合约部署交易后,一方面将该合约部署交易中的字节码部署至各个区块链节点中;另一方面又通过所包含的第一区块链节点对合约部署交易中的字节码进行JIT编译,以得到相应智能合约的机器码。在此基础上,该第一区块链节点即可在完成JIT编译的情况下,将包含编译得到的机器码的合约升级交易发送至各个区块链节点,以由各个区块链节点分别将已部署的字节码升级为机器码。通过该方式,避免了相关技术中由于需要在各个区块链节点中分别执行JIT编译而导致的浪费区块链处理资源的问题。
其中,第一区块链节点可以预先获取用户授予的合约升级授权,使得本说明书中的区块链节点可以在JIT编译完成的情况下,基于JIT编译得到的机器码自行生成合约升级交易,进而将已部署的字节码升级为机器码,避免了相关技术中由于需要用户向各个区块链节点发送升级指示,而造成的占用大量传输资源的问题。
接下来,通过具体实施例对本说明书的技术方案进行介绍。
图5是本说明书一示例性实施例示出的一种智能合约升级方法的交互图。该方法可以包括以下步骤:
步骤501,客户端向区块链网络中的第一区块链节点发送合约部署交易。
在本实施例中,用户可以在自身所使用的客户端上编译需要部署的智能合约的字节码。用户在编译好智能合约的字节码后,即可向客户端发起针对该智能合约的部署指示,以使客户端在该部署指示的指示下,基于智能合约的字节码生成合约部署交易。
在实际应用中,客户端上可以包含一合约部署控件,以便用户可以通过该控件向客户端发起合约部署请求。具体的,当客户端在检测到该合约部署控件被触发后,即可确定用户需要将相应的智能合约部署至区块链网络中,因此,可以基于用户编译得到的字节码生成合约部署交易,并将其发送至区块链网络中的第一区块链节点,以通过第一区块链节点将智能合约的字节码部署至各个区块链节点中。其中,该第一区块链节点为区块链网络中的任一节点。
步骤502,第一区块链节点与区块链网络中的其他节点对合约部署交易进行交易共识,以使各个区块链节点对该合约部署交易中包含的字节码进行部署。
应当理解的是,第一区块链节点在接收到合约部署交易后,需要优先对该合约部署交易进行交易共识,并在共识通过的情况下,再将该合约部署交易发送至各个区块链节点,以由各个区块链节点分别对该交易中包含的字节码进行部署。
需要声明的是,各个区块链节点在接收到上述合约部署交易后,会通过将该交易中包含的字节码保存至相应合约地址的方式,以完成对智能合约的部署。
步骤503,第一区块链节点对合约部署交易中的字节码进行JIT编译,以得到相应的机器码。
在本实施例中,可以在对智能合约的字节码进行部署的同时,进行JIT编译;也可以在对智能合约的字节码编译完成后,再进行JIT编译。具体如何对智能合约的字节码进行JIT编译,可由本领域技术人员根据实际需求确定。
步骤504,第一区块链节点基于编译得到的机器码生成合约升级交易。
在本实施例中,区块链网络由区块链技术的提供方进行维护,用户可以预先授予该提供方“针对智能合约的合约升级授权”,以使得区块链网络中的任一区块链节点在完成针对智能合约的字节码的JIT编译后,能够自行基于JIT编译得到的机器码生成合约升级交易。
当然,本实施例仅仅是以由负责JIT编译的第一区块链节点负责生成合约升级交易为例进行介绍。在实际应用中,负责生成合约升级交易的区块链节点和负责JIT编译的区块链节点也可以为不同节点,具体的,第一区块链节点在完成JIT编译后,可以将编译得到的机器码发送至负责生成合约升级交易的区块链节点,以由该区块链节点生成合约升级交易。再进一步的,区块链技术的提供方可以为区块链网络设置一服务器,以通过该服务器对区块链网络进行维护,在此基础上,用户可以仅授予该服务器合约升级授权,因此,第一区块链节点在完成JIT编译后,也可以将编译得到的机器码发送至该服务器,以由该服务器负责生成合约升级交易。具体如何生成合约升级交易可由本领域技术人员根据实际情况确定。
步骤505,第一区块链节点与区块链网络中的其他节点对合约升级交易进行交易共识,以使各个区块链节点将已部署的字节码升级为合约升级交易中包含的机器码。
在本实施例中,第一区块链节点在生成合约升级交易后,即可与区块链网络中的其他节点进行交易共识,并在共识通过的情况下,将合约升级交易发送至其他节点,以由各个区块链节点分别将合约地址中已部署的字节码替换为合约升级交易中的机器码,进而完成针对智能合约的升级。
由上述技术方案可知,用户将编译完成的智能合约发送至区块链节点后,区块链节点一方面会与其他节点对包含该智能合约的合约部署交易进行交易共识,以在共识通过的情况下,由各个区块链节点分别对智能合约的字节码进行部署;另一方面,区块链节点会对字节码进行JIT编译,以得到智能合约的机器码。其中,区块链节点预先获取了用户的合约升级授权,使得区块链节点在完成JIT编译的情况下,可以直接基于编译得到的机器码生成合约升级交易,以通过该合约升级交易将已部署的字节码升级成编译得到的机器码。显然,通过该方法,无需如相关技术需要由各个区块链节点分别执行JIT编译,减少了对区块链处理资源的占用。进一步的,由于区块链节点预先获取了用户授予的合约升级授权,避免了相关技术中需要用户向各个区块链节点发送升级指示的情况,减少了对传输资源的占用。
本发明是参照根据本发明实施例的方法、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (11)
1.一种智能合约升级方法,包括:
区块链网络中的所有区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;
所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并将基于所述机器码生成的针对所述智能合约的合约升级交易发送至所述区块链网络中的所有区块链节点;
所述区块链网络中的所有区块链节点基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
2.根据权利要求1所述的方法,所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,包括:
所述第一区块链节点响应于用户发送的用于指示将所述智能合约的字节码编译为机器码的指示消息,对所述合约部署交易中的字节码进行JIT编译;或者,
所述第一区块链节点在确定所述合约部署交易中包含用于指示将所述智能合约的字节码编译为机器码的指示标识的情况下,对所述合约部署交易中的字节码进行JIT编译;或者,
所述第一区块链节点在确定所述合约部署交易由预定义的特定用户发起的情况下,对所述合约部署交易中的字节码进行JIT编译;或者,
所述第一区块链节点在确定所述合约部署交易中包含的业务数据属于预定义的业务类型的情况下,对所述合约部署交易中的字节码进行JIT编译。
3.根据权利要求1所述的方法,所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,包括:
所述第一区块链节点在确定所述智能合约的字节码被部署完成后,开始对所述智能合约的字节码进行JIT编译;或者,
所述第一区块链节点在确定所述智能合约的字节码被部署完成的情况下,利用相对空闲的时间段对所述字节码进行JIT编译。
4.根据权利要求1所述的方法,所述区块链网络中的第一区块链节点对所述字节码进行JIT编译,包括:
所述第一区块链节点对所述合约部署交易中包含的所有字节码进行编译;和/或,
所述第一区块链节点对所述合约部署交易中包含的字节码进行热点分析,并对得到的热点字节码进行编译;和/或,
所述第一区块链节点对所述合约部署交易中包含的字节码进行优化编译。
5.根据权利要求1所述的方法,所述区块链网络中的任一区块链节点基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码,包括:
所述区块链网络中的任一区块链节点确定所述智能合约的合约地址,并将所述合约地址中已部署的字节码替换为所述机器码。
6.根据权利要求1所述的方法,还包括:
所述区块链网络中的第二区块链节点接收针对所述智能合约的调用交易;所述第二区块链节点与所述第一区块链节点为同一节点或不同节点;
所述所有区块链节点根据所述调用交易确定所述智能合约的合约地址,以获取所述智能合约的合约代码;
所述所有区块链节点在确定所述合约代码为所述字节码的情况下,对所述字节码进行解释执行;
所述所有区块链节点在确定所述合约代码为所述机器码的情况下,直接执行所述机器码。
7.根据权利要求6所述的方法,所述所有区块链节点直接执行所述机器码,包括:
所述所有区块链节点执行所述智能合约中对应所调用函数/代码块的机器码。
8.根据权利要求1所述的方法,所述第一区块链节点预先获取了所述合约部署交易发送方的合约升级授权。
9.根据权利要求1所述的方法,所述第一区块链节点的链代码中包含合约升级逻辑代码,用于指示在确定所述JIT编译已完成的情况下,生成针对所述智能合约的合约升级交易。
10.根据权利要求1所述的方法,所述第一区块链节点搭载于虚拟机,所述虚拟机中预先部署有JIT编译服务,针对所述智能合约的JIT编译通过调用所述JIT编译服务完成。
11.一种区块链系统,包括:多个区块链节点;其中,
所述区块链系统中的各个区块链节点分别获取包含字节码的合约部署交易,并基于所述合约部署交易部署相应的智能合约;
区块链网络中的任一区块链节点对所述字节码进行JIT编译,得到所述智能合约的机器码,并将基于所述机器码生成的针对所述智能合约的合约升级交易发送至所述区块链网络中的所有区块链节点;
所述区块链网络中的所有区块链节点基于所述合约升级交易将所述智能合约对应的合约代码由所述字节码升级为所述机器码。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110510125.9A CN113220326B (zh) | 2021-05-11 | 2021-05-11 | 智能合约升级方法及区块链系统 |
PCT/CN2022/090384 WO2022237590A1 (zh) | 2021-05-11 | 2022-04-29 | 智能合约升级方法及区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110510125.9A CN113220326B (zh) | 2021-05-11 | 2021-05-11 | 智能合约升级方法及区块链系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220326A CN113220326A (zh) | 2021-08-06 |
CN113220326B true CN113220326B (zh) | 2022-09-16 |
Family
ID=77094607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110510125.9A Active CN113220326B (zh) | 2021-05-11 | 2021-05-11 | 智能合约升级方法及区块链系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113220326B (zh) |
WO (1) | WO2022237590A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220326B (zh) * | 2021-05-11 | 2022-09-16 | 支付宝(杭州)信息技术有限公司 | 智能合约升级方法及区块链系统 |
CN114553912A (zh) * | 2022-02-24 | 2022-05-27 | 平安国际智慧城市科技股份有限公司 | 基于区块链的健康档案共享方法、系统、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN111538521A (zh) * | 2020-04-24 | 2020-08-14 | 中国工商银行股份有限公司 | 智能合约部署、交易方法及装置 |
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 |
CN111770116A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点、存储介质 |
CN111770206A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN111770204A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111814202A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107464148A (zh) * | 2017-08-23 | 2017-12-12 | 众安信息技术服务有限公司 | 一种基于联盟链的智能合约升级方法和系统 |
US10880074B2 (en) * | 2018-10-15 | 2020-12-29 | Adobe Inc. | Smart contract platform for generating and customizing smart contracts |
WO2019120316A2 (en) * | 2019-03-26 | 2019-06-27 | Alibaba Group Holding Limited | System and method for implementing different types of blockchain contracts |
EP3701383B1 (en) * | 2019-06-28 | 2021-08-04 | Advanced New Technologies Co., Ltd. | System and method for executing different types of blockchain contracts |
CN111768184A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法及区块链节点 |
CN112866392B (zh) * | 2020-08-31 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点、系统和存储介质 |
CN111770113B (zh) * | 2020-08-31 | 2021-07-30 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和节点设备 |
CN112596754B (zh) * | 2021-03-01 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 区块链智能合约部署方法及装置 |
CN113220327B (zh) * | 2021-05-11 | 2022-09-16 | 支付宝(杭州)信息技术有限公司 | 智能合约升级方法及区块链系统 |
CN113220326B (zh) * | 2021-05-11 | 2022-09-16 | 支付宝(杭州)信息技术有限公司 | 智能合约升级方法及区块链系统 |
-
2021
- 2021-05-11 CN CN202110510125.9A patent/CN113220326B/zh active Active
-
2022
- 2022-04-29 WO PCT/CN2022/090384 patent/WO2022237590A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN111538521A (zh) * | 2020-04-24 | 2020-08-14 | 中国工商银行股份有限公司 | 智能合约部署、交易方法及装置 |
CN111736954A (zh) * | 2020-06-24 | 2020-10-02 | 陈鹏 | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 |
CN111770116A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点、存储介质 |
CN111770206A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN111770204A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
CN111814202A (zh) * | 2020-08-31 | 2020-10-23 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022237590A1 (zh) | 2022-11-17 |
CN113220326A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111770113B (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CN111770206B (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111814202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111770205B (zh) | 一种执行智能合约的方法、区块链节点、系统和存储介质 | |
CN111770116B (zh) | 一种执行智能合约的方法、区块链节点、存储介质 | |
CN111815310B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111768187A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111770204B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN113220326B (zh) | 智能合约升级方法及区块链系统 | |
CN111815330A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111768184A (zh) | 一种执行智能合约的方法及区块链节点 | |
CN111768183B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN111768200A (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
CN111770202B (zh) | 一种执行智能合约的方法、区块链节点和存储介质 | |
CN113220327B (zh) | 智能合约升级方法及区块链系统 | |
CN116931947A (zh) | 一种优化wasm字节码的方法及执行方法、计算机设备及存储介质 |
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 |