CN110111104A - 区块链智能合约实现方法、装置、计算机设备和存储介质 - Google Patents
区块链智能合约实现方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110111104A CN110111104A CN201910327199.1A CN201910327199A CN110111104A CN 110111104 A CN110111104 A CN 110111104A CN 201910327199 A CN201910327199 A CN 201910327199A CN 110111104 A CN110111104 A CN 110111104A
- Authority
- CN
- China
- Prior art keywords
- block chain
- calculated result
- contract
- calculating
- verification data
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3823—Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0283—Price estimation or determination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本申请提供了一种区块链智能合约实现方法、装置、计算机设备和存储介质,其中,该方法包括:区块链网络中的计算节点接收计算发起方发起的计算请求;响应于计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;计算节点向区块链网络发起将计算结果和校验数据上链存储的上链请求,其中,区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。上述方法能够在部署复杂智能合约时有效提高区块链系统性能、提高系统可扩展性以及提升计算正确性。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种区块链智能合约实现方法、装置、计算机设备和存储介质。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
目前,智能合约被广泛应用于区块链网络。为了保证计算的正确性,每个计算操作都需要经过绝大多数节点的重复处理来验证计算的正确性。然而,智能合约特别是复杂智能合约的计算操作执行效率太低,从而影响区块链的共识性能,因而降低系统性能并导致整个系统的可扩展性较差。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种区块链智能合约实现方法、装置、计算机设备和存储介质,以解决现有技术中应用复杂智能合约的区块链系统性能差且可扩展性低的技术问题。
本申请实施例提供了一种区块链智能合约实现方法,包括:区块链网络中的计算节点接收计算发起方发起的计算请求;响应于计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;计算节点向区块链网络发起将计算结果和校验数据上链存储的上链请求,其中,区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。
在一个实施例中,响应于计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据,包括:响应于计算请求,计算节点识别与计算请求对应的计算内容;计算节点将计算内容加入计算池队列中;计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据。
在一个实施例中,计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据,包括:计算节点根据智能合约对计算内容进行计算以生成计算结果;计算节点根据计算结果和智能合约中的公开计算密钥生成校验数据;相应的,区块链网络验证计算结果和校验数据是否正确,包括:区块链网络根据智能合约中的公开验证密钥验证计算结果和校验数据是否正确,其中,公开验证密钥与公开计算密钥一一对应。
在一个实施例中,在区块链网络中的计算节点接收计算发起方发起的计算请求之前,还包括:区块链网络中的节点接收合约开发方发起的将智能合约部署至区块链网络的部署请求;响应于接收到的部署请求,区块链网络中的节点执行智能合约中的初始化函数,以获取智能合约中的公开验证密钥和公开计算密钥;区块链网络中的节点上的合约执行虚拟机将公开验证密钥和公开计算密钥上链存储。
在一个实施例中,智能合约是由合约开发方按照以下步骤生成的:获取预设的可验证计算算法和合约内部逻辑;接收对可验证计算算法和合约内部逻辑进行编译的编译请求;响应于编译请求,对可验证计算算法和合约内部逻辑进行编译,以生成智能合约。
在一个实施例中,合约开发方对可验证计算算法和合约内部逻辑进行编译,以生成智能合约,包括:通过外部函数声明的方式对可验证计算算法程序进行编译,以生成公开验证密钥、公开计算密钥和第一二进制字节代码;对合约内部逻辑进行编译,以生成第二二进制字节代码;将公开验证密钥、公开计算密钥、第一二进制字节代码和第二二进制字节代码链接成智能合约。
在一个实施例中,校验数据为非交互式零知识证明数据。
本申请实施例还提供了一种区块链智能合约实现方法装置,位于区块链网络中的计算节点中,包括:接收模块,用于接收计算发起方发起的计算请求;链下计算模块,用于响应于计算请求,对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;发送模块,用于向区块链网络发起将计算结果和校验数据上链存储的上链请求,其中,区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。
本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的区块链智能合约实现方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的区块链智能合约实现方法的步骤。
在本申请实施例中,提供了一种区块链智能合约实现方法,区块链网络中的计算节点接收计算发起方发起的计算请求;响应于该计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;计算节点向区块链网络发起将计算结果和校验数据上链存储的上链请求,使得区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。上述方法中,基于可验证计算算法生成的智能合约,将耗费时间的复杂计算由区块链网络中的计算节点在链下进行,使得计算效率大大提高,从而能够提高区块链系统性能,进而提高系统可扩展性;另外,计算完成后,计算节点发起上链请求,区块链网络响应于该上链请求验证计算结果和校验数据来验证计算的正确性,并在验证计算正确的情况下,将计算结果和校验数据上链存储,因而可以在链上进行验证,验证时间短,验证效率高而且验证结果更加安全可靠。通过上述方案解决了现有的应用复杂智能合约的区块链系统性能差且可扩展性低的技术问题,达到了有效提高区块链系统性能、提高可扩展性以及提升计算正确性的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1示出了本申请提供的区块链智能合约实现方法的一种应用场景示意图;
图2示出了本申请一实施例中的区块链智能合约实现方法的流程图;
图3示出了本申请一实施例中的区块链智能合约实现方法的顺序图;
图4示出了本申请一实施例中的区块链智能合约实现装置的示意图;
图5示出了本申请一实施例中的计算机设备的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
本申请实施例提供了一种区块链智能合约实现方法,该方法具体可以应用于区块链网络,其中,区块链网络中的计算节点接收计算发起方发出的计算请求,响应于该计算请求计算节点进行链下计算,并向区块链网络中的其他节点发送上链请求,使得区块链网络中的其他节点验证计算是否正确,在确定计算正确的情况下,将计算结果上链,通过由计算节点对计算交易进行链下计算,可以提高计算效率,通过验证计算的正确性可以保证计算结果的正确性,进而能够提升系统性能和区块链的可扩展性。
在一个具体的场景示例中,参阅图1所示。其中,合约开发方基于可验证计算密码算法(例如,SNARK算法等)进行智能合约的开发。在智能合约开发完成后,合约开发方向区块链网络中的出块节点发送部署智能合约的部署请求,出块节点响应于部署请求将智能合约部署至区块链网络。计算发起方向区块链网络发送计算请求,区块链网络中的计算节点响应于该计算请求进行链下计算操作。计算完成后,计算节点向区块链网络中的其他节点发送上链请求以将计算结果上链存储。
其中,区块链网络中包括多个区块链节点,所述多个区块链节点可以包括一个或多个计算节点和普通节点。其中,计算节点可以是具有较高配置的性能好的计算机,可以进行复杂的链下计算操作。上述计算发起方可以为具有存储功能以及网络交互功能的电子设备,也可以为运行于该电子设备中,为存储和网络交互提供支持的软件。上述合约开发方可以为一个具有数据运算、存储功能以及网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件。在本实施方式中并不具体限定上述计算节点、计算发起方和合约开发方的呈现形式。
具体地,如图2所示,示出了本申请一实施例中区块链智能合约实现方法的流程图,该方法可以包括以下步骤:
步骤S201,区块链网络中的计算节点接收计算发起方发起的计算请求。
步骤S202,响应于计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据。
区块链网络中部署有智能合约,为了保证计算的正确性,需要区块链中大多数节点的重复处理来验证计算的正确性。计算发起方向区块链网络中的计算节点发起计算请求。
具体地,在计算节点接收到计算请求后,响应于该计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据。在存在多个计算节点的情况下,多个计算节点可以竞争该计算内容,竞争胜出的计算节点对该计算内容进行链下计算操作。
其中,校验数据用于验证计算结果的正确性。在一些实施例中,所述校验数据可以为非交互式零知识证明数据。智能合约中的可验证计算算法可为任何NP语句生成恒定大小的数学证明数据,并具有极快的验证时间,因此可在链上进行非交互验证,相比于现有的重复计算、交互验证(如Truebit)的验证方式,本方案中的验证速度更快。此外,相比于现有技术中将计算交由第三方可信安全加密硬件设备执行并认为只要带有该安全设备数字签名的计算结果都是正确可靠的,本申请提供的方案中的数学可验证的计算正确性比第三方硬件的计算正确性更安全可靠。
步骤S203,计算节点向区块链网络发起将计算结果和校验数据上链存储的上链请求,其中,区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。
具体地,在根据智能合约对计算内容执行计算操作而获取计算结果和校验数据之后,计算节点向区块链网络发送将该计算结果和校验数据上链存储的上链请求。其中,上链请求中携带有计算结果和校验数据。区块链网络中的其他节点响应于该上链请求,验证计算结果和校验数据是否正确。其中,可以在所述其他节点中的全部节点或大部分节点确定计算结果和校验数据正确的情况下,确定计算结果和校验数据正确。其中,可以由区块链网络中的其他节点上的合约执行虚拟机来验证计算结果和校验数据是否正确。合约执行虚拟机是安装在区块链节点上的虚拟机,用于执行智能合约。在验证结果表明计算结果和校验数据正确的情况下,区块链网络将计算结果和校验数据上链存储。相应的,如果验证结果表明计算结果和校验数据不正确,则不将计算结果和校验数据上链存储。
上述方法中,基于可验证计算算法生成的智能合约,将耗费时间的复杂计算由区块链网络中的计算节点在链下进行,使得计算效率大大提高,从而能够提高区块链系统性能,进而提高系统可扩展性;另外,计算完成后,计算节点发起上链请求,区块链网络响应于该上链请求验证计算结果和校验数据来验证计算的正确性,并在验证计算正确的情况下,将计算结果和校验数据上链存储,因而可以在链上进行验证,验证时间短,验证效率高而且验证结果更加安全可靠。
考虑到现有的区块链系统会对出块的矿工给予奖励,而验证者则没有任何收益,然而,这对比较复杂的智能合约,验证者可能会花费大量的资源却没有任何奖励,结果是,许多验证者会跳过验证过程,保留他们有限的计算资源用于下一个更合适的区块,从而打开了通往严重安全漏洞的大门。对此,本申请可以对计算节点给予奖励,以鼓励计算节点进行计算,从而提高系统安全性。
因此,在本申请一些实施例中,在计算发起方向区块链发起计算请求之前/同时/之后,计算发起方可以将计算费用抵押至合约账户中。相应地,在确定计算结果和校验数据正确的情况下,可以将抵押至合约账户中的计算费用转至执行计算的计算节点的账户。相应地,如果验证计算结果和校验数据不正确,可以将抵押至合约账户中的计算费用返回至计算发起方的账户。通过上述方式,对计算节点给予奖励,可以鼓励计算节点进行计算,并且仅在验证计算结果和校验数据正确的前提下,才将计算费用转至计算节点,可以提高计算的正确性,进而保证系统安全性。
进一步地,在本申请一些实施例中,响应于计算请求,计算节点对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据,可以包括:响应于计算请求,计算节点识别与计算请求对应的计算内容;计算节点将计算内容加入计算池队列中;计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据。
响应于计算请求,计算节点触发计算池队列解析该计算请求,从而将计算内容加入计算池队列中,计算节点对该计算内容进行确认后,对该计算内容进行链下计算操作。其中,多个计算节点可以自行竞争该计算任务,竞争成功的计算节点对计算内容执行计算操作,以获取计算结果和证明数据。通过上述方式,可以识别对应的计算任务并将其加入计算池队列以由计算节点进行计算。
进一步地,在本申请一些实施例中,计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据,可以包括:计算节点根据智能合约对计算内容进行计算以生成计算结果;计算节点根据计算结果和智能合约中的公开计算密钥生成校验数据;相应的,区块链网络验证计算结果和校验数据是否正确,包括:区块链网络根据智能合约中的公开验证密钥验证计算结果和校验数据是否正确,其中,公开验证密钥与公开计算密钥一一对应。
其中,智能合约中包括公开计算密钥和公开验证密钥。计算节点中的合约执行虚拟机执行智能合约中的算法对计算内容进行计算以生成计算结果,然后根据计算结果和公开计算密钥生成校验数据。具体地,可以根据计算参数、计算中间过程数据、计算结果和智能合约中的公开计算密钥生成校验数据。其中,计算参数是由计算发起方输入的参数,计算中间过程数据是在一些计算的中间步骤产生的计算值。相应地,区块链网络中的其他节点在验证计算结果和校验数据是否正确的时候,可以根据公开验证密钥验证计算结果和校验数据是否正确。通过上述方式,可以方便快捷地生成计算结果和校验数据以及验证计算结果和校验数据的正确性。
在区块链网络中的计算节点接收计算发起方的计算请求之前,需要将智能合约部署至区块链网络。因此,在本申请一些实施例中,在区块链网络中的计算节点接收计算发起方发起的计算请求之前,还包括:区块链网络中的节点接收合约开发方发起的将智能合约部署至区块链网络的部署请求;响应于接收到的部署请求,区块链网络中的节点执行智能合约中的初始化函数,以获取智能合约中的公开验证密钥和公开计算密钥;区块链网络中的节点上的合约执行虚拟机将公开验证密钥和公开计算密钥上链存储。其中,区块链网络中的节点可以是将部署请求打包出块的出块节点。通过上述方式,可以将计算开发方开发的智能合约部署至区块链网络,将公开计算密钥和公开验证密钥上链存储,无法被篡改,方便区块链节点的后续访问。
进一步地,在本申请一些实施例中,智能合约是由合约开发方按照以下步骤生成的:获取预设的可验证计算算法和合约内部逻辑;接收对可验证计算算法和合约内部逻辑进行编译的编译请求;响应于编译请求,对可验证计算算法和合约内部逻辑进行编译,以生成智能合约。
其中,可验证计算算法是可以验证计算结果正确性的计算算法,例如SNARK算法。合约内部逻辑可以包括一些内部的转账逻辑。合约开发方获取预设的可验证计算算法和合约内部逻辑,接收对可验证计算算法和合约内部逻辑进行编译的编译请求,并响应于该编译请求,对可验证计算算法和合约内部逻辑进行编译,以生成智能合约。
考虑到可验证计算算法一般比较复杂,为了使编译出来的智能合约比较小以减少链上费用并且提高执行速度,可以使用外部函数声明的方式对智能合约中的可验证计算算法进行编译。因此,在本申请一些实施例中,合约开发方对可验证计算算法和合约内部逻辑进行编译,以生成智能合约,可以包括:通过外部函数声明的方式对可验证计算算法程序进行编译,以生成公开验证密钥、公开计算密钥和第一二进制字节代码;对合约内部逻辑进行编译,以生成第二二进制字节代码;将公开验证密钥、公开计算密钥、第一二进制字节代码和第二二进制字节代码链接成智能合约。
具体地,合约开发方通过外部函数声明的方式对可验证计算算法程序进行编译,以生成公开验证密钥、公开计算密钥和第一二进制字节代码;对合约内部逻辑进行编译,以生成第二二进制字节代码;将公开验证密钥、公开计算密钥、第一二进制字节代码和第二二进制字节代码链接成智能合约。其中,由于合约内部逻辑相对比较简单,所以本申请对合约内部逻辑的编译方式不做限定。相比于现有技术中将可验证计算算法代码直接编译链接到智能合约中,本申请的上述实施例中使用外部函数声明的方式让智能合约顺利编译通过并生成二进制字节码,这些外部函数的实现体将内置编译链接到合约执行虚拟机中,这种方式编译出来的智能合约字节码较小,执行速度更快,从而可以减少链上费用并且提高执行速度。
请参考图3,示出了本申请一实施例中的智能合约执行方法的顺序图。在图3中,计算发起方向区块链网络中的计算节点发起计算请求,并将计算费用抵押至合约账户;计算节点响应于该计算请求,触发计算池队列识别计算请求对应的计算交易,并将该计算交易添加至对应的计算池队列中;计算节点对计算交易确认后进行计算,以获取计算结果和校验数据;计算节点向区块链网络中的其他节点发送上链请求,所述上链请求中携带有计算结果和校验数据;区块链网络中的其他节点验证计算结果和校验数据是否正确并返回验证结果;在确定计算结果和校验数据正确的情况下,区块链网络将计算结果和校验数据上链存储,并将抵押在合约账户的计算费用转至计算节点的账户。
上述实施例中的方法,区块链节点将耗费时间的复杂计算由计算节点进行链下计算操作来执行,计算效率大大提高,从而能够提高区块链系统性能,进而提高系统可扩展性;而且,计算完成后,计算节点向区块链网络发送上链请求,使得区块链网络验证计算结果和校验数据来验证计算的正确性,并在确定计算正确的情况下,将计算结果和校验数据上链存储,因而可以在链上进行验证,验证时间短,验证效率高而且验证结果更加安全可靠。另外,通过对计算节点给予奖励,可以鼓励计算节点参与计算,并且仅在验证计算结果和校验数据正确的前提下,才将计算费用转至计算节点,可以提高计算的正确性,进而保证系统安全性。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
步骤1,开发人员编写特定场景下的可验证计算算法;
步骤2,开发人员对可验证计算算法和内部合约逻辑进行编译,以生成智能合约,其中,内部合约逻辑可以由区块链系统自带,采用外部函数声明的方式对可验证计算算法的程序进行编译;
步骤3,开发人员发起将所述智能合约部署至区块链网络的部署交易请求;
步骤4,区块链网络中的共识节点确认后返回这笔交易请求的哈希值至开发人员;
步骤5,区块链网络中的出块节点执行所述智能合约中的初始化函数,以获取公开验证密钥和公开计算密钥,并生成合约账户;
步骤6,区块链节点上的合约执行虚拟机将所述公开验证密钥和所述公开计算密钥上链存储,无法被篡改,方便区块链节点访问;
步骤7,计算发起方向区块链网络中的计算节点发起可验证计算请求,并将计算费用抵押至合约账户中;
步骤8,所述区块链网络中的共识节点确认后返回交易哈希至所述计算发起方;
步骤9,响应于接收到的可验证计算请求,计算节点解析该可验证计算交易请求,以识别与所述可验证计算请求对应的计算交易并将所述计算交易加入计算池队列中;
步骤10,计算节点对所述计算交易进行计算,以获取计算结果和证明数据;
步骤11,所述计算节点向区块链网络发起把计算结果和证明数据上链的上链交易请求,所述上链交易请求中携带有计算结果和证明数据;
步骤12,区块链网络收到所述上链交易请求,区块链网络中的其他节点根据公开验证密钥调用验证函数验证所述计算结果和证明数据是否正确;
步骤13,在确定所述计算结果和证明和数据正确的情况下,区块链网络中的出块节点将所述计算结果和所述证明数据上链存储,并将所述合约账户中的计算费用转至所述计算节点的账户。
上述实施例中的区块链智能合约实现方法中,相比于现有技术中将可验证计算密码算法代码编译链接到智能合约中,本方案使用外部函数声明的方式使可验证计算算法顺利编译通过并生成二进制字节码,这些外部函数的实现体将内置编译链接到智能合约虚拟机中,通过这种方式使得计算的执行速度更快;同时,基于可验证计算算法生成的智能合约,计算节点将耗费时间的复杂计算放在链下进行,计算效率大大提高,从而能够提高区块链系统性能,进而提高系统可扩展性;而且,计算完成后,区块链网络通过验证计算结果和校验数据来验证计算的正确性,并在确定计算正确的情况下,才将计算结果和校验数据上链存储,因而可以在链上进行验证,验证时间短,验证效率高而且验证结果更加安全可靠。另外,通过对计算节点给予奖励,可以鼓励计算节点参与计算,并且仅在确定计算结果和校验数据正确的前提下,才将计算费用转至计算节点,可以提高计算的正确性,进而保证系统安全性。
基于同一发明构思,本申请实施例中还提供了一种区块链智能合约实现装置,如下面的实施例所述。由于区块链智能合约实现装置解决问题的原理与区块链智能合约实现方法相似,因此区块链智能合约实现装置的实施可以参见区块链智能合约实现方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本申请实施例的区块链智能合约实现装置的一种结构框图,如图4所示,包括:接收模块401、链下计算模块402、发送模块403,位于区块链网络中的计算节点中。下面对该结构进行说明。
接收模块401用于接收计算发起方发起的计算请求。
链下计算模块402用于响应于计算请求,对计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据。
发送模块403用于向区块链网络发送将计算结果和校验数据上链存储的上链请求,其中,区块链网络响应于上链请求验证计算结果和校验数据是否正确,并且在验证计算结果和校验数据正确的情况下,将计算结果和校验数据上链存储。
在本申请一些实施例中,链下计算模块可以具体用于:响应于计算请求,计算节点识别与计算请求对应的计算内容;计算节点将计算内容加入计算池队列中;计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据。
在本申请一些实施例中,计算节点对计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据,可以包括:计算节点根据智能合约对计算内容进行计算以生成计算结果;计算节点根据计算结果和智能合约中的公开计算密钥生成校验数据;相应的,区块链网络验证计算结果和校验数据是否正确,包括:区块链网络根据智能合约中的公开验证密钥验证计算结果和校验数据是否正确,其中,公开验证密钥与公开计算密钥一一对应。
在本申请一些实施例中,所述智能合约实现装置还可以包括部署模块,位于所述区块链网络的出块节点中,所述部署模块具体用于:接收合约开发方发起的将智能合约部署至区块链网络的部署请求;响应于接收到的部署请求,执行智能合约中的初始化函数,以获取智能合约中的公开验证密钥和公开计算密钥;将公开验证密钥和公开计算密钥上链存储。
在本申请一些实施例中,智能合约可以是由合约开发方按照以下步骤生成的:获取预设的可验证计算算法和合约内部逻辑;接收对可验证计算算法和合约内部逻辑进行编译的编译请求;响应于编译请求,对可验证计算算法和合约内部逻辑进行编译,以生成智能合约。
在本申请一些实施例中,合约开发方对可验证计算算法和合约内部逻辑进行编译,以生成智能合约,可以包括:通过外部函数声明的方式对可验证计算算法程序进行编译,以生成公开验证密钥、公开计算密钥和第一二进制字节代码;对合约内部逻辑进行编译,以生成第二二进制字节代码;将公开验证密钥、公开计算密钥、第一二进制字节代码和第二二进制字节代码链接成智能合约。
在本申请一些实施例中,校验数据可以为非交互式零知识证明数据。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:基于可验证计算算法生成的智能合约,将耗费时间的复杂计算由区块链网络中的计算节点在链下进行,使得计算效率大大提高,从而能够提高区块链系统性能,进而提高系统可扩展性;另外,计算完成后,计算节点发起上链请求,区块链网络响应于该上链请求验证计算结果和校验数据来验证计算的正确性,并在验证计算正确的情况下,将计算结果和校验数据上链存储,因而可以在链上进行验证,验证时间短,验证效率高而且验证结果更加安全可靠。通过上述方案解决了现有的应用复杂智能合约的区块链系统性能差且可扩展性低的技术问题,达到了有效提高区块链系统性能、提高可扩展性以及提升计算正确性的技术效果。
本申请实施方式还提供了一种计算机设备,具体可以参阅图5所示的基于本申请实施例提供的区块链智能合约实现方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备51、处理器52、存储器53。其中,所述存储器53用于存储处理器可执行指令。所述处理器52执行所述指令时实现上述任意实施例中所述的区块链智能合约实现方法的步骤。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本申请实施方式中还提供了一种基于区块链智能合约实现方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述区块链智能合约实现方法的步骤。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种区块链智能合约实现方法,其特征在于,包括:
区块链网络中的计算节点接收计算发起方发起的计算请求;
响应于所述计算请求,所述计算节点对所述计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;
所述计算节点向所述区块链网络发起将所述计算结果和校验数据上链存储的上链请求,其中,所述区块链网络响应于所述上链请求验证所述计算结果和校验数据是否正确,并且在验证所述计算结果和校验数据正确的情况下,将所述计算结果和所述校验数据上链存储。
2.根据权利要求1所述的方法,其特征在于,响应于所述计算请求,所述计算节点对所述计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据,包括:
响应于所述计算请求,所述计算节点识别与所述计算请求对应的计算内容;
所述计算节点将所述计算内容加入计算池队列中;
所述计算节点对所述计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据。
3.根据权利要求1所述的方法,其特征在于,所述计算节点对所述计算池队列中的计算内容执行链下计算操作,以获取计算结果和校验数据,包括:
所述计算节点根据所述智能合约对所述计算内容进行计算以生成计算结果;
所述计算节点根据所述计算结果和所述智能合约中的公开计算密钥生成校验数据;
相应的,所述区块链网络验证所述计算结果和校验数据是否正确,包括:所述区块链网络根据所述智能合约中的公开验证密钥验证所述计算结果和校验数据是否正确,其中,所述公开验证密钥与所述公开计算密钥一一对应。
4.根据权利要求3所述的方法,其特征在于,在区块链网络中的计算节点接收计算发起方发起的计算请求之前,还包括:
所述区块链网络中的节点接收合约开发方发起的将智能合约部署至区块链网络的部署请求;
响应于接收到的部署请求,所述区块链网络中的节点执行所述智能合约中的初始化函数,以获取所述智能合约中的公开验证密钥和公开计算密钥;
所述区块链网络中的节点上的合约执行虚拟机将所述公开验证密钥和所述公开计算密钥上链存储。
5.根据权利要求4所述的方法,其特征在于,所述智能合约是由所述合约开发方按照以下步骤生成的:
获取预设的可验证计算算法和合约内部逻辑;
接收对所述可验证计算算法和合约内部逻辑进行编译的编译请求;
响应于所述编译请求,对所述可验证计算算法和合约内部逻辑进行编译,以生成智能合约。
6.根据权利要求5所述的方法,其特征在于,所述合约开发方对所述可验证计算算法和合约内部逻辑进行编译,以生成智能合约,包括:
通过外部函数声明的方式对所述可验证计算算法程序进行编译,以生成公开验证密钥、公开计算密钥和第一二进制字节代码;
对所述合约内部逻辑进行编译,以生成第二二进制字节代码;
将所述公开验证密钥、所述公开计算密钥、所述第一二进制字节代码和所述第二二进制字节代码链接成所述智能合约。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述校验数据为非交互式零知识证明数据。
8.一种区块链智能合约实现装置,其特征在于,位于区块链网络中的计算节点中,包括:
接收模块,用于接收计算发起方发起的计算请求;
链下计算模块,用于响应于所述计算请求,对所述计算请求对应的计算内容执行链下计算操作,以获取计算结果和校验数据;
发送模块,用于向所述区块链网络发起将所述计算结果和校验数据上链存储的上链请求,其中,所述区块链网络响应于所述上链请求验证所述计算结果和校验数据是否正确,并且在验证所述计算结果和校验数据正确的情况下,将所述计算结果和所述校验数据上链存储。
9.一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327199.1A CN110111104A (zh) | 2019-04-23 | 2019-04-23 | 区块链智能合约实现方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910327199.1A CN110111104A (zh) | 2019-04-23 | 2019-04-23 | 区块链智能合约实现方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110111104A true CN110111104A (zh) | 2019-08-09 |
Family
ID=67486183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910327199.1A Pending CN110111104A (zh) | 2019-04-23 | 2019-04-23 | 区块链智能合约实现方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110111104A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110602125A (zh) * | 2019-09-23 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704064A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110933040A (zh) * | 2019-11-05 | 2020-03-27 | 武汉菲旺软件技术有限责任公司 | 基于区块链的数据上链方法、装置、设备及介质 |
CN111339202A (zh) * | 2020-02-28 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN111562906A (zh) * | 2020-04-15 | 2020-08-21 | 杭州云象网络技术有限公司 | 一种基于Noesis逻辑的智能合约开发与验证方法 |
WO2021057005A1 (zh) * | 2019-09-24 | 2021-04-01 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
CN113438237A (zh) * | 2021-06-24 | 2021-09-24 | 上海万向区块链股份公司 | 数据安全协同计算方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018158936A1 (ja) * | 2017-03-03 | 2018-09-07 | 日本電気株式会社 | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム |
CN108694669A (zh) * | 2018-07-18 | 2018-10-23 | 矩阵元技术(深圳)有限公司 | 一种区块链智能合约实现方法及装置 |
CN109154885A (zh) * | 2016-03-21 | 2019-01-04 | 澳大利亚国家Ict有限公司 | 区块链平台上的业务处理执行 |
CN109461076A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链交易方法 |
CN109461075A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链系统 |
-
2019
- 2019-04-23 CN CN201910327199.1A patent/CN110111104A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109154885A (zh) * | 2016-03-21 | 2019-01-04 | 澳大利亚国家Ict有限公司 | 区块链平台上的业务处理执行 |
WO2018158936A1 (ja) * | 2017-03-03 | 2018-09-07 | 日本電気株式会社 | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム |
CN108694669A (zh) * | 2018-07-18 | 2018-10-23 | 矩阵元技术(深圳)有限公司 | 一种区块链智能合约实现方法及装置 |
CN109461076A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链交易方法 |
CN109461075A (zh) * | 2018-10-09 | 2019-03-12 | 哈希(武汉)网络科技有限公司 | 一种区块链系统 |
Non-Patent Citations (2)
Title |
---|
李秉璋: "《C++程序设计教程》", 31 January 2009, 北京理工大学出版社 * |
王成: "基于区块链的保险行业信息系统架构及关键技术研究", 《中国博士学位论文全文数据库 经济与管理科学辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110602125A (zh) * | 2019-09-23 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110602125B (zh) * | 2019-09-23 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
WO2021057005A1 (zh) * | 2019-09-24 | 2021-04-01 | 北京海益同展信息科技有限公司 | 用于发布智能合约的方法和装置 |
CN110704064B (zh) * | 2019-09-30 | 2021-09-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704064A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110933040A (zh) * | 2019-11-05 | 2020-03-27 | 武汉菲旺软件技术有限责任公司 | 基于区块链的数据上链方法、装置、设备及介质 |
CN111339202A (zh) * | 2020-02-28 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN111339202B (zh) * | 2020-02-28 | 2023-05-09 | 百度在线网络技术(北京)有限公司 | 一种数据访问方法、装置、设备及存储介质 |
CN111562906A (zh) * | 2020-04-15 | 2020-08-21 | 杭州云象网络技术有限公司 | 一种基于Noesis逻辑的智能合约开发与验证方法 |
CN111562906B (zh) * | 2020-04-15 | 2023-06-06 | 杭州云象网络技术有限公司 | 一种基于Noesis逻辑的智能合约开发与验证方法 |
CN113438237A (zh) * | 2021-06-24 | 2021-09-24 | 上海万向区块链股份公司 | 数据安全协同计算方法及系统 |
CN113438237B (zh) * | 2021-06-24 | 2023-05-26 | 上海万向区块链股份公司 | 数据安全协同计算方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110111104A (zh) | 区块链智能合约实现方法、装置、计算机设备和存储介质 | |
CN111345004B (zh) | 用于简化可执行指令以优化可验证计算的系统 | |
Ben-Sasson et al. | Computational integrity with a public random string from quasi-linear PCPs | |
KR102396071B1 (ko) | 소프트웨어 시스템의 자동화된 검증 기법 | |
Canetti et al. | Practical delegation of computation using multiple servers | |
US11568257B2 (en) | Secure cloud-based machine learning without sending original data to the cloud | |
Song et al. | Normal forms for some classes of sequential spiking neural P systems | |
JP5409620B2 (ja) | セキュアサーバサイドスクリプティングのためのドメイン固有言語抽象化 | |
Ouchani et al. | A formal verification framework for SysML activity diagrams | |
KR20200021993A (ko) | 블록체인 컴파일러 | |
KR102537774B1 (ko) | 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 | |
Canetti et al. | Refereed delegation of computation | |
Backes et al. | Union and intersection types for secure protocol implementations | |
CN110517147A (zh) | 交易数据处理方法、装置、系统及计算机可读存储介质 | |
CN114389824B (zh) | 基于区块链的可信计算信任链的验证更新方法及装置 | |
CN108154197A (zh) | 实现虚拟场景中图像标注验证的方法及装置 | |
CN108846129A (zh) | 存储数据访问方法、装置及存储介质 | |
CN109684189B (zh) | 区块链智能合约的逻辑验证方法和装置及计算机存储介质 | |
Wachter et al. | Probabilistic model checking modulo theories | |
CN109685507A (zh) | 事务请求有效性识别和发起方法、装置、设备和介质 | |
CN110531989A (zh) | 可信的物联网数据处理方法、系统、设备及存储介质 | |
Phan | Model counting modulo theories | |
Mazurek | EthVer: Formal verification of randomized Ethereum smart contracts | |
Li et al. | Formal and virtual multi-level design space exploration | |
WO2020215195A1 (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40010241 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190809 |