CN117014148A - 一种测试系统及测试零知识证明工具的方法 - Google Patents
一种测试系统及测试零知识证明工具的方法 Download PDFInfo
- Publication number
- CN117014148A CN117014148A CN202310839213.2A CN202310839213A CN117014148A CN 117014148 A CN117014148 A CN 117014148A CN 202310839213 A CN202310839213 A CN 202310839213A CN 117014148 A CN117014148 A CN 117014148A
- Authority
- CN
- China
- Prior art keywords
- contract
- knowledge proof
- zero knowledge
- proof tool
- tool
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 title claims abstract description 58
- 239000004744 fabric Substances 0.000 claims abstract description 115
- 238000004364 calculation method Methods 0.000 claims abstract description 32
- 238000004590 computer program Methods 0.000 claims description 23
- 238000010998 test method Methods 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/3218—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
- H04L9/3221—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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- 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/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- 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/40—Network security protocols
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请属于零知识证明技术领域,尤其涉及一种测试系统以及测试零知识证明工具的方法。系统包括:具有测试框架和测试对象的测试层。测试框架包括集群类模块、合约操作类模块、配置类模块、工具类模块以及数据操作类模块。集群类模块用于部署Fabric区块链。配置类模块用于对Fabric区块链集群的信息进行配置。工具类模块用于将零知识证明工具部署为服务模式。电路文件以及合约文件用于生成触发Fabric区块链的链下计算的隐私合约。通过整合Fabric区块链与零知识证明工具的相关操作,可以通过测试框架完成测试,使Fabric区块链对零知识证明工具进行测试的自动化程度大大提升、降低了测试零知识证明工具的使用门槛。
Description
技术领域
本申请涉及零知识证明技术领域,特别涉及一种测试系统及测试零知识证明工具的方法。
背景技术
零知识证明工具是一种针对零知识证明而使用的工具,零知识证明具体为证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。Fabric区块链是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标,Fabric区块链被建设为一个模块化的、支持可插拔组件的基础联盟链框架。
当前,对零知识证明工具进行测试通常是基于Fabric区块链来进行的,通过命令行界面(Command-Line Interface,CLI)工具,或者shell脚本来部署区块链,因此,测试过程是属于半自动化的状态,在测试过程中如果需要频繁部署Fabric区块链,则需要进行大量的重复性工作。而且,对于Fabric区块链相关的合约操作,使用CLI工具会比较繁琐。
发明内容
本申请提供了一种测试系统及测试零知识证明工具的方法,通过设计一套统一了Fabric区块链的部署、合约操作、零知识证明工具部署等操作的测试框架,使得在基于Fabric区块链对零知识证明工具进行测试时,降低了测试门槛,提高了自动化程度。
所述技术方案如下:
第一方面,本申请实施例提供一种测试系统,所述系统包括具有测试框架和零知识证明工具的测试层。
所述测试框架包括集群类模块、合约操作类模块、配置类模块、工具类模块以及数据操作类模块。
所述集群类模块用于部署Fabric区块链;
所述配置类模块用于对Fabric区块链的信息进行配置以及配置解析;
所述工具类模块用于实例化零知识证明工具,以及为零知识证明工具进行服务模式搭建;
所述数据操作类模块用于提供测试零知识证明工具时使用的电路文件以及合约文件;
所述合约操作类模块用于根据合约文件进行合约类操作;
所述零知识证明工具用于根据电路文件生成隐私合约,隐私合约用于触发所述零知识证明工具在所述Fabric区块链的链下计算。所述链下计算用于测试零知识证明工具。
本申请通过在测试框架中集成集群类模块、合约操作类模块、配置类模块、工具类模块以及数据操作类模块,使用户可以通过调用测试框架中的集群类模块实例化集群类和节点类,从而在计算机节点或容器中部署Fabric区块链。同时调用配置类模块对Fabric区块链集群的信息进行配置以及配置解析。在测试时,同样可以调用测试框架中的工具类模块对零知识证明工具进行实例化,并将零知识证明工具部署为服务模式。测试框架中的电路文件以及合约文件,可以实现合约类操作,电路文件则用于生成触发零知识证明工具的Fabric区块链的链下计算的隐私合约。综上可知,通过整合Fabric区块链与零知识证明工具的相关操作,可以通过测试框架完成测试,使Fabric区块链对零知识证明工具进行测试的自动化程度大大提升、降低了测试零知识证明工具的使用门槛。
在第一方面的一种可能的实现方式中,所述测试框架还包括:日志收集模块和/或报告输出模块。
其中,所述日志收集模块用于收集所述Fabric区块链的日志以及所述零知识证明工具的日志;
其中,所述报告输出模块用于根据所述Fabric区块链的日志以及所述零知识证明工具的日志输出测试报告。
在第一方面的一种可能的实现方式中,所述系统还包括:合约层和执行层,所述合约层包括业务合约和所述隐私合约。
其中,所述合约文件中包括所述业务合约,所述执行层包括所述Fabric区块链;
其中,所述合约层用于根据所述业务合约调用所述隐私合约;
其中,所述执行层用于根据所述隐私合约实现所述零知识证明工具在所述Fabric区块链的所述链下计算。
第二方面,本申请实施例提供了一种测试零知识证明工具的方法,方法包括:
实例化所述零知识证明工具以及将所述零知识证明工具部署为服务模式;
确定电路文件和业务合约;
根据所述电路文件以及实例化的所述零知识证明工具生成隐私合约;
将所述业务合约以及所述隐私合约部署在所述Fabric区块链上;
调用所述业务合约以使得在所述Fabric区块链上进行链下计算,所述链下计算用于测试所述零知识证明工具。
本申请实施例提供的测试零知识证明工具的方法,在上述测试系统的基础上,在计算机节点或容器中部署Fabric区块链,调用配置类模块对Fabric区块链集群的信息进行配置以及配置解析。在测试时调用测试框架中的工具类模块对零知识证明工具进行实例化,并将零知识证明工具部署为服务模式。确定电路文件以及合约文件,以实现合约类操作。使Fabric区块链对零知识证明工具进行测试的自动化程度大大提升、降低了测试零知识证明工具的使用门槛。
在第二方面的一种可能的实现方式中,测试零知识证明工具的方法在实例化零知识证明工具以及将零知识证明工具部署为服务模式之前,还需要计算机节点中部署Fabric区块链。
作为一种示例,所述部署Fabric区块链包括:
配置节点信息,所述节点信息包括区块、通道以及锚节点;
实例化集群类以及节点类。
在第二方面的一种可能的实现方式中,所述确定电路文件和业务合约包括:
编写所述电路文件以及与所述电路文件对应的输入文件;
编写所述业务合约。
在第二方面的一种可能的实现方式中,本申请实施例提供的方法还包括:
调用实例化后的所述零知识证明工具中的监听方法,对所述Fabric区块链上的所述业务合约对应的事件进行监听;
在监听到所述业务合约对应的事件的情况下,进行所述链下计算,并将所述链下计算的计算结果反馈至所述Fabric区块链;
通过所述业务合约调用所述隐私合约对所述计算结果进行验证。
在第二方面的一种可能的实现方式中,本申请实施例提供的方法包括:根据所述链下计算的结果输出测试报告,所述测试报告包括第一测试报告和第二测试报告;
在所述计算结果与预设结果一致的情况下,输出第一测试报告,第一测试报告用于展示零知识证明工具测试成功;
在所述计算结果与所述预设结果不一致的情况下,收集所述Fabric区块链的日志以及所述零知识证明工具的日志,输出第二测试报告,第二测试报告用于展示零知识证明工具测试失败。其中,第二测试报告可以包括用例失败的入口、失败的原因、日志存储位置等。
在第二方面的一种可能的实现方式中,在调用所述业务合约以使得在所述Fabric区块链上进行所述链下计算之前,本申请实施例提供的方法还包括:更新所述业务合约。
第三方面,本申请实施例提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第二方面任一项所述的测试零知识证明工具的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第二方面所述的测试零知识证明工具的方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,当程序在计算机上运行时,使得计算机执行上述第二方面所述的测试零知识证明工具的方法。
第六方面,提供了一种芯片,所述芯片包括处理器,所述处理器和与所述处理器耦合的通信接口,所述处理器用于运行计算机程序或指令,以实现上述所述的测试零知识证明工具的方法,所述通信接口用于与所述芯片之外的其它模块进行通信。
可以理解的是,上述第二方面、第三方面、第四方面、第五方面以及第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种零知识证明工具测试系统的结构示意图;
图2是本申请实施例提供的另一种零知识证明工具测试系统的结构示意图;
图3是本申请实施例提供的一种零知识证明工具测试方法流程示意图;
图4是本申请实施例提供的一种在Fabric区块链上进行链下计算的方法流程示意图;
图5是本申请实施例提供的一种部署Fabric区块链的方法流程示意图;
图6是本申请实施例提供的一种零知识证明工具测试方法的具体实现方式;
图7是本申请实施例提供的另一种零知识证明工具测试方法的具体实现方式;
图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述,在其它情况中,各个实施例中的具体技术细节可以互相参考,在一个实施例中没有描述的具体系统可参考其它实施例。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
在本申请说明书中描述的参考“本申请实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在另一些实施例中”、“本申请一实施例”、“本申请其他实施例”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在一些相关技术中,基于Fabric区块链对零知识证明工具进行测试时,Fabric区块链的部署通常使用命令行界面(Command-Line Interface,CLI)工具,或者shell脚本,这使得零知识证明工具的测试过程为半自动化状态,需要人为的进行大量操作。而且使用CLI工具进行Fabric区块链的合约操作也比较繁琐。在零知识证明工具方面,服务模式的搭建也是通过CLI工具部署,其接口则通过接口测试工具(比如Postman工具)进行调用,同样有自动化程度低的问题。
为了解决在使用Fabric区块链对零知识证明工具测试时的自动化程度低、调用复杂的问题,本申请通过建立一个测试系统,其中包括融合了Fabric区块链的部署、合约操作、零知识证明工具的部署、接口封装以及相关的配置文件、日志类、工具类的测试框架,基于该测试框架的测试方法,使得在使用Fabric区块链对零知识证明工具进行测试时,提高了自动化程度,对零知识证明工具的测试更加简单。
如图1所示,图1为本申请实施例提供一种测试系统的示意图,为了方便说明,仅示出与本申请相关的部分。该系统包括但不限于:测试层10。测试层10包括测试框架101和测试对象102(比如,零知识证明工具)。测试框架101包括集群类模块1011、合约操作类模块1012、配置类模块1013、工具类模块1014以及数据操作类模块1015。
集群类模块1011用于部署Fabric区块链。配置类模块1013用于对Fabric区块链集群的信息进行配置。工具类模块1014用于实例化零知识证明工具,以及为零知识证明工具进行服务模式搭建。数据操作类模块1015用于提供测试零知识证明工具时使用的电路文件以及合约文件,电路文件包括测试使用的电路以及输入文件,合约文件包括测试使用的业务合约。合约操作类模块1012用于实现合约类操作。零知识证明工具实例化后用于根据电路文件生成隐私合约,隐私合约用于触发零知识证明工具的Fabric区块链的链下计算。Fabric区块链的链下计算用于测试零知识证明工具。
Fabric区块链为一种联盟链项目,在本申请中,零知识证明工具支持Fabric区块链的链上验证、链下计算功能,因此Fabric区块链作为一种对零知识证明工具测试的载体。Fabric区块链包括客户端、网络节点(Peer)、排序节点(Orderer)、证书颁发机构(Certificate Authority,CA)节点以及通道(Channel)。
示例性的,客户端用于实现对区块链的操作,比如,客户端可以是命令行界面(Command-Line Interface,CLI)。在本申请实施例中,通过计算机设备调用测试框架101中的各个模块实现对区块链的操作。
示例性的,网络节点部署在计算机节点上,通常分为背书节点(Endorser)和确认节点(Committer)。背书节点用于对交易预案进行校验、模拟背书和背书。确认节点用于校验交易的合法化,以及更新和维护区块链数据和账本状态。
示例性的,排序节点用于对各个节点发来的交易进行排序。
示例性的,CA节点用于提供基于数字证书的身份信息。
示例性的,通道为Fabric区块链中部分成员之间拥有的独立的通信渠道。
集群类模块1011编写了Fabric集群类和节点类,Fabric集群类中包括但不限于:初始化Fabric集群相关配置、启动集群网络、停止集群网络、关闭集群网络、清理集群环境等操作。节点类中包括但不限于:初始化节点、删除节点、更新配置等操作。
示例性的,用户通过计算机调用测试框架101中的集群类模块1011,实例化Fabric集群类和节点类,在计算机节点或容器(比如,Docker)中部署Fabric区块链。
配置类模块1013对Fabric区块链的信息进行配置,包括对信息的配置以及配置信息后对信息的解析,其中,信息的配置包括但不限于:证书配置、通道配置、锚节点配置、集群信息配置等。
工具类模块1014是为了提供一些通用的公共方法,作为工具方法被使用。
示例性的,工具类模块1014中包括但不限于:零知识证明工具操作类。零知识证明工具操作类将零知识证明工具部署为服务模式用于进行测试,以及对零知识证明工具相关接口进行封装,以方便用户直接使用。
数据操作类模块1015中,电路文件包含测试零知识证明工具时使用的正向电路文件、异常电路文件以及输入文件。合约文件包含测试时使用的业务合约。其中,合约文件可以由Java语言、Go语言或者NodeJS语言编写,在本申请中不做限定。
合约操作类模块1012通过对Fabric区块链相关的软件开发工具包(SoftwareDevelopment Kit,SDK)(比如,fabric-sdk-go)进行封装,实现合约类操作。其中,合约类操作包括但不限于:合约部署、合约实例化、合约查询、合约调用、合约升级。
在本申请实施例中,通过在测试框架101中集成集群类模块1011、合约操作类模块1012、配置类模块1013、工具类模块1014以及数据操作类模块1015,使用户可以通过调用测试框架101中的集群类模块1011实例化集群类和节点类,从而在计算机节点或容器中部署Fabric区块链。同时调用配置类模块1013对Fabric区块链集群的信息进行配置以及配置解析。在测试时,同样可以调用测试框架101中的工具类模块1014对零知识证明工具进行实例化,并将零知识证明工具部署为服务模式。测试框架101中的电路文件以及合约文件,可以实现合约类操作,电路文件则用于生成触发零知识证明工具的Fabric区块链的链下计算的隐私合约。综上可知,通过整合Fabric区块链与零知识证明工具的相关操作,可以通过测试框架101完成测试,使Fabric区块链对零知识证明工具进行测试的自动化程度大大提升、降低了测试零知识证明工具的使用门槛。
在其他实施例中,测试框架101中可以包括比图1所示示例更多或更少的模块,或者组合某些模块。图1仅为示例性描述,不能解释为对本申请的具体限制。
在本申请的一种可能的实施例中,如图2所示为本申请实施例提供的另一种测试系统的结构示意图,其中测试框架101还包括:日志收集模块1016和/或报告输出模块1017。
其中,日志收集模块1016用于收集Fabric区块链的日志以及零知识证明工具的日志。报告输出模块1017用于根据Fabric区块链的日志以及零知识证明工具的日志输出测试报告,测试报告用于展示测试结果以及测试过程。
举例说明,当Fabric区块链的链下计算测试零知识证明工具完成时,可验证链下计算的计算结果是否正确。如果计算结果与预期的结果一致,测试系统可以通过调用测试框架101中的日志收集模块1016收集Fabric区块链中的日志,和零知识证明工具的日志,打包备份,并通过报告输出模块1017生成测试报告,测试报告中展示测试成功。
值得说明的是,如果计算结果与预期的结果一致,可以不调用日志收集模块1016和/或报告输出模块1017,换言之,如果未输出测试报告则默认计算结果与预期的结果一致,测试成功。
如果计算结果与预期的结果不一致,测试系统通过调用测试框架101中的日志收集模块1016收集Fabric区块链中的日志,和零知识证明工具的日志,打包备份,并通过报告输出模块1017生成测试报告,测试报告中包括但不限于测试用例失败的入口、失败的原因以及日志存储位置。通过测试报告可以更直观的得出测试失败的原因,以便后续测试人员根据测试报告对零知识证明工具进行修正。
在本申请的一种可能的实施例中,如图2所示,零知识证明工具测试系统还包括:合约层20和执行层30。合约层20包括业务合约201和隐私合约202。执行层30包括Fabric区块链。合约层20用于根据业务合约201调用隐私合约202。执行层30用于根据隐私合约202实现Fabric区块链的链下计算。
其中,业务合约201为用户或测试人员编写的包含业务流程的合约代码,用于实现业务逻辑。
在本申请实施例中,业务合约201可以由Java语言、Go语言以及NodeJs语言编写,在此处不做限定。
隐私合约202为测试对象102(比如,零知识证明工具)根据测试框架101中电路文件生成的。
在本申请实施例中,隐私合约202可以由Java语言、Go语言以及NodeJs语言编写,在此处不做限定。
在一些实施例中,隐私合约202被业务合约201跨合约调用,通过合约操作触发在执行层进行零知识证明工具的链下计算,并根据电路文件中的输入文件在链上验证计算结果的正确性。
图3为本申请实施例提供的一种测试零知识证明工具的方法。图3中的方法的执行主体可以为计算机设备。
在本申请实施例中,计算机设备响应用户操作,调用上述实施例中的零知识证明工具测试系统对零知识证明工具进行测试。如图3所示,零知识证明工具测试方法包括:
步骤301、计算机设备实例化零知识证明工具以及将所述零知识证明工具部署为服务模式。
其中,零知识证明工具的实例化包括但不限于:对电路编译、合约获取、链下计算、链下验证等接口封装的调用。
在本申请的一个实施例中,计算机设备调用测试框架101中的工具类模块1014,其中工具类模块1014中部署有零知识证明工具操作类,通过零知识证明工具操作类实例化零知识证明工具。比如,将实例化后的零知识证明工具记为zkp srv。
其中,服务模式为零知识证明工具用于测试的模式。
在本申请的一个实施例中,计算机设备调用测试框架101中的零知识证明工具操作类,将零知识证明工具部署为服务模式,以便于对零知识证明工具进行测试。
步骤302、计算机设备确定电路文件和业务合约。
在本申请的一个实施例中,计算机设备调用测试框架101中的数据操作类模块1015,编写合约文件、电路文件以及相应的输入文件。
举例说明,当测试场景1时,需要符合场景1的电路文件以及输入文件,则计算机设备调用测试框架101中的数据操作类模块1015,编写符合场景1的电路文件以及相应的输入文件,分别记为circom和input。编写符合场景1的合约文件,具体包括测试时使用的业务合约,合约文件由Go语言编写。
步骤303、计算机设备根据电路文件以及实例化的零知识证明工具生成隐私合约。
在本申请的一个实施例中,计算机设备将测试框架101中的电路文件以及相应的输入文件向实例化的零知识证明工具发送,实例化的零知识证明工具结合电路文件以及输入文件生成隐私合约。
举例说明,计算机设备将电路文件circom和输入文件input分别作为参数文件,发送至零知识证明工具zkp srv,zkp srv通过编译方法完成电路编译。零知识证明工具根据电路文件circom编译后的内容和输入文件input生成隐私合约,并通过零知识证明工具zkpsrv的合约接口反馈至用户。
步骤304、计算机设备将业务合约以及隐私合约部署在Fabric区块链上。
在本申请的一个实施例中,计算机设备将上述步骤302中的合约文件和上述步骤303中的隐私合约部署到Fabric区块链上。
在本申请的一个实施例中,在将合约文件和隐私文件部署到Fabric区块链上之后,方法还包括:调用零知识证明工具中的监听方法,对Fabric区块链上的业务合约事件进行监听。
举例说明,计算机设备调用零知识证明工具zkp srv中的监听方法,将业务合约信息(比如名称)和隐私合约信息(比如名称)作为参数,对Fabric区块链上的业务合约事件进行监听。
步骤305、计算机设备调用业务合约以使得在Fabric区块链上进行链下计算,链下计算用于测试零知识证明工具。
在本申请的一个实施例中,如图4所示为一种在Fabric区块链上进行链下计算的方法示意图,如图4所示,方法具体包括:
S401、计算机设备通过调用测试框架101中的Fabric集群类,向Fabric区块链发送验证交易,触发链下计算事件。
举例说明,计算机设备通过调用测试框架101中的Fabric集群类中的invoke方法,向Fabric区块链发送验证交易,触发链下计算事件。
S402、进行Fabric区块链的链下计算,并将计算结果反馈至Fabric区块链。
举例说明,在触发链下计算事件之后,零知识证明工具zkp srv监听到链下计算事件,并将计算结果进行反馈。
S403、计算机设备通过业务合约调用隐私合约验证计算结果。
举例说明,在链下计算完成后,计算设备调用业务合约,从而调用隐私合约来验证电路文件circom与输入文件input经过链下计算后的计算结果是否正确。
值得说明的是,测试零知识证明工具的方法在实例化零知识证明工具以及将零知识证明工具部署为服务模式之前,还需要计算机节点中部署Fabric区块链。
作为一种示例,部署Fabric区块链的方法如图5所示,方法包括:
S501、计算机设备配置节点相关的信息,节点相关的信息包括但不限于:区块、通道以及锚节点。其中,锚节点可以被通道内的其他任何节点发现和通信。
S502、计算机设备实例化Fabric集群类。
在本申请的一个实施例中,计算机设备调用测试框架101中的集群类模块1011将Fabric集群类实例化。
作为一种示例,计算机设备调用集群类模块1011,根据初始化信息实例一个集群类,记为fabric_cluster。
S503、计算机设备实例化节点类。
在本申请的一个实施例中,计算机设备调用测试框架101中的集群类模块1011,根据初始化信息实例一个节点类,可实现增加节点、删除节点等操作。
S504、计算机设备在实例化Fabric集群类和节点类后,启动集群,完成Fabric区块链的部署。
在本申请实施例中,部署Fabric区块链的方法还可以通过其他实现方式实现,本申请实施例对此不作限制。
图6为本申请实施例提供的一种测试零知识证明工具的方法的具体实现示意图。计算机设备通过调用上述测试系统中的相应模块实现测试,比如测试框架101中的集群类模块、合约操作类模块等如图6所示,测试方法具体实现如下:计算机设备实例化集群类,记为fabric_cluster。计算机设备实例化节点类。计算机设备搭建Fabric集群,完成Fabric区块链的部署。
计算机设备实例化零知识证明工具,记为zkp_srv,并将零知识证明工具部署为服务模式。计算机设备基于测试的场景,编写符合场景的电路文件以及相应的输入文件,分别记为circom和input,同时编写符合场景的业务合约。计算机设备将电路文件circom和输入文件input作为参数文件,发送至零知识证明工具zkp_srv,由zkp srv中的编译方法完成电路编译。零知识证明工具根据电路文件编译后的内容和输入文件,生成隐私合约,并通过zkp_srv的合约接口反馈至计算机设备。
计算机设备分别将业务合约文件和隐私合约部署到Fabric区块链上,并调用zkp_srv中的监听方法,将业务合约名称和隐私合约名称作为参数,实现零知识证明工具对Fabric区块链上的业务合约事件的监听。
计算机设备调用fabric集群类中的invoke方法发送验证交易至Fabric区块链上,触发链下计算事件。zkp srv在监听到这一计算事件后,进行链下计算,并将计算结果返回给Fabric区块链。
计算机设备在链下计算完成后,调用业务合约,通过业务合约调用隐私合约来验证电路文件circom与输入文件input经过链下计算后的计算结果是否正确。
在本申请的一个实施例中,测试零知识证明工具的方法还包括:根据链下计算的结果输出测试报告,测试报告包括第一测试报告和第二测试报告。
在计算结果与预设结果一致的情况下,输出第一测试报告。在计算结果与预设结果不一致的情况下,收集Fabric区块链的日志以及零知识证明工具的日志,输出第二测试报告。
其中,第一测试报告展示零知识证明工具的测试结果与预设结果一致。第二测试报告包括但不限于零知识证明工具测试失败的入口、失败的原因、日志存储位置等。
举例说明,计算机设备调用测试框架101中的日志收集模块1016,收集Fabric区块链中的日志和零知识证明工具的日志,并打包备份。根据Fabric区块链中的日志和零知识证明工具的日志,调用报告输出模块1017生成第一测试报告或第二测试报告。
在本申请的一个实施例中,在测试报告生成之后,还包括:计算机设备清理测试环境以及释放测试资源。
举例说明,计算机设备将电路文件、合约文件以及输入文件释放。
在本申请的一个实施例中,在调用业务合约以使得在Fabric区块链上进行链下计算之前,方法还包括:计算机设备更新业务合约。
在进行上述步骤302时,用户需要修改业务合约,则计算机设备调用测试框架101中的数据操作类模块1015,修改后更新合约文件中的业务合约。
举例说明,当测试场景1时,需要符合场景1的电路文件以及输入文件,则计算机设备调用测试框架101中的数据操作类模块1015,编写符合场景1的电路文件以及相应的输入文件,分别记为circom和input。此时,场景1变为场景2,因此合约文件需要修改为符合场景2的合约文件,修改后将Fabric区块链上的业务合约进行更新。
图7为本申请实施例提供的另一种测试零知识证明工具的方法的示意图,其中,在计算机设备分别将合约文件和隐私合约部署到Fabric区块链上,还包括更新业务合约。其余步骤与上述实施例相同,在此处不做赘述。
图8为本申请实施例提供的一种计算机设备的结构示意图。如图8所示,计算机设备801包括:处理器8011、存储器8012以及存储在存储器8012中并可在处理器8011上运行的计算机程序8013,处理器8011执行计算机程序8013时实现上述实施例中的方法中的步骤。
计算机设备801可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备801可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备801的类型。本领域技术人员可以理解,图8仅仅是计算机设备801的举例,并不构成对计算机设备801的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器8011可以是中央处理单元(Central Processing Unit,CPU),处理器8011还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器8012在一些实施例中可以是计算机设备801的内部存储单元,比如计算机设备801的硬盘或内存。存储器8012在另一些实施例中也可以是计算机设备801的外部存储设备,比如计算机设备801上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器8012还可以既包括计算机设备801的内部存储单元也包括外部存储设备。存储器8012用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器8012还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述零知识证明工具测试方法中各个实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行时实现上述各实施例的零知识证明工具测试方法。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
本申请实施例还提供了一种芯片,芯片包括处理器,处理器与通信接口耦合,处理器用于运行计算机程序或指令,以实现如上述实施例的测试零知识证明工具的方法,通信接口用于与芯片之外的其它模块进行通信。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种测试系统,其特征在于,所述系统包括具有测试框架和零知识证明工具的测试层,所述测试框架包括集群类模块、合约操作类模块、配置类模块、工具类模块以及数据操作类模块;
所述集群类模块用于部署Fabric区块链;
所述配置类模块用于对所述Fabric区块链的信息进行配置;
所述工具类模块用于实例化所述零知识证明工具,以及为所述零知识证明工具进行服务模式搭建;
所述数据操作类模块用于提供测试所述零知识证明工具时使用的电路文件以及合约文件,所述电路文件包括测试使用的电路以及输入文件,所述合约文件包括测试使用的业务合约;
所述合约操作类模块用于根据所述合约文件进行合约类操作;
所述零知识证明工具用于根据所述电路文件生成隐私合约,所述隐私合约用于触发所述零知识证明工具在所述Fabric区块链的链下计算,所述链下计算用于测试所述零知识证明工具。
2.根据权利要求1所述的系统,其特征在于,所述测试框架还包括:日志收集模块和/或报告输出模块;
所述日志收集模块用于收集所述Fabric区块链的日志以及所述零知识证明工具的日志;
所述报告输出模块用于根据所述Fabric区块链的日志以及所述零知识证明工具的日志输出测试报告,所述测试报告用于展示测试结果。
3.根据权利要求1或2所述的系统,其特征在于,所述系统还包括:合约层和执行层,所述合约层包括业务合约和所述隐私合约,
所述合约文件中包括所述业务合约,所述执行层包括所述Fabric区块链;
所述合约层用于根据所述业务合约调用所述隐私合约;
所述执行层用于根据所述隐私合约实现所述零知识证明工具在所述Fabric区块链的所述链下计算。
4.一种测试零知识证明工具的方法,其特征在于,所述方法包括:
实例化所述零知识证明工具以及将所述零知识证明工具部署为服务模式;
确定电路文件和业务合约;
根据所述电路文件以及实例化的所述零知识证明工具生成隐私合约;
将所述业务合约以及所述隐私合约部署在所述Fabric区块链上;
调用所述业务合约以使得在所述Fabric区块链上进行链下计算,所述链下计算用于测试所述零知识证明工具。
5.根据权利要求4所述方法,其特征在于,所述确定电路文件和业务合约包括:
编写所述电路文件以及与所述电路文件对应的输入文件;
编写所述业务合约。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
调用实例化后的所述零知识证明工具中的监听方法,对所述Fabric区块链上的所述业务合约对应的事件进行监听;
在监听到所述业务合约对应的事件的情况下,进行所述链下计算,并将所述链下计算的计算结果反馈至所述Fabric区块链;
通过所述业务合约调用所述隐私合约对所述计算结果进行验证。
7.根据权利要求6所述的方法,其特征在于,所述方法包括:根据所述链下计算的结果输出测试报告,所述测试报告包括第一测试报告和第二测试报告;
在所述计算结果与预设结果一致的情况下,输出所述第一测试报告;
在所述计算结果与所述预设结果不一致的情况下,收集所述Fabric区块链的日志以及所述零知识证明工具的日志,输出所述第二测试报告。
8.根据权利要求4或5所述的方法,其特征在于,在调用所述业务合约以使得在所述Fabric区块链上进行所述链下计算之前,所述方法还包括:
更新所述业务合约。
9.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求4至8任一项所述的测试零知识证明工具的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求4至8任一项所述的测试零知识证明工具的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310839213.2A CN117014148A (zh) | 2023-07-07 | 2023-07-07 | 一种测试系统及测试零知识证明工具的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310839213.2A CN117014148A (zh) | 2023-07-07 | 2023-07-07 | 一种测试系统及测试零知识证明工具的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117014148A true CN117014148A (zh) | 2023-11-07 |
Family
ID=88566443
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310839213.2A Pending CN117014148A (zh) | 2023-07-07 | 2023-07-07 | 一种测试系统及测试零知识证明工具的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117014148A (zh) |
-
2023
- 2023-07-07 CN CN202310839213.2A patent/CN117014148A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10277622B2 (en) | Enterprise level cybersecurity automatic remediation | |
CN107979508A (zh) | 微服务测试方法及装置 | |
US9804952B1 (en) | Application debugging in a restricted container environment | |
US10169203B2 (en) | Test simulation for software defined networking environments | |
CN110058864B (zh) | 微服务的部署方法及装置 | |
CN111324522A (zh) | 一种自动化测试系统及方法 | |
CN111309636B (zh) | 机器人自动化测试系统、方法、构建服务器及存储介质 | |
CN114978940B (zh) | 链路监控及告警方法、装置、计算机设备和存储介质 | |
CN116257438A (zh) | 接口测试用例的更新方法及相关设备 | |
CN109032874A (zh) | 一种内存压力测试方法、装置、终端及存储介质 | |
CN114006815B (zh) | 云平台节点的自动化部署方法、装置、节点及存储介质 | |
US11539612B2 (en) | Testing virtualized network functions | |
US7984335B2 (en) | Test amplification for datacenter applications via model checking | |
CN117041111A (zh) | 车云功能测试方法、装置、电子设备及存储介质 | |
CN115357258B (zh) | 应用的部署方法、装置、存储介质及电子装置 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN117014148A (zh) | 一种测试系统及测试零知识证明工具的方法 | |
CN116521530A (zh) | 单元测试方法、装置、设备、存储介质和产品 | |
CN110362294A (zh) | 开发任务执行方法、装置、电子设备及存储介质 | |
CN113535578B (zh) | 一种cts测试方法、装置及测试设备 | |
CN115185599A (zh) | 基于Golang的项目部署方法、系统及存储介质 | |
CN116501596A (zh) | 应用程序的测试方法及装置 | |
CN111176653B (zh) | 程序编译合包方法、装置、电子设备及存储介质 | |
CN115543491A (zh) | 微服务处理方法和装置 | |
CN112596750A (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 |