智能合约的执行方法、节点、系统、电子设备及存储介质与流程

文档序号:16090337发布日期:2018-11-27 22:56阅读:398来源:国知局

本申请涉及智能合约技术领域,具体而言,本发明涉及一种智能合约的执行方法、节点、系统、电子设备及存储介质。



背景技术:

智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约是优于传统合约的安全方法,并能够减少与合约相关的其他交易成本。

例如,对于区块链而言,区块链上的所有用户都可以看到基于区块链的智能合约,现有的智能合约需要在区块链所有的节点上执行一次,且所有节点的执行结果完全相同或者执行结果完全相同的节点的数量超过一定数目时,智能合约的执行结果才会被写入区块链中。虽然整个区块链包括很多节点,但整个网络实际的算力相当于一个节点的算力,智能合约的现有执行方式浪费了大量的计算资源。可见,基于智能合约机制的比特币、以太坊等执行智能合约的速度很慢、交易处理速度很慢。



技术实现要素:

本申请的目的旨在至少能解决上述的技术缺陷之一,特别是智能合约执行速度慢的技术缺陷。本申请所采用的技术方案如下:

第一方面,本申请提供了一种智能合约的执行方法,包括:

区块链中的合约执行节点执行待执行智能合约,得到智能合约的执行结果;

合约执行节点生成执行结果的零知识证明信息,将零知识证明信息广播至区块链中的验证节点,以使验证节点对所接收到的零知识证明信息进行验证,并在验证通过时确定智能合约执行成功,其中,验证节点为区块链中除合约执行节点之外的其它节点。

在第一方面的一种可能的实施方式中,合约执行节点生成执行结果的零知识证明信息,包括:合约执行节点通过知识简洁非交互的知识论证(zero-knowledge Succinct Non-Interactive Arguments of Knowledges,zkSNARKs)算法的证明函数对执行结果进行证明,得到零知识证明信息;

验证节点对所接收到的零知识证明信息进行验证为验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

第二方面,本申请提供了一种智能合约的执行方法,包括:

区块链中的验证节点接收合约执行节点发送的待执行智能合约的执行结果的零知识证明信息,其中,验证节点为区块链中除合约执行节点之外的其它节点;

验证节点对零知识证明信息进行验证,若验证通过,则验证节点确定智能合约执行成功。

在第二方面的一种可能的实施方式中,零知识证明信息为合约执行节点通过zkSNARKs算法的证明函数对执行结果进行证明得到的证明信息;

验证节点对零知识证明信息进行验证,包括:验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

第三方面,本申请提供了一种区块链中的合约执行节点,包括:

智能合约执行模块,用于执行待执行智能合约,得到智能合约的执行结果;

证明信息生成模块,用于生成执行结果的零知识证明信息;

证明信息广播模块,用于将零知识证明信息广播至区块链中的验证节点,以使验证节点对所接收到的零知识证明信息进行验证,并在验证通过时确定智能合约执行成功,其中,验证节点为区块链中除合约执行节点之外的其它节点。

在第三方面的一种可能的实施方式中,证明信息生成模块在生成执行结果的零知识证明信息时,具体用于:

通过zkSNARKs算法的证明函数对执行结果进行证明,得到零知识证明信息;

验证节点对所接收到的零知识证明信息进行验证为验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

第四方面,本申请提供了一种区块链中的验证节点,包括:

证明信息接收模块,用于接收区块链中的合约执行节点发送的待执行智能合约的执行结果的零知识证明信息,其中,验证节点为区块链中除合约执行节点之外的其它节点;

证明信息验证模块,用于对零知识证明信息进行验证,若验证通过,则验证节点确定智能合约执行成功。

在第四方面的一种可能的实施方式中,零知识证明信息为合约执行节点通过zkSNARKs算法的证明函数对执行结果进行证明得到的证明信息;

证明信息验证模块在对零知识证明信息进行验证时具体用于:通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

第五方面,本申请提供了一种智能合约的执行系统,该执行系统包括本申请第三方面或第三方面可能的实施方式中所示的合约执行节点,以及本申请第四方面或第四方面可能的实施方式中所示的验证节点。

第六方面,本申请提供了一种区块链,该区块链包括本申请第五方面所示的智能合约的执行系统。

第七方面,本申请提供了一种电子设备,包括处理器和存储器;

存储器,被配置用于存储机器可读指令;

处理器,用于通过调用指令,执行本申请第一方面或第一方面可能的实施方式中所示的智能合约的执行方法,或者执行本申请第二方面或第二方面可能的实施方式中所示的智能合约的执行方法。

第八方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机可以执行本申请第一方面或第一方面可能的实施方式中所示的智能合约的执行方法,或者执行本申请第二方面或第二方面可能的实施方式中所示的智能合约的执行方法。

本申请实施例提供的技术方案带来的有益效果是:本申请实施例提供的方案,在智能合约执行时,只需要合约执行节点执行只能合约,由验证节点对执行结果的零知识证明信息进行验证即可,由于无需区块链中的所有节点都对智能合约进行执行,且验证的速度快于合约执行的速度,因此,通过本申请实施例的方案,能够有效提高智能合约的执行效率,节省了区块链的计算资源。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1示出了本申请实施例提供的一种智能合约的执行方法的流程示意图;

图2示出了本申请实施例提供的另一种智能合约的执行方法的流程示意图;

图3示出了本申请实施例提供的一种区块链中的合约执行节点的结构示意图;

图4示出了本申请实施例提供的一种区块链中的验证节点的结构示意图;

图5示出了本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先对本申请涉及的几个名词进行介绍和解释:

区块链:本质上是一个去中心化的分布式账本数据库,是一串使用密码学方法相关联产生的数据块,每个数据块中包含了网络交易的信息。

节点:参与到区块链网络中进行交易和数据交换的网络节点,是具体联网功能的终端设备或服务器,节点与节点之间通过TCP/IP协议连接。上述终端设备可以指接入终端、用户设备、移动终端、无线通信设备等。

智能合约(Smart contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。一份智能合约由区块链内的多个用户共同参与制定,并通过对等(Peer to Peer,P2P)网络扩散到每个节点,并存入区块链,智能合约定期进行自动机状态检查,将满足触发条件的事务进行验证,达成共识后自动执行并通知用户。

零知识证明:指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

zkSNARKs:zkSNARKs是“零知识简洁非交互的知识认证”的简称,是一种在无需泄露数据本身情况下证明某些数据运算的一种零知识证明,是一种非交互式的零知识证明方案,证明者只需要提供一个字符串以供验证者验证其是否确实知道数据本身。

现有技术中,智能合约是由区块链上的每个节点独立执行的,当条件被触发时,在每一个节点上智能合约都会被执行,这些节点会尝试就他们各自的智能合约代码执行的结果达成共识,只有达成共识后的数据才能够写入区块链,由于需要全部的节点分别独立的执行一次智能合约,导致智能合约的执行速度很慢,且浪费了区块链中大量的计算资源。

本申请提供的智能合约的执行方法、节点、系统、电子设备及存储介质,旨在解决现有技术的如上技术问题。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图1示出了本申请一个实施例中提供的一种智能合约的执行方法的流程示意图。如图1所示,该智能合约的执行方法主要可以包括:

步骤S101:区块链中的合约执行节点执行待执行智能合约,得到智能合约的执行结果;

步骤S102:合约执行节点生成执行结果的零知识证明信息,将零知识证明信息广播至区块链中的验证节点,以使验证节点对所接收到的零知识证明信息进行验证,并在验证通过时确定智能合约执行成功。

可以理解的是,合约执行节点指的即是区块链中触发智能合约执行的节点,由于在区块链中任意一个节点都可能触发智能合约的执行,因此,合约执行节点可以是区块链网络中的任意一个节点。验证节点则是指区块链中除合约执行节点之外的其它节点。

本申请实施例中,在智能合约的执行过程中,只需要由区块链中的合约执行节点执行,生成执行结果的零知识证明信息,而其他验证节点只需要对执行结果的零知识证明信息进行验证,根据验证结果即可确认智能合约是否执行成功。由于该方案不需要所有节点都执行一次智能合约,且由于验证的过程大大快于合约执行的过程,因此,通过本申请实施例的该方案,可有效提高智能合约的处理效率,节省区块链中的计算资源。

区块链由一个个区块(block)组成,区块很像数据库的记录,每个区块都包含一个时间戳和一个与前一区块的链接。区块链中每完成一次交易,区块链中的矿工节点在生成区块时就会统一将交易信息打包至区块链中。合约执行节点在执行并得到智能合约的执行结果之后,智能合约执行完成即完成了一次交易,执行结果会由矿工节点写入到区块链中。由于不同的区块链中区块的生成规则是不同的,因此,对于不同的区块链,执行结果的写入方式也可能是不同的,将执行结果写入区块链的矿工节点可能是合约执行节点,也可能是区块链中的其它节点。

对于任一验证节点,其对执行结果的零知识证明信息验证通过后,该验证节点则认证合约执行节点对智能合约执行成功,如果对执行结果的零知识证明信息的验证未通过,验证节点则认为合约执行节点未执行智能合约,也就说,该验证节点不承认合约执行节点对智能合约的执行结果,认为合约执行节点对智能合约执行失败。在实际应用中,对于不同的区块链,可以根据区块链的数据写入规则,来确定是否将验证结果写入到区块链中。

本申请实施例中,合约执行节点生成执行结果的零知识证明信息,具体可以包括:

合约执行节点通过zkSNARKs算法的证明函数对执行结果进行证明,得到零知识证明信息。

相应的,验证节点对所接收到的零知识证明信息进行验证,为验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

通过零知识证明信息能够使合约执行节点在不告知验证节点执行结果的情况下,使验证节点实现对执行结果的验证,如果验证节点对执行结果的验证通过,则可以使验证节点在不知道执行结果情况下确定智能合约执行成功。具体的,本申请实施例中,合约执行节点和验证节点可以执行零知识证明协议,通过zkSNARKs算法分别生成执行结果的零知识证明信息和完成对零知识证明信息的验证。采用zkSNARKs算法所生成的零知识证明信息的数据量很小,能够提高验证节点对零知识证明信息验证的效率。

图2示出了本申请另一实施例中提供的一种智能合约的执行方法的流程示意图。如图2所示,该智能合约的执行方法主要可以包括:

步骤S201:区块链中的验证节点接收合约执行节点发送的待执行智能合约的执行结果的零知识证明信息;

步骤S202:验证节点对零知识证明信息进行验证,若验证通过,则验证节点确定智能合约执行成功。

本申请实施例中,区块链中的验证节点无需执行智能合约,只需要对接收到的智能合约的执行结果的零知识证明信息进行验证,根据验证结果确定智能合约是否执行成功。由于验证的速度快于智能合约执行的速度,因此,通过本申请实施例的方案,有效提高了智能合约的处理效率,尤其是在节点较多的区块链网络中。

对于任一验证节点,其对执行结果的零知识证明信息验证通过后,该验证节点则认证合约执行节点对智能合约执行成功,如果其对执行结果的零知识证明信息的验证未通过,该验证节点认为合约执行节点未执行智能合约。

本申请实施例中,零知识证明信息为合约执行节点通过zkSNARKs算法的证明函数对执行结果进行证明得到的证明信息。相对应的,验证节点对零知识证明信息进行验证,具体可以包括:

验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

通过zkSNARKs算法生成执行结果的零知识证明信息和完成零知识证明信息的验证,能够有效减小所生成的零知识证明信息的数据量,提高验证的效率。

对应于图1中所示的智能合约的执行方法,本申请实施例中还提供了一种区块链中的合约执行节点,如图3所示,该合约执行节点300可以包括智能合约执行模块310、证明信息生成模块320和证明信息广播模块330。其中:

智能合约执行模块310,用于执行待执行智能合约,得到智能合约的执行结果;

证明信息生成模块320,用于生成执行结果的零知识证明信息;

证明信息广播模块330,用于将零知识证明信息广播至区块链中的验证节点,以使验证节点对所接收到的零知识证明信息进行验证,并在验证通过时确定智能合约执行成功,其中,验证节点为区块链中除合约执行节点之外的其它节点。

本申请实施例中,在智能合约的执行过程中,只需要由合约执行节点执行智能合约,并生成执行结果的零知识证明信息,以使验证节点能够通过对执行结果的零知识证明信息的验证确认智能合约是否执行成功即可。由于不需要所有节点都执行一次智能合约,因此可有效提高智能合约的处理效率,节省区块链中的计算资源。

本申请实施例中,证明信息生成模块320在生成执行结果的零知识证明信息时,可以具体用于:

通过zkSNARKs算法的证明函数对执行结果进行证明,得到零知识证明信息。

相对应的,验证节点对所接收到的零知识证明信息进行验证,为验证节点通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

可以理解的是,本实施例中的合约执行节点的上述各模块具有实现上述图1或基于图1对应实施例中的智能合约的执行方法中的合约执行节点所执行的相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述合约执行节点的各模块的功能描述具体可以参见上述图1或基于图1的智能合约的执行方法中的对应描述,在此不再赘述。

对应于图2中所示的智能合约的执行方法,本申请实施例还提供了一种区块链中的验证节点,如图4所示,该验证节点400可以包括证明信息接收模块410和证明信息验证模块420。其中:

证明信息接收模块410,用于接收区块链中的合约执行节点发送的待执行智能合约的执行结果的零知识证明信息,其中,验证节点为区块链中除合约执行节点之外的其它节点;

证明信息验证模块420,用于对零知识证明信息进行验证,若验证通过,则验证节点确定智能合约执行成功。

本实施例中,对于智能合约的执行,由于验证节点400无需执行智能合约,只需要对其所接收到的智能合约的执行结果的零知识证明信息进行验证,根据验证结果确定智能合约是否执行成功即可,由于验证的速度明显大于合约执行的速度,因此可有效提高智能合约的处理效率。

本申请实施例中,零知识证明信息为合约执行节点通过zkSNARKs算法的证明函数对执行结果进行证明得到的证明信息。相应的,证明信息验证模块420在对零知识证明信息进行验证时,具体用于:

通过与证明函数相对应的zkSNARKs算法的验证函数对零知识证明信息进行验证。

可以理解的是,本实施例中的验证节点的上述各模块具有实现上述图2或基于图2的对应实施例中智能合约的执行方法中的验证节点所执行的相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述合约执行节点的各模块的功能描述具体可以参见上述图2或基于图2的智能合约的执行方法中的对应描述,在此不再赘述。

本申请实施例中还提供了一种智能合约的执行系统,该执行系统可以包括上述本申请任一实施例中所示合约执行节点,以及上述本申请任一实施例中所示的验证节点。

本申请实施例中还提供了一种区块链,该区块链包括本申请实施例所示的智能合约的执行系统。

本申请实施例提供了一种电子设备,如图5所示,图5所示的电子设备2000包括:处理器2001和收发器2004。其中,处理器2001和收发器2004相连,如通过总线2002相连。可选的,电子设备2000还可以包括存储器2003。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。

其中,处理器2001可以应用于本申请实施例中,用于实现图3所示的智能合约执行模块310和证明信息生成模块320的功能。收发器2004包括接收机和发射机,收发器2004可以应用于本申请实施例中,用于实现图3所示的证明信息广播模块330的功能。

处理器2001也可以应用于本申请实施例中,用于实现图4所示的证明信息验证模块420的功能。收发器2004包括接收机和发射机,收发器2004也可以实现图4中所示的证明信息接收模块410的功能。

处理器2001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。

总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是PCI总线或EISA总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器2003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

可选的,存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现图3所示实施例提供的合约执行节点的动作,或者以实现图4所示实施例提供的验证节点的动作。

本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,该指令被处理器执行时实现上述本申请任一实施例中所示的智能合约的执行方法。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1