# 深入浅出0知识证明 ## 前置知识: 1. 椭圆曲线加密算法 P = p*G 2. 双线性映射 e(a*G,b*G) == e(a*b*G,G) 3. 门电路问题与NPC问题 4. 零知识证明的概念 5. 全同态 ## 准备工作 1. 门电路问题 是 NPC问题 2. 零知识证明问题 转化为 门电路问题 3. 门电路问题 转化为多项式问题 4. 多次验证变为一次验证 ### 零知识证明问题 转化为 门电路问题   ### 门电路问题 转化为多项式问题 Vitalik 在《Quadratic Arithmetic Programs: from Zero to Hero》一文中详细介绍了这个转换过程    本来验证者需要验证的是:输入通过用作证明的数学运算电路,输出为真;但现在验证者需要验证的是,当x=1、x=2、x=3、x=4时,A(x) * B(x)–C(x) = 0。 **A(x) * B(x)–C(x) 中包含了解向量s,它是把输入、输出、电路绑定在一起的;验证A(x) * B(x)–C(x) = 0,就是在验证输入和输出是否满足用作证明的数学运算电路。** ### 多次验证变为一次验证  推理式证明变成了交互式证明:verifier 在一个随机点上提出挑战,prover 给出这个点上的解响应挑战;prover 需要有「知识」才能计算出随机点上的解,但这个解本身不会泄露「知识」。 ## 使用zksnark完成零知识证明 1. verifier 加密 2. prover 加密 3. 非交互 4. 还原 ### verifier 加密 ### prover 加密 ### 非交互模式 ### 还原成最初的形式
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up