零知识证明-libsnark库学习:Protoboard

本文详细介绍了使用libsnark库学习零知识证明的过程,特别是Protoboard的使用。从定义有限域和椭圆曲线参数开始,接着阐述如何在Protoboard上定义和关联变量,区分primary和auxiliary变量。通过set_input_sizes设置输入变量,并添加R1CS约束。然后,介绍了可信设置的概念,包括生成证明和验证密钥。最后,讲解了如何设置变量值,创建证明以及验证证明的正确性。整个过程揭示了零知识证明在区块链安全中的应用。
摘要由CSDN通过智能技术生成
typedef libff::Fr<default_r1cs_ppzksnark_pp> FieldT;
default_r1cs_ppzksnark_pp::init_public_params();

定义有限域,初始化椭圆曲线参数;

protoboard<FieldT> pb;

pb_variable<FieldT> out;
pb_variable<FieldT> x;
pb_variable<FieldT> sym_1;
pb_variable<FieldT> y;
pb_variable<FieldT> sym_2;

定义protoboard和变量,其中变量1会在protoboard中自动定义;

out.allocate(pb, "out");
x.allocate(pb, "x")<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值