基于libsnark库的零知识证明示例复现(从安装虚拟机到复现示例全流程)
本文旨在对网上已有的方法步骤进行补充说明,指导读者完成从虚拟机安装到libsnark库示例代码复现全过程。建议先看本文中的注意事项,后跳转到参考网页,否则可能会掉到坑里。
前言:
本文旨在对网上已有的方法步骤进行补充说明,指导读者完成从虚拟机安装到libsnark库示例代码复现全过程。建议先看本文中的注意事项,后跳转到参考网页,否则可能会掉到坑里。
目录:
1.在windows11上安装VMware-17.5.0版本虚拟机。
一、VMware虚拟机及Ubuntu系统安装
1.在windows11上安装VMware-17.5.0版本虚拟机。
2.在虚拟机上安装ubuntu-22.04.3版本系统。
参考:安装:https://blog.csdn.net/weixin_74195551/article/details/127288338
密钥:https://blog.csdn.net/hupoboy/article/details/131394587(笔者用的是第一个密钥)
二、配置虚拟机(解决文件无法拖拽及下载速度慢的问题)
1.解决虚拟机“无法拖拽文件”问题
参考:https://blog.csdn.net/ZRongZH/article/details/129237476
终端中运行结果如下:
2.虚拟机换源
参考:https://blog.csdn.net/xxx_2019/article/details/120660864
注:由于笔者安装的版本为ubuntu 22.04.3,因此需要将代码中的bionic换为jammy。
即:
#阿里源
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
三、安装libsnark库
文件准备:https://github.com/scipr-lab/libsnark
参考:https://blog.csdn.net/matlabdd1/article/details/123637302
注1:安装运行所需要的包时,执行第一条代码即可。
即:
sudo apt install build-essential cmake git libgmp3-dev libprocps-dev python3-markdown libboost-program-options-dev libssl-dev python3 pkg-config
注2:本例是直接从github上手动下载的压缩包,依赖也是手动复制的,未直接用命令行进行下载操作。
注3:安装子模块ate-pairing时
(1)“make-j”指令运行前,需要先给g++和gcc降级
参考:https://zhuanlan.zhihu.com/p/555635813
注:本例在未删除系统自带gcc-11和g++-11的情况下,安装了gcc-9和g++-9。
优先级配置代码如下(设置9为高优先级):
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
设置结果如下:
(2)“test/bn”指令需修改为“sudo test/bn”
运行结果如下:
四、复现libsnark示例代码(merkle 路径证明)
文件准备:https://github.com/StarLI-Trapdoor/libsnark_sample
参考:https://blog.csdn.net/weixin_44565944/article/details/112250664
复现步骤:
1.下载好源码文件后,用搭建好的libsnark文件替换此文件中的空libsnark文件;
2.从参考网站的第5步开始执行,即可得到证明结果。
更多推荐
所有评论(0)