Skip to content

FantasticDream/zkExample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

零知识证明

这个项目展示了如何使用Rust的arkworks框架实现简单的零知识证明系统。零知识证明是一种密码学技术,允许一方(证明者)向另一方(验证者)证明某个陈述是真实的,而不泄露除了该陈述为真这一事实之外的任何信息。

项目内容

本项目实现了两个零知识证明示例:

  1. 平方根证明:证明者可以证明自己知道某个数的平方根,而不需要透露这个平方根的值。
  2. 立方根证明:证明者可以证明自己知道某个数的立方根,而不需要透露这个立方根的值。

技术栈

  • Rust 编程语言
  • arkworks 框架:用于构建零知识证明系统,包含以下组件:
    • ark-ff - 有限域运算
    • ark-ec - 椭圆曲线运算
    • ark-std - 标准库
    • ark-relations - 关系定义
    • ark-r1cs-std - R1CS标准库
    • ark-groth16 - Groth16证明系统
    • ark-bls12-381 - BLS12-381椭圆曲线

代码结构

  • src/main.rs - 主程序,包含:
    • SquareRootCircuit:实现平方根证明的电路,使用R1CS约束系统
    • CubeRootCircuit:实现立方根证明的电路,使用R1CS约束系统
    • run_square_root_example():运行平方根证明示例
    • run_cube_root_example():运行立方根证明示例

零知识证明的应用场景

  1. 身份验证:证明你知道密码而不需要发送密码
  2. 隐私交易:证明交易有效而不泄露交易金额或参与者
  3. 隐私计算:证明计算结果正确而不泄露输入数据
  4. 匿名投票:证明你有权投票而不泄露你的身份

参考材料

About

零知识验证示例代码

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors