CN113472512B - 智能合约执行方法、装置、存储介质及电子设备 - Google Patents
智能合约执行方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113472512B CN113472512B CN202110648090.5A CN202110648090A CN113472512B CN 113472512 B CN113472512 B CN 113472512B CN 202110648090 A CN202110648090 A CN 202110648090A CN 113472512 B CN113472512 B CN 113472512B
- Authority
- CN
- China
- Prior art keywords
- resource
- homomorphic
- contract
- binary
- target
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及一种智能合约执行方法、装置、存储介质及电子设备,所述方法包括:响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对第三方功能组件进行转化得到的;将获取到的所述二进制资源转化为可执行文件;执行所述可执行文件,以满足所述功能需求。通过这样的方式,在面临相关的功能需求时,无需在智能合约中编写相应的功能代码,而可以通过调用第三方功能组件的二进制资源的方式实现所述功能。也就是说,可以通过上述技术方案丰富智能合约的功能。
Description
技术领域
本公开涉及区块链技术领域,具体地,涉及一种智能合约执行方法、装置、存储介质及电子设备。
背景技术
区块链技术是一种能够通过去中心化和去信任的方式集体维护一个可靠数据库的技术。在区块链网络中,合约参与方可以制定一系列的智能合约。这样,在合约部署之后,可以通过所述合约自动地执行相关的操作,从而实现相应的功能。
然而,智能合约在实际的应用中还面临着诸多困难。例如,由于开发语言、合约容量等限制因素,智能合约还存在着功能较少的技术问题。
发明内容
本公开的目的是提供一种智能合约执行方法、装置、存储介质及电子设备,以解决上述相关技术问题。
为了实现上述目的,根据本公开实施例的第一方面,提供一种智能合约执行方法,包括:
响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;
从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对第三方功能组件进行转化得到的;
将获取到的所述二进制资源转化为可执行文件;
执行所述可执行文件,以满足所述功能需求。
可选地,所述响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求之前,还包括:
获取所述第三方功能组件;
将所述第三方功能组件的可执行文件转化为二进制资源;
将所述二进制资源保存至区块链中;
记录所述二进制资源的存储位置信息。
可选地,所述将所述二进制资源保存至区块链中,包括:
在所述二进制资源的容量大于区块容量阈值时,将所述二进制资源分割为多个资源分片;
将每一所述资源分片保存至区块链中;
其中,所述存储位置信息包括目标资源分片所处的区块与所述目标资源分片的上一资源分片所处的区块之间的偏移量,所述目标资源分片为所述多个资源分片中的、除第一个资源分片之外的任意资源分片。
可选地,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要,所述同态校验和通过如下方式确定:
针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;
对每一所述密文求和,得到所述同态校验和;
所述从区块链中获取对应于所述功能需求的二进制资源之前,还包括:
根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
确定所述目标同态校验和与所述合约中保存的同态校验和一致。
可选地,所述针对每一所述数字摘要,基于同态加密密钥计算该数字摘要所对应的密文,包括:
通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
所述对每一所述密文求和,包括:通过如下计算式计算同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
可选地,所述目标同态加密密钥通过如下方式确定:
随机确定第一质数以及第二质数,所述第一质数以及所述第二质数的位数相同,且所述第一质数以及所述第二质数的位数大于位数阈值;
将所述第一质数和所述第二质数的乘积作为所述目标同态加密密钥中的参数t;
确定目标随机整数作为所述目标同态加密密钥中的参数g,其中,且参数t整除参数g的阶,为剩余系下存在乘法逆元;
从Zn中确定随机数作为所述目标同态加密密钥中的参数r。
可选地,所述从区块链中获取对应于所述功能需求的二进制资源,包括:
在所述二进制资源的容量大于内存容量阈值时,将所述二进制资源分割为多个二进制资源分片;
依次将所述二进制资源分片加载至内存中进行释放。
根据本公开实施例的第二方面,提供一种智能合约执行装置,包括:
确定模块,用于响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;
资源获取模块,用于从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对第三方功能组件进行转化得到的;
第一资源转化模块,用于将获取到的所述二进制资源转化为可执行文件;
执行模块,用于执行所述可执行文件,以满足所述功能需求。
可选地,所述装置还包括:
功能组件获取模块,用于在所述确定模块确定与所述合约调用请求相对应的功能需求之前,获取所述第三方功能组件;
第二资源转化模块,用于将所述第三方功能组件的可执行文件转化为二进制资源;
资源存储模块,用于将所述二进制资源保存至区块链中;
记录模块,用于记录所述二进制资源的存储位置信息。
可选地,所述资源存储模块,包括:
资源分割子模块,用于在所述二进制资源的容量大于区块容量阈值时,将所述二进制资源分割为多个资源分片;
资源保存子模块,用于将每一所述资源分片保存至区块链中;
其中,所述存储位置信息包括目标资源分片所处的区块与所述目标资源分片的上一资源分片所处的区块之间的偏移量,所述目标资源分片为所述多个资源分片中的、除第一个资源分片之外的任意资源分片。
可选地,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要,所述同态校验和通过如下方式确定:针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;对每一所述密文求和,得到所述同态校验和;
所述装置还包括:
计算模块,用于在所述资源获取模块从区块链中获取对应于所述功能需求的二进制资源之前,根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
校验和确定模块,用于确定所述目标同态校验和与所述合约中保存的同态校验和一致。
可选地,所述针对每一所述数字摘要,基于同态加密密钥计算该数字摘要所对应的密文,包括:
通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
所述对每一所述密文求和,包括:通过如下计算式计算同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
可选地,所述目标同态加密密钥通过如下方式确定:
随机确定第一质数以及第二质数,所述第一质数以及所述第二质数的位数相同,且所述第一质数以及所述第二质数的位数大于位数阈值;
将所述第一质数和所述第二质数的乘积作为所述目标同态加密密钥中的参数t;
确定目标随机整数作为所述目标同态加密密钥中的参数g,其中,且参数t整除参数g的阶,为剩余系下存在乘法逆元;
从Zn中确定随机数作为所述目标同态加密密钥中的参数r。
可选地,所述从区块链中获取对应于所述功能需求的二进制资源,包括:
在所述二进制资源的容量大于内存容量阈值时,将所述二进制资源分割为多个二进制资源分片;
依次将所述二进制资源分片加载至内存中进行释放。
根据本公开实施例的第三方面,提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述第一方面中任一项所述方法的步骤。
上述技术方案至少可以具备如下有益效果:
通过将第三方功能组件转化为二进制资源,从而可以将得到的二进制资源保存在区块链中。这样,合约执行装置在接收到合约调用请求后,可以根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求,并根据所述功能需求从区块链中获取对应的二进制资源。获取到二进制资源之后,可以将获取到的二进制资源转化为可执行文件,并通过执行所述可执行文件的方式满足所述功能需求。通过这样的方式,在面临相关的功能需求时,无需在智能合约中编写相应的功能代码,而可以通过调用第三方功能组件的二进制资源的方式实现所述功能。也就是说,可以通过上述技术方案丰富智能合约的功能。并且,通过将第三方功能组件转化为二进制资源,并将二进制资源转化为可执行文件的方式,也能够突破合约开发语言的限制,从而进一步丰富智能合约的功能。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是本公开一示例性实施例所示出的一种合约的执行示意图。
图2是本公开一示例性实施例所示出的一种智能合约执行方法的流程图。
图3是本公开一示例性实施例所示出的一种智能合约执行方法的流程图。
图4是本公开一示例性实施例所示出的一种数据转换流程的示意图。
图5是本公开一示例性实施例所示出的一种智能合约执行装置的框图。
图6是本公开一示例性实施例所示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
在介绍本公开的智能合约执行方法、装置、存储介质及电子设备之前,首先对本公开的应用场景进行介绍。
智能合约(本公开以下将简称为合约)可以看作一份能够自动执行本需要手动才能完成的任务的协议。通过构造和部署合约,可以在区块链网络中实现多种操作。然而,合约在实际的应用过程中还受到诸多限制,如开发语言的限制、合约容量的限制等等,最终导致合约所能够实现的功能较少。
图1是本公开所示出的一种合约的执行示意图。相关场景中,为了让合约实现更多功能,可以在区块链网络中记录必要的链外环境信息。相应的,合约可以读取这些信息,并调用链外环境的接口,进而由链外环境执行相关的操作。在链外环境执行相关操作后,合约虚拟机可以接收链外环境的执行结果,从而完成合约调用。
值得注意的是,由于链外环境不能保证可信,因此这样的方式还存在着安全性较低的问题。并且,在链外环境变化后,区块链上记录的链外环境信息与实际的链外环境信息也可能不一致,从而影响合约的可用性。此外,合约虚拟机与链外环境的交互过程也可能存在较多的干扰因素,这也导致合约的可用性降低。
为此,本公开提供一种智能合约执行方法。图2是本公开所示出的一种智能合约执行方法的流程图,如图2所示,所述方法包括:
在步骤21中,响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求。
其中,本实施例所提供的方法可以应用于合约执行装置。根据区块链网络的差异,所述合约执行装置可以存在相应的区别。例如,在以太坊中,所述合约执行装置可以是指以太坊虚拟机,在相关联盟链网络中,所述合约执行装置也可以是一些合约容器。
这样,所述接收到合约调用请求可以是指合约执行装置接收到相关的合约调用参数。相应的,所述合约执行装置可以基于所述合约调用参数确定与合约调用请求相关联的功能需求。
应当理解,在合约制定时可以根据需求设置所述合约的功能。这些功能可能是一个或多个,例如访问图片、执行加密操作、执行解密操作等等,本公开对此不做限制。在具体实施时,可以通过不同的调用参数调用合约执行不同的功能。
在步骤22中,从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对第三方功能组件进行转化得到的。
其中,第三方功能组件例如可以是针对不同应用需求开发的处理工具。由于合约对开发语言的限制,这些第三方功能组件通常难以直接在合约执行装置中运行。并且,通过合约开发语言编写实现对应的第三方功能组件的功能的难度也较高。
因此,在本实施例中,可以将第三方功能组件所对应的可执行文件转化为二进制资源,并将所述二进制资源保存在区块链中。例如,针对C语言编写的解密组件,可以将所述解密组件编译为.exe可执行文件,并将所述.exe可执行文件转化为二进制资源保存在区块链中。
这样,在合约调用请求所对应的功能需求为解密的情况下,可以从区块链中获取所述二进制资源。例如在一些实施场景中,可以在合约构建时,将该可执行文件以二进制流的方式嵌入至合约中,并记录相关的资源位置信息。在这种情况下,可以根据合约中保存的资源位置信息获取所述.exe可执行文件的二进制资源。
在步骤23中,将获取到的所述二进制资源转化为可执行文件。
沿用上述例子,可以将获取到的二进制资源重新转化为.exe可执行文件。
这样,在步骤24中,执行所述可执行文件,以满足所述功能需求。
例如,可以执行所述.exe可执行文件,从而实现原本的由C语言编写的解密组件所对应的功能。
上述技术方案通过将第三方功能组件转化为二进制资源,从而可以将得到的二进制资源保存在区块链中。这样,合约执行装置在接收到合约调用请求后,可以根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求,并根据所述功能需求从区块链中获取对应的二进制资源。获取到二进制资源之后,可以将获取到的所述二进制资源转化为可执行文件,并通过执行所述可执行文件的方式满足所述功能需求。
通过这样的方式,在面临相关的功能需求时,无需在智能合约中编写相应的功能代码,而可以通过调用第三方功能组件的二进制资源的方式实现所述功能。也就是说,可以通过上述技术方案丰富智能合约的功能。并且,通过将第三方功能组件转化为二进制资源,并将二进制资源转化为可执行文件的方式,也能够突破合约开发语言的限制。例如在上述实施例中,假设合约开发语言为go语言,采用上述技术方案也能够在合约执行装置中执行原本由C语言编写的解密组件所对应的功能。因此,上述技术方案能够突破合约开发语言的限制,为合约实现更多功能提供了基础。
图3是本公开一示例性实施例所示出的一种智能合约执行方法的流程图,如图3所示,所述方法包括:
S31,获取第三方功能组件。其中,第三方功能组件例如可以是针对不同应用需求开发的处理工具,例如图片访问工具、加密工具、解密工具等等。
S32,将所述第三方功能组件的可执行文件转化为二进制资源。
S33,将所述二进制资源保存至区块链中。
例如,针对C语言编写的解密组件,可以将所述解密组件编译为.exe可执行文件,并将所述.exe可执行文件转化为二进制资源保存在区块链中。
S34,记录所述二进制资源的存储位置信息。
这里,存储位置信息例如可以是对应二进制资源的存储区块的哈希值。这样,在需要获取所述二进制资源时,可以根据所述哈希值查找对应的区块,并进而获取所述区块中存储的二进制资源。
在一些可能的实施场景中,所述二进制资源的容量也可能超出区块的容量限制,在这种情况下,步骤S34还包括:
在所述二进制资源的容量大于区块容量阈值时,将所述二进制资源分割为多个资源分片,将每一所述资源分片保存至区块链中。
其中,资源分片的数量可以基于所述二进制资源的容量以及所述区块容量阈值进行设置。当存在多个资源分片时,为了便于后续对资源分片进行查找,可以保存相邻资源分片所存储的区块之间的偏移量。也就是说,在这种情况下,所述存储位置信息可以包括目标资源分片所处的区块与所述目标资源分片的上一资源分片所处的区块之间的偏移量。所述目标资源分片为所述多个资源分片中的、除第一个资源分片之外的任意资源分片。
S35,响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求。
S36,从区块链中获取对应于所述功能需求的二进制资源。
在一种可能的实施方式中,所述从区块链中获取对应于所述功能需求的二进制资源,包括:
在所述二进制资源的容量大于内存容量阈值时,将所述二进制资源分割为多个二进制资源分片;
依次将所述二进制资源分片加载至内存中进行释放。
也就是说,合约执行装置可以先将部分二进制资源存储到内存中进行释放,并在释放完成后置换内存中的资源。通过这种方式,能够避免因虚拟机内存大小限制导致的资源无法使用的问题。
S37,将获取到的所述二进制资源转化为可执行文件。
S38,执行所述可执行文件,以满足所述功能需求。
关于步骤S35至S38,请参照上述关于图2的实施例说明,为了说明书的简洁,本公开在此不再赘述。
上述技术方案能够将第三方功能组件转化为二进制资源并部署至区块链中,这样,当需要合约执行相关的功能时,可以获取所述二进制资源,并将所述二进制资源转化为可执行文件。这样,通过执行所属于可执行文件,可以在合约中实现第三方功能组件所对应的功能,从而丰富智能合约的功能。并且,这样的方式也能够突破合约开发语言的限制。
此外值得说明的是,为描述的方便和简洁,说明书中所描述的实施例均属于优选实施例,其所涉及的部分并不一定是本发明所必须的。例如,在一些可能的实施方式中,上述步骤S31以及S32也可以由相关的节点执行。相应的,合约执行装置可以获取相关节点计算得到的二进制资源,并将所述二进制资源保存至区块链中。
图4是本公开所示出的一种数据转换流程的示意图,在一些可能的实施方式中,可以通过资源写入合约将资源的二进制流写入区块链账本中,并通过资源调用合约从区块链账本中获取二进制资源,进而还原出可执行文件。
针对所述资源写入合约,所述资源写入合约中例如可以包括以下协议字段:
{
资源名称:
资源所有者:
资源内容:
}
在一些可能的实施方式中,当二进制流的容量较大时,可以将所述二进制流分片存储在多个区块中。在这种情况下,所述资源写入合约中还可以包括字段“距离上一个资源区块(即存储二进制流分片的区块)的偏移量”,以便于后续对各个二进制流分片进行查找。
针对所述资源调用合约,所述资源调用合约中可以存在相关的记录字段,以便于记录资源区块的哈希值。在合约调用时,可以根据所述哈希值从区块链账本中读取和释放对应的资源,进而完成可执行文件的转换。这样,通过执行所述可执行文件,能够满足对应的功能需求。
值得注意的是,上述的资源写入合约以及资源调用合约可以作为同一个合约的不同部分,也可以作为两个不同的合约分别进行部署,本公开对此不做限制。
在一种可能的实施方式中,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要。这里,数字摘要例如可以是对资源分片进行哈希计算得到的哈希值。在合约构建时,合约参与方可以将各资源分片的数字摘要写入至所述合约中的同态校验字段。
此外,还可以通过如下方式确定合约中的同态校验和:
针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;
对每一所述密文求和,得到所述同态校验和。
示例地,所述目标同态加密密钥可以由资源所有方在链下生成,生成的过程可以包括:
随机确定第一质数以及第二质数。其中,所述第一质数以及所述第二质数的位数相同,且所述第一质数以及所述第二质数的位数大于位数阈值。其中,所述位数阈值可以基于应用需求进行设置,例如在一些实施场景中可以将所述位数阈值设置为32,并进而选择所述第一质数和第二质数。
举例来讲,可以确定位数大于32位的第一质数p和第二质数q,其中p和q满足gcd(pq,(p-1)(q-1))=1,从而保证第一质数p和第二质数q的位数一致。其中,gcd()为最大公约数计算函数。
在确定第一质数和第二质数之后,可以将所述第一质数和所述第二质数的乘积作为所述目标同态加密密钥中的参数t。沿用上述例子,t=pq。
此外,还可以确定目标随机整数作为所述目标同态加密密钥中的参数g,并从Zn中确定随机数作为所述目标同态加密密钥中的参数r。其中,且参数t整除参数g的阶,为剩余系下存在乘法逆元。这样,可以得到目标同态加密密钥(t,g,r)。
在确定目标同态加密密钥之后,可以通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
例如,当资源分片的数量为4的情况下,可以分别计算4个资源分片的数字摘要m1、m2、m3以及m4,并通过上述计算式分别计算数字摘要m1、m2、m3以及m4所对应的密文。
这样,可以对每一所述密文求和,得到同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
在计算得到同态校验和以及各资源分片的数字摘要之后,可以将所述同态校验和以及各资源分片的数字摘要保存至合约中,以便于后续校验。
相应的,所述从区块链中获取对应于所述功能需求的二进制资源之前,还包括:
根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
确定所述目标同态校验和与所述合约中保存的同态校验和一致。
应当理解,在具体实施时,所述目标同态加密密钥可以根据需求授权至相应的执行装置。此外,所述同态校验和的计算方式请参照上述实施例中的说明,为了说明书的简洁,本公开在此不做赘述。
值得说明的是,当合约执行装置所拥有的同态加密密钥与所述目标同态加密密钥不同时,则所述合约执行装置计算得到的目标同态校验和与所述合约中保存的同态校验和不一致。类似的,若合约执行装置拥有目标同态加密密钥,但数字摘要出现错误,则合约执行装置计算得到的目标同态校验和也会与所述合约中保存的同态校验和不一致。
因此,当计算得到的目标同态校验和与合约中保存的同态校验和一致时,可以确定所述合约执行装置所拥有的同态加密密钥正确(即合约执行装置具有资源调用的权限),以及所述二进制资源的内容正确。
也就是说,上述技术方案能够同时对资源载入的合法性以及资源的正确性进行验证,从而有助于提升合约的执行效率。并且,这样的同态校验方式还能够在不获取链上存储的二进制资源的原文的情况下对二进制资源的正确性进行验证,从而能够避免验证过程中的数据泄露问题,同时提升验证的速度。
当然,在一些实施场景中,合约执行端也可以基于链上获取到的二进制资源计算数字摘要,并进而计算目标同态校验和。这样,可以通过对比目标同态校验和以及所述合约中保存的同态校验和的方式对资源载入的合法性以及资源的正确性进行验证。
根据同一发明构思,本公开还提供一种智能合约执行装置。图5是本公开所提供的一种智能合约执行装置的框图,如图5所示,所述装置500包括:
确定模块501,用于响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;
资源获取模块502,用于从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对第三方功能组件进行转化得到的;
第一资源转化模块503,用于将获取到的所述二进制资源转化为可执行文件;
执行模块504,用于执行所述可执行文件,以满足所述功能需求。
上述技术方案通过将第三方功能组件转化为二进制资源,从而可以将得到的二进制资源保存在区块链中。这样,合约执行装置在接收到合约调用请求后,可以根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求,并根据所述功能需求从区块链中获取对应的二进制资源。获取到二进制资源之后,可以将获取到的所述二进制资源转化为可执行文件,并通过执行所述可执行文件的方式满足所述功能需求。通过这样的方式,在面临相关的功能需求时,无需在智能合约中编写相应的功能代码,而可以通过调用第三方功能组件的二进制资源的方式实现所述功能。也就是说,可以通过上述技术方案丰富智能合约的功能。并且,通过将第三方功能组件转化为二进制资源,并将二进制资源转化为可执行文件的方式,也能够突破合约开发语言的限制,从而进一步丰富智能合约的功能。
可选地,所述装置500还包括:
功能组件获取模块,用于在所述确定模块确定与所述合约调用请求相对应的功能需求之前,获取所述第三方功能组件;
第二资源转化模块,用于将所述第三方功能组件的可执行文件转化为二进制资源;
资源存储模块,用于将所述二进制资源保存至区块链中;
记录模块,用于记录所述二进制资源的存储位置信息。
可选地,所述资源存储模块,包括:
资源分割子模块,用于在所述二进制资源的容量大于区块容量阈值时,将所述二进制资源分割为多个资源分片;
资源保存子模块,用于将每一所述资源分片保存至区块链中;
其中,所述存储位置信息包括目标资源分片所处的区块与所述目标资源分片的上一资源分片所处的区块之间的偏移量,所述目标资源分片为所述多个资源分片中的、除第一个资源分片之外的任意资源分片。
可选地,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要,所述同态校验和通过如下方式确定:针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;对每一所述密文求和,得到所述同态校验和;
所述装置500还包括:
计算模块,用于在所述资源获取模块502从区块链中获取对应于所述功能需求的二进制资源之前,根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
校验和确定模块,用于确定所述目标同态校验和与所述合约中保存的同态校验和一致。
可选地,所述针对每一所述数字摘要,基于同态加密密钥计算该数字摘要所对应的密文,包括:
通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
所述对每一所述密文求和,包括:通过如下计算式计算同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
可选地,所述目标同态加密密钥通过如下方式确定:
随机确定第一质数以及第二质数,所述第一质数以及所述第二质数的位数相同,且所述第一质数以及所述第二质数的位数大于位数阈值;
将所述第一质数和所述第二质数的乘积作为所述目标同态加密密钥中的参数t;
确定目标随机整数作为所述目标同态加密密钥中的参数g,其中,且参数t整除参数g的阶,为剩余系下存在乘法逆元;
从Zn中确定随机数作为所述目标同态加密密钥中的参数r。
可选地,所述从区块链中获取对应于所述功能需求的二进制资源,包括:
在所述二进制资源的容量大于内存容量阈值时,将所述二进制资源分割为多个二进制资源分片;
依次将所述二进制资源分片加载至内存中进行释放。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开所提供的智能合约执行方法的步骤。
本公开还提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现本公开所提供的智能合约执行方法的步骤。
图6是根据一示例性实施例示出的一种电子设备600的框图。如图6所示,该电子设备600可以包括:处理器601,存储器602。该电子设备600还可以包括多媒体组件603,输入/输出(I/O)接口604,以及通信组件605中的一者或多者。
其中,处理器601用于控制该电子设备600的整体操作,以完成上述的智能合约执行方法中的全部或部分步骤。存储器602用于存储各种类型的数据以支持在该电子设备600的操作,这些数据例如可以包括用于在该电子设备600上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如收发的消息、图片、合约代码等等。该存储器602可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件603可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器602或通过通信组件605发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口604为处理器601和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件605用于该电子设备600与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件605可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的智能合约执行方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的智能合约执行方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器602,上述程序指令可由电子设备600的处理器601执行以完成上述的智能合约执行方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的智能合约执行方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (8)
1.一种智能合约执行方法,其特征在于,包括:
响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;
从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对智能合约之外的第三方功能组件进行转化得到的;
将获取到的所述二进制资源转化为可执行文件;
执行所述可执行文件,以满足所述功能需求;
其中,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要,所述同态校验和通过如下方式确定:
针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;
对每一所述密文求和,得到所述同态校验和;
所述从区块链中获取对应于所述功能需求的二进制资源之前,还包括:
根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
确定所述目标同态校验和与所述合约中保存的同态校验和一致;
所述针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文,包括:
通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
所述对每一所述密文求和,包括:通过如下计算式计算同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
2.根据权利要求1所述的方法,其特征在于,所述响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求之前,还包括:
获取所述第三方功能组件;
将所述第三方功能组件的可执行文件转化为二进制资源;
将所述二进制资源保存至区块链中;
记录所述二进制资源的存储位置信息。
3.根据权利要求2所述的方法,其特征在于,所述将所述二进制资源保存至区块链中,包括:
在所述二进制资源的容量大于区块容量阈值时,将所述二进制资源分割为多个资源分片;
将每一所述资源分片保存至区块链中;
其中,所述存储位置信息包括目标资源分片所处的区块与所述目标资源分片的上一资源分片所处的区块之间的偏移量,所述目标资源分片为所述多个资源分片中的、除第一个资源分片之外的任意资源分片。
4.根据权利要求1所述的方法,其特征在于,所述目标同态加密密钥通过如下方式确定:
随机确定第一质数以及第二质数,所述第一质数以及所述第二质数的位数相同,且所述第一质数以及所述第二质数的位数大于位数阈值;
将所述第一质数和所述第二质数的乘积作为所述目标同态加密密钥中的参数t;
确定目标随机整数作为所述目标同态加密密钥中的参数g,其中,且参数t整除参数g的阶,为剩余系下存在乘法逆元;
从Zn中确定随机数作为所述目标同态加密密钥中的参数r。
5.根据权利要求1所述的方法,其特征在于,所述从区块链中获取对应于所述功能需求的二进制资源,包括:
在所述二进制资源的容量大于内存容量阈值时,将所述二进制资源分割为多个二进制资源分片;
依次将所述二进制资源分片加载至内存中进行释放。
6.一种智能合约执行装置,其特征在于,包括:
确定模块,用于响应于接收到合约调用请求,根据所述合约调用请求中的调用参数确定与所述合约调用请求相对应的功能需求;
资源获取模块,用于从区块链中获取对应于所述功能需求的二进制资源,所述二进制资源是通过对智能合约之外的第三方功能组件进行转化得到的;
第一资源转化模块,用于将获取到的所述二进制资源转化为可执行文件;
执行模块,用于执行所述可执行文件,以满足所述功能需求;
其中,所述二进制资源包括多个资源分片,所述合约中包括同态校验字段以及同态校验和,所述同态校验字段包括每一所述资源分片的数字摘要,所述同态校验和通过如下方式确定:针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文;对每一所述密文求和,得到所述同态校验和;
所述装置还包括:
计算模块,用于在所述资源获取模块从区块链中获取对应于所述功能需求的二进制资源之前,根据拥有的同态加密密钥以及所述同态校验字段计算目标同态校验和;
校验和确定模块,用于确定所述目标同态校验和与所述合约中保存的同态校验和一致;所述针对每一所述数字摘要,基于目标同态加密密钥计算该数字摘要所对应的密文,包括:
通过如下计算式计算数字摘要m所对应的密文cm:
cm=E(m,r)=gmrtmodt2,r∈Zn;
所述对每一所述密文求和,包括:通过如下计算式计算同态校验和c:
其中,所述目标同态加密密钥为(t,g,r),i为数字摘要的数量值,x∈[1,i]且x为整数,mod为求余函数,Zn为整数域。
7.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-5中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110648090.5A CN113472512B (zh) | 2021-06-10 | 2021-06-10 | 智能合约执行方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110648090.5A CN113472512B (zh) | 2021-06-10 | 2021-06-10 | 智能合约执行方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113472512A CN113472512A (zh) | 2021-10-01 |
CN113472512B true CN113472512B (zh) | 2024-11-12 |
Family
ID=77869597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110648090.5A Active CN113472512B (zh) | 2021-06-10 | 2021-06-10 | 智能合约执行方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472512B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096338A (zh) * | 2019-05-10 | 2019-08-06 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN112929396A (zh) * | 2019-12-06 | 2021-06-08 | 顺丰科技有限公司 | 基于区块链的业务处理方法、装置、设备和可读存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9467294B2 (en) * | 2013-02-01 | 2016-10-11 | Symbolic Io Corporation | Methods and systems for storing and retrieving data |
CN108235772B (zh) * | 2017-12-29 | 2021-04-09 | 达闼机器人有限公司 | 基于区块链的数据处理方法、装置、存储介质及电子设备 |
CN109146413A (zh) * | 2018-08-02 | 2019-01-04 | 珠海宏桥高科技有限公司 | 一种基于区块链的智能合约的构建方法 |
CN109271255A (zh) * | 2018-09-25 | 2019-01-25 | 深圳市元征科技股份有限公司 | 资源调度方法、系统及电子设备和存储介质 |
CN109040133A (zh) * | 2018-09-27 | 2018-12-18 | 上海点融信息科技有限责任公司 | 在区块链网络中安装智能合约的方法、装置及存储介质 |
CA3041223C (en) * | 2018-11-27 | 2021-07-13 | Alibaba Group Holding Limited | Function-as-a-service (faas) platform in blockchain networks |
CN109656617A (zh) * | 2018-11-30 | 2019-04-19 | 武汉烽火信息集成技术有限公司 | 一种Web Service前端部署方法、存储介质、电子设备及系统 |
CN109587253B (zh) * | 2018-12-11 | 2021-06-29 | 浙江大学 | 一种基于区块链对文件实现分布式存储的方法 |
PL3610630T3 (pl) * | 2019-03-04 | 2021-07-26 | Advanced New Technologies Co., Ltd. | Interfejs oprogramowania dla umów inteligentnych |
US11410168B2 (en) * | 2019-04-03 | 2022-08-09 | Acronis International Gmbh | Method for user management for blockchain-based operations |
CN110297689B (zh) * | 2019-05-06 | 2021-09-14 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN110390213B (zh) * | 2019-07-31 | 2021-04-16 | 中国工商银行股份有限公司 | 区块链网络环境下智能合约的安全部署方法及系统 |
CN111381938B (zh) * | 2020-05-29 | 2020-09-25 | 支付宝(杭州)信息技术有限公司 | 一种基于基础指令集执行区块链中智能合约的方法及系统 |
CN111880777A (zh) * | 2020-06-23 | 2020-11-03 | 北京三快在线科技有限公司 | 程序信息下发方法、装置、电子设备 |
CN112104709B (zh) * | 2020-08-28 | 2022-06-07 | 腾讯科技(深圳)有限公司 | 智能合约的处理方法、装置、介质及电子设备 |
CN112632573B (zh) * | 2020-12-15 | 2024-06-21 | 东软集团股份有限公司 | 智能合约执行方法、装置、系统、存储介质及电子设备 |
CN112651741B (zh) * | 2021-01-04 | 2024-06-18 | 北京京东乾石科技有限公司 | 基于区块链的数据处理方法和装置 |
CN112905447B (zh) * | 2021-01-22 | 2021-10-26 | 支付宝(杭州)信息技术有限公司 | 一种区块链虚拟机的测试方法和系统 |
-
2021
- 2021-06-10 CN CN202110648090.5A patent/CN113472512B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096338A (zh) * | 2019-05-10 | 2019-08-06 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN112929396A (zh) * | 2019-12-06 | 2021-06-08 | 顺丰科技有限公司 | 基于区块链的业务处理方法、装置、设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113472512A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107819828B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
CN107426165B (zh) | 一种支持密钥更新的双向安全云存储数据完整性检测方法 | |
US20190130190A1 (en) | Media authentication using distributed ledger | |
CN110177124B (zh) | 基于区块链的身份认证方法及相关设备 | |
CN112446039B (zh) | 区块链交易处理方法、装置、设备和存储介质 | |
CN110022315B (zh) | 一种块链式账本中的权重管理方法、装置及设备 | |
CN111769948A (zh) | 基于区块链的链间交互方法、系统、装置和计算机设备 | |
CN112862490B (zh) | 一种异步网络下的输出共识方法 | |
CN111444547B (zh) | 用于数据完整性证明的方法、设备及计算机存储介质 | |
Schöder et al. | VeriStream–a framework for verifiable data streaming | |
US11895222B1 (en) | Systems and methods for data encryption, decryption, and authentication | |
CN110989934B (zh) | 区块链节点数据存储方法、区块链系统及区块链节点 | |
CN111339193B (zh) | 类别的编码方法及装置 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
CN113542405B (zh) | 基于区块链的网络通信系统、方法、设备及存储介质 | |
CN113051622B (zh) | 索引构建方法、装置、设备和存储介质 | |
CN113472512B (zh) | 智能合约执行方法、装置、存储介质及电子设备 | |
US20240163118A1 (en) | Blockchain-based data processing method, device, and readable storage medium | |
CN111444548B (zh) | 用于数据完整性证明的方法、设备及计算机存储介质 | |
CN111147235B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN116915467A (zh) | 基于区块链的数据安全共享系统及方法 | |
CN115391801A (zh) | 区块链系统中加密模块的更新方法、装置及相关产品 | |
CN110597466A (zh) | 区块链节点的控制方法、装置、存储介质和计算机设备 | |
CN111522563A (zh) | 基于区块链的终端升级保护系统及方法 | |
CN110995437A (zh) | 基于etc系统的用户信息录入方法、装置、设备和存储介质 |
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 |