一种部署智能合约的方法、区块链节点和存储介质技术

技术编号:25917021 阅读:11 留言:0更新日期:2020-10-13 10:36
本说明书一个或多个实施例提供一种部署智能合约的方法、区块链节点和存储介质。一种部署智能合约的方法实施例包括:区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含所述多个管理方的签名的情况下,完成所述智能合约的部署。

【技术实现步骤摘要】
一种部署智能合约的方法、区块链节点和存储介质
本说明书实施例属于区块链
,尤其涉及一种部署智能合约的方法、区块链节点和存储介质。
技术介绍
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链2.0时代中出现了智能合约,将区块链的应用范围提升到了一个新高度。有了智能合约,区块链能做不再是单一的转账交易,而是还可以调用一段代码,而这段代码可以由用户自定义。
技术实现思路
本说明书在于提供一种部署智能合约的方法、区块链节点和存储介质。本说明书实施例提供的一种部署智能合约的方法、区块链节点和存储介质,通过以下方式实现:一种部署智能合约的方法,包括:区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含所述多个管理方的签名的情况下,完成所述智能合约的部署。一种部署智能合约的方法,包括:区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含预设数量的所述管理方的签名的情况下,完成所述智能合约的部署。一种部署智能合约的区块链节点,执行上述的方法。一种部署智能合约的区块链节点,包括:处理器,>存储器,存储有程序,其中在所述处理器执行所述程序时,执行上述的方法。一种存储介质,用于存储程序,其中所述程序在被执行时进行上述方法的操作。通过上述本说明书的实施例,在将智能合约部署至区块链之前,预先将该智能合约的字节码通过AoT编译为相应的机器码,使得区块链上直接部署智能合约的机器码,从而在调用智能合约时可以基于所部署的机器码实现高效运行。由于机器码自身的特性,使得机器码可执行的操作远多于字节码,随之也会带来更多的风险,比如造成区块链节点处存储的隐私数据的泄露、影响区块链节点的稳定运行等。因而,对于创建智能合约的交易,可以通过限制该交易的发起方账户为多方管理账户(即存在多个管理方),并且基于签名验证的方式确保这些管理方中的至少一部分同意部署智能合约,相当于管理方可以对将智能合约以机器码形式进行部署的行为进行管理,可以避免随意以机器码的形式部署智能合约,从而降低或消除前述的风险。附图说明图1为一个实施例中编译执行和解释执行的原理示意图;图2为一个实施例中解释执行和JIT的原理示意图;图3为一个实施例的创建智能合约的图示过程;图4为一个实施例的调用智能合约的图示过程;图5为一个实施例中创建智能合约和调用智能合约的示意图;图6为一个实施例中的部署智能合约的流程图;图7为一个实施例中的区块链节点的模块结构图;图8为一个实施例中的创建智能合约和调用智能合约的示意图;图9为一个实施例中的创建智能合约和调用智能合约过程中包含虚拟机执行过程的示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。区块链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上直接本文档来自技高网...

【技术保护点】
1.一种部署智能合约的方法,包括:/n区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;/n所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含所述多个管理方的签名的情况下,完成所述智能合约的部署。/n

【技术特征摘要】
1.一种部署智能合约的方法,包括:
区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;
所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含所述多个管理方的签名的情况下,完成所述智能合约的部署。


2.如权利要求1所述的方法,将所述智能合约的字节码通过AoT编译为所述机器码,包括:
对所述智能合约的字节码进行AoT编译的过程中进行优化编译。


3.如权利要求1所述的方法,将所述智能合约的字节码编译为所述机器码,包括:
提交所述交易的客户端将所述智能合约的字节码编译为所述机器码;
所述区块链节点将所述智能合约的字节码编译为所述机器码;或者,
区别于所述区块链节点的另一区块链节点将所述智能合约的字节码编译为所述机器码。


4.如权利要求1所述的方法,
所述发起方账户中记录有自身所属的管理方的信息;或者,
所述发起方账户与管理方的信息之间的映射关系被记录于系统合约中。


5.如权利要求4所述的方法,所述多个管理方的信息包括:所述多个管理方分别对应的管理方公钥。


6.如权利要求1所述的方法,所述区块链节点确定所述交易的发起方账户属于多个管理方,且所述交易包含所述多个管理方的签名,包括:
所述区块链节点通过所述多个管理方分别对应的管理方公钥对所述交易包含的多个签名进行验证,并在签名通过验证的情况下确定所述交易包含所述多个管理方的签名。


7.如权利要求6所述的方法,还包括:
所述区块链节点分别确定所述发起方账户所属的管理方和所述交易包含的签名;
其中,在确定所述发起方账户属于多个管理方、所述交易包含多个签名且管理方与签名的数量一致的情况下,所述区块链节点通过所述多个管理方分别对应的管理方公钥对所述交易包含的多个签名进行验证。


8.一种部署智能合约的方法,包括:
区块链节点接收创建智能合约的交易,所述交易中包括所述智能合约的机器码,所述机器码由所述智能合约的字节码通过AoT编译得到;
所述区块链节点在确定所述交易的发起方账户属于多个管理方,且所述交易包含预设数量的所述管理方的签...

【专利技术属性】
技术研发人员:刘琦
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1