技术领域
本发明涉及针对区块链领域,特别是涉及一种基于零知识证明的链上自动执行智能合约中间件系统。
背景技术
预言机是一个链外数据的提供平台,作为智能合约的参数输入来源,能够将链外的数据真实准确的输入到链内,从而保障链上数据的真实性,实现智能合约可信的与外部世界进行交互。传统预言机系统存在不能提供隐私的能力,无法保护用户的数据隐私,无法提供智能合约自动生成、验证服务的问题。
zk-SNARKs全称是“Zero-Knowledge Succinct Non-Interactive Argument ofKnowledge”,是一种带有零知识特性的非交互简洁论证技术,在证明的过程中不透露任何内情。zk-SNARKs技术能应用到很多场景,比如隐私保护、区块链扩容、可验证计算等。
ECDH全称是椭圆曲线迪菲-赫尔曼秘钥交换(Elliptic Curve Diffie–Hellmankey Exchange),主要是用来在一个不安全的通道中建立起安全的共有加密资料,一般来说交换的都是私钥,这个密钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供本发明针对目前技术发展的需求和不足之处,提供一种基于零知识证明的链上自动执行智能合约中间件系统,其特征在于:包含以下组成部分:
(1)数据源模块,定义证明和验证过程中所需的输入数据的参数,验证用户的数据是否来自正确的数据源;
(2)数据证明模块,使用零知识证明zk-SNARKs技术对用户数据进行验证,生成可证明的数据证据;
(3)智能合约代码转换模块,将程序员开发的应用程序转换为可在区块链上运行的智能合约,该智能合约能够验证生成的外部数据证明。
(4)智能合约验证模块,对生成的智能合约进行形式化验证。
具体的,所涉及组成部分(1)验证用户的数据是否来自正确的数据源是通过与ECDH交换的加密密钥进行签名验证,用户与中间件系统之间加密是加密进行传输。所涉及组成部分(1)数据源可以是用户可以通过从外部来源导入数据来用户证明数据如用户的银行余额或资格证书证明等,还可以来自公开的数据源。所涉及组成部分(2),零知识证明zk-SNARKs技术可以是PGHR13、G16和GM17等方案。所涉及组成部分(3),程序员开发的应用程序是通过中间件系统提供的接口来编写中间程序。所涉及组成部分(3),转换生成智能合约过程包括智能合约代码转换模块进行预处理,根据语法规则创建一个带有标记的抽象语法树,并将签名验证转换为零知识证明,生成区块链可运行的智能合约程序。所涉及组成部分(4),程序进行形式化验证是对智能合约建模、分析和验证,采用的方法可以是演绎验证方法也可以是模型检测方法。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为本发明工作示意图。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
下面将附图结合具体实施方式对本发明的技术加以详细说明。
本发明为了解决预言机系统存在不能提供隐私的能力,无法保护用户的数据隐私,无法提供智能合约自动生成、验证服务的问题,提出一种基于零知识证明的链上自动执行智能合约中间件系统,本实施例是以用户银行存款金额证明为例子,本实施例将说明本发明的工作流程,包括:
S01、软件开发人员使用中间件系统提供的智能合约接口编写一个可以获取外部信息的智能合约应用程序,基于该接口实现的程序能够实现获取外部信息的同时保护用户的数据隐私;
S02、中间件系统智能合约代码转换模块,将程序员开发的应用程序转换为可在区块链上运行的智能合约,智能合约代码转换模块通过语法规则创建一个带有标记的抽象语法树,遍历抽象语法树检查类型,基于抽象语法树重构代码,生成可以在区块链运行的智能合约源码;
S03、使用形式化工具对生成的智能合约程序进行形式化验证,通过在一个特制的智能合约虚拟机里运行智能合约字节码来检查合约的安全问题,它使用符号执行技术来检查程序可能的状态;
S04、在区块链上部署通过形式化验证的智能合约程序;
S05、用户通过客户端输入身份凭证信息和数据参数,客户端在本机使用零知识证明zk-SNARKs技术生成证明银行存款金额凭证数据;
S06、中间件系统对用户数据凭证数据进行验证,验证用户的数据是否来自正确的数据源,验证用户的数据是否来有效,在通过验证之后生成可证明的证据;
S07、用户将中间件系统生成可证明的证据上传至区块链,区块链智能合约验证该证据,验证通过之后,能够确认被证明事实的准确性。同时不需要知道用户的隐私数据内容,从而保护用户的隐私。
机译: 基于零知识证明的智能合约认证数据隐私保护方法及系统
机译: 用于与区块链上的支付相关联的有效的加密货币转移的方法和系统,从而导致基于基于智能合约的自动支付的方法和系统
机译: 基于联盟链的智能合约升级方法及系统