使用nodejs与sanrkjs生成零知识证明并进行验证

以Merkle Tree路径证明为例,使用nodejs与sanrkjs生成零知识证明,并进行本地验证。

版本

"circom": "0.0.35",
"circomlib": "0.0.20",
"snarkjs": "0.1.20"

源码

genKeypair.js
setup,生成pk和vk

const {
    compiler } = require("circom");
const {
    Circuit, groth ,stringifyBigInts } = require("snarkjs");
const path = require("path");
const fs = require("fs");

const genKeypair = async () => {
   
  console.log("start....");
  
  console.log("Get circtui definition....");
  const circuitDef = await compiler(  
	path.join(__dirname, "./withdraw.circom"),{
   }
  );
  const circuit = new Circuit(circuitDef);
  
  console.log("Setup....");
  const {
   vk_proof,vk_verifier} = groth.setup(circuit);
  //save pk,vk file
  fs.writeFileSync("proving_key.json", JSON.stringify(stringifyBigInts(vk_proof)), 'utf8');
  fs.writeFileSync("verification_key.json", JSON.stringify(stringifyBigInts(vk_verifier)), 'utf8');

  console.log("finish....");
  process
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值