Pinocchio——将.arith文件转换为qap及做相应的prove/verify操作

本文详细介绍了如何使用Pinocchio工具进行QAP转换,包括参数解析、qap转换流程及验证操作。通过具体实例,展示了如何创建输入文件,执行qap转换,并解析输出结果,验证计算正确性。

在前一篇博文Pinocchio: Nearly Practica Verifable Computationh之circuit compiler的基础上,对所生成的.arith文件进行相应的qap转换及prove/verify操作。
Pinocchio源码中的msbignum.h等内容暂未开源,目前无法直接编译通过,直接使用其中的pinocchio-v0.5.3.exe可执行文件进行相应操作。

一、pinocchio相关参数说明

pinocchio中使用Boost program_options库来进行参数解析。所有参数可pinocchio-v0.5.3.exe -h来查看。
在这里插入图片描述

二、qap转换

在前一篇博文Pinocchio: Nearly Practica Verifable Computationh之circuit compiler中,outsource的是判断output->x = (input->a) == (input->b);,需要创建相应的eqtest-p0-b32.in输入文件,该文件格式为wireID wireValue以16进制形式展现所有input信息。如wireID 0->变量a, wireID 1->变量b, 若变量a的值取10(对应16进制为a),变量b的值取11(对应16进制为b),最后一行以const-1 input wire(即eqtest-p0-b32.arith中的one-input)结束,对应的eqtest-p0-b32.in内容为:

0 a
1 b
2 1

eqtest-p0-b32.arith内容为:

total 11
input 0                                  # input
input 1                                  # input
input 2                                  # one-input
const-mul-0 in 1 <2> out 1 <3>           # zero
const-mul-neg-1 in 1 <1> out 1 <4>       # zerop subtract negative
add in 2 <0 4> out 1 <5>                 # zerop diff
zerop in 1 <5> out 2 <7 6>               # zerop <ArithBuses.ArithmeticInputBus instance at 0x7ff566a263f8>
const-mul-neg-1 in 1 <6> out 1 <8>       # zerop inverse
add in 2 <2 8> out 1 <9>                 # zerop result
mul in 2 <2 9> out 1 <10>                # output-cast
output 10                                # 

执行qap转换:

pinocchio-v0.5.3.exe --qap --dv --file circuit/eqtest-p0-b32.arith --input circuit/eqtest-p0-b32.in --mem 4

对应的输出为:
在这里插入图片描述

三、qap结果输出

pinocchio-v0.5.3.exe --qap --dv --file circuit/eqtest-p0-b32.arith --input circuit/eqtest-p0-b32.in --mem 4 --output circuit/eqtest-p0-b32.out

在这里插入图片描述对应的eqtest-p0-b32.out内容(格式为wireID wireValue,其中的10即为output对应的wireID)为:[a!=b时,output为0]

10 0000000000000000000000000000000000000000000000000000000000000000

修改eqtest-p0-b32.in中的值,将其中的wireID 0和1的值设置为相同。再次运行上述命令,对应的eqtest-p0-b32.out内容为:[a==b时,output为1]

10 0000000000000000000000000000000000000000000000000000000000000001

符合预期!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值