零知识证明编程:用 Circom 和 Groth16 构建证明与验证

在本教程中,我们将介绍如何使用零知识证明(ZKP)技术,特别是 Circom 和 Groth16,来构建和验证证明。作为工作程序员,你将学习从零开始编写基本的 ZKP,并逐步实现复杂的应用。

你是否曾想过如何在群体中保持匿名?就像斑马的条纹帮助它们在群体中隐藏自己,我们在数字世界中也可以利用类似的隐私保护技术。今天,我们将探讨如何使用 ZKP 来证明你的身份而无需泄露个人信息。本文将带你通过 Circom 编程语言和 Groth16 证明协议,逐步实现零知识证明。

环境设置与基本概念

首先,我们需要设置开发环境,并编写一个简单的 ZKP 程序。我们的目标是快速理解如何构建、生成和验证证明。

  1. 环境准备

    克隆示例仓库并运行准备脚本:

    bash
    复制代码
    git clone git@github.com:oskarth/zkintro-tutorial.git cd zkintro-tutorial less ./scripts/prepare.sh ./scripts/prepare.sh
  2. 编写电路

    我们将编写一个简单的 Circom 电路,用于计算两个输入的乘积:

    circom
    复制代码
    pragma circom 2.0.0; template Multiplier2 () { signal input a; signal input b; signal output c; c <== a * b; } component main = Multiplier2();
    • pragma circom 2.0.0;:定义 Circom 的版本。
    • template Multiplier2:模板定义了一个乘法器。
    • signal input和signal output:定义输入和输出信号。
    • c <== a * b;:定义约束,确保输出c等于a和b的乘积。
  3. 编译电路

    使用 Circom 编译电路:

    bash
    复制代码
    circom example1.circom --r1cs --wasm

    这将生成example1.r1cs和example1.wasm文件,包含证明所需的数学对象和协议信息。

生成与验证证明

  1. 生成证明

    运行以下命令生成证明:

    bash
    复制代码
    just generate_proof example1

    生成的证明将显示为简短的数学对象,体现了 ZKP 的简洁性。

  2. 验证证明

    使用以下命令验证证明:

    bash
    复制代码
    just verify_proof example1

    验证过程不会接触到任何私有输入,确保了隐私保护。

改进与挑战

我们将通过添加额外约束来改进电路,例如,确保输入不等于 1。更新电路文件example2.circom,并使用IsZero()函数来表达这一约束。

代码示例:

circom
复制代码
include "circomlib/circuits/comparators.circom"; template CheckNotOne(signal input x) { signal output result; result <== IsZero(x - 1); }
  1. 生成与验证新证明

    运行:

    bash
    复制代码
    just generate_proof example2 just verify_proof example2

    如果输入违反了新约束,证明生成将失败。

数字签名与 ZKP

数字签名用于在互联网中验证身份。通过公钥密码学生成私钥和公钥,利用私钥生成签名并验证签名。ZKP 可用于增强数字签名的隐私保护。

  1. 生成密钥对

    使用just generate_identity生成身份密钥对。

  2. 签名与验证

    编写电路以签名消息并验证签名:

    circom
    复制代码
    include "circomlib/circuits/poseidon.circom"; component main {public [identity_commitment, message]} = SignMessage();

    生成签名并验证:

    bash
    复制代码
    just generate_proof example3 just verify_proof example3

总结与练习

你已经完成了从零开始编写 ZKP 程序的过程,包括生成和验证证明的各个步骤。接下来,尝试回答以下问题:

  • ZKP 的两个关键属性是什么?
  • 证明者和验证者的角色和输入是什么?
  • c <== a * b;行的作用是什么?

通过以上练习,你将对 ZKP 的工作原理有更深入的理解,并能在实际应用中实现更复杂的隐私保护技术。

参考文献

希望这篇文章能帮助你掌握零知识证明的基本原理,并在实际项目中应用这些技术。

24小时热点

萨尔瓦多宣布对比特币收益和外国收入实行0%税率

币界网消息,萨尔瓦多宣布对比特币收益和外国收入实行0%税率, ...

0

ETH合约近4小时主动买入成交占比为53.85%

币界网数据:ETHUSDT永续合约最近4个完整小时的主动买入 ...

0

BTC过去24小时资金净流出1,348.7237 BTC

币界网数据:BTC过去24小时资金流入7,293.8969 ...

0

美国总统特朗普:我可能不得不彻底解决伊朗问题,也可能与伊朗达成协议

币界网消息,美国总统特朗普:我可能不得不彻底解决伊朗问题,也 ...

0

美国总统特朗普:(关于星链)我已与马斯克通话

币界网消息,美国总统特朗普:(关于星链)我已与马斯克通话。

0

BTC合约近4小时主动买入成交占比为57.2%

币界网数据:BTCUSDT永续合约最近4个完整小时的主动买入 ...

115

Electrum披露高危漏洞,用户资金面临风险

币界网消息,Electrum披露其4.8.3版本前存在高危漏 ...

0

TS Lombard:AI崩溃可能导致标普500下跌30%

币界网消息,TS Lombard警告称,AI支出崩溃可能触发 ...

0

ETH/BTC比率报0.029065

币界网数据:同一时点的市场行情显示,1 ETH约合0.029 ...

170

Tether获得15家比特币矿业巨头支持

币界网消息,据Cointelegraph报道,Tether最 ...

0

热点专题

谁在真正操控 ASTER 币?从项目方到资本,拆解背后的核心力量

回到核心问题:谁在真正操控 ASTER 币?答案是 —— 不 ... 置顶

88356

千元人民币能买多少 USDT?2025 年汇率、手续费与实操全解析

千元人民币买 USDT 的核心是 “盯汇率、选对渠道、避风险 ... 置顶

84888

黄金支持代币是什么?关键性答案抢先看

从目前的发展来看,黄金支持代币正处于快速成长阶段,随着监管政 ... 置顶

40786

BONK 是什么意思?关键性答案抢先看

从目前发展来看,BONK 具备成为 “Solana 生态标杆 ... 置顶

30233

纸钱包如何手工制作?安全无门槛的加密资产存储方案,新手也能学会

在记录私钥前,可对私钥进行 “简单加密”(仅本人能解密),即 ... 置顶

34115

以太坊生态的社交 DApp Lens 是什么?重塑用户数据主权的去中心化社交新选择

传统社交平台有中心化的内容审核团队,可快速删除垃圾广告、诈骗 ... 置顶

25144

国债代币化后在 Uniswap 建流动性池可行吗?RWA 落地的下一个万亿风口藏在这里

国债代币化后在 Uniswap 建流动性池,不是 “是否可行 ... 置顶

20856

Solana 的高 TPS 优势是什么?揭秘支撑其高性能生态的核心逻辑

Solana 的高 TPS 优势,是技术创新与生态需求结合的 ... 置顶

41310

Solana 程序的 Opcode 执行是什么?一文读懂 Solana 虚拟机的指令运行核心

Solana 程序的 Opcode 执行,看似是底层技术细节 ... 置顶

55337

中文交易对:激活 BNB 生态增长新引擎,从流动性到用户粘性的全方位赋能

中文交易对并非简单的 “语言转换”,而是 BNB 生态深耕中 ... 置顶

23222

比特派怎么买TRX?购买波场币新手指南

比特派是一款支持多链的数字钱包,其中就包括波场TRON(TR ...

168655

区块链圈小菜鸡

TRC20网络是什么意思?TRC20和ERC20的区别详解

TRC20是一种代币标准,运行在波场(TRON)区块链上。T ...

154980

树图链

什么是哈希?钱包哈希值在哪里查找?

哈希是一种通过特定算法将输入数据转换为固定长度输出的数据摘要 ...

151038

波场区块链浏览器

中值联空气币预警榜(2024年06月20日)

中值联空气币预警榜(2024年06月20日) 第一名 ...

137269

区块链网快讯

深度解析 Polygon 从 $MATIC 到 $POL 的升级改名:背后的意图与影响

以太坊扩容解决方案 Polygon(前称 Matic Net ...

136356

波场区块链浏览器

柬埔寨汇旺集团遭遇2962万USDT冻结事件详细分析

在加密货币市场的动荡背景下,柬埔寨汇旺集团(Huione)作 ...

131077

波场区块链浏览器

专访圆币科技CEO:港元稳定币的独特定位与未来展望

2023年7月18日,香港金融管理局公布了首批进入稳定币沙盒 ...

128409

波场区块链浏览器

金本位制度是怎样的? 金本位制度的优缺点是什么?

金本位制度是一种货币制度,它以黄金作为货币价值的基础。根据这 ...

119616

波场区块链浏览器

比特币突破68000美元 8大加密货币重拾动能价格走势如何?

随着2024年比特币大会的进行,比特币价格成功回升至68,0 ...

110070

非小号

Messari最新报告解析:AI x Crypto、SocialFi及比特币可编程性的加密故事

Messari发布的最新加密研究报告聚焦于AI、Social ...

101286

波场区块链浏览器