Ошибка: файл zkey не является groth16 в circom

■ Информация о выпуске

  • Когорта3-Неделя1-Часть2-4-1

    1. Вы столкнетесь с ошибкой, если просто измените snarkjs groth16 setup к snarkjs plonk setup. Устраните эту ошибку и ответьте на следующий вопрос: чем процесс компиляции с помощью PLONK отличается от компиляции с помощью Groth16?

■ Мой файл

https://github.com/Tomosuke0930/zku3.0-week1/tree/master/Q2

https://github.com/Tomosuke0930/zku3.0-week1/blob/master/Q2/scripts/compile-Multiplier3-plonk.sh

Я сослался на этот документ https://github.com/iden3/snarkjs

■ Что я хочу спросить

  1. Как решить эту ошибку? Какие материалы помогут решить эту проблему?

■ Ошибка

  • При выполненииscripts/compile-Multiplier3-plonk.sh, я получаю следующую ошибку
      -------------------------------
Compiling Multiplier3_plonk.circom...
-------------------------------
template instances: 2
non-linear constraints: 2
linear constraints: 0
public inputs: 0
public outputs: 1
private inputs: 3
private outputs: 0
wires: 6
labels: 11
Written successfully: Multiplier3/Multiplier3.r1cs
Written successfully: Multiplier3/Multiplier3.sym
Written successfully: Multiplier3/Multiplier3_js/Multiplier3.wasm
Everything went okay, circom safe
[INFO]  snarkJS: Curve: bn-128
[INFO]  snarkJS: # of Wires: 6
[INFO]  snarkJS: # of Constraints: 2
[INFO]  snarkJS: # of Private Inputs: 3
[INFO]  snarkJS: # of Public Inputs: 0
[INFO]  snarkJS: # of Labels: 11
[INFO]  snarkJS: # of Outputs: 1
[INFO]  snarkJS: Reading r1cs
[INFO]  snarkJS: Plonk constraints: 3
[INFO]  snarkJS: Setup Finished
[INFO]  snarkJS: Reading r1cs
[INFO]  snarkJS: Reading tauG1
[INFO]  snarkJS: Reading tauG2
[INFO]  snarkJS: Reading alphatauG1
[INFO]  snarkJS: Reading betatauG1
[INFO]  snarkJS: Circuit hash: 
                d450100e 589c0685 76e9e3ce 2e0e71e6
                f90f89fa 1f8a17ca d07b0ad4 4c044ecd
                ff825273 9185368e 1ba6de7a 349f2472
                2b974d2d 2dd40cc2 343a6a01 b6d826e6
[ERROR] snarkJS: Error: zkey file is not groth16
    at phase2verifyFromInit (/Users/tom/.nvm/versions/node/v16.13.1/lib/node_modules/snarkjs/build/cli.cjs:4429:15)
    at async phase2verifyFromR1cs (/Users/tom/.nvm/versions/node/v16.13.1/lib/node_modules/snarkjs/build/cli.cjs:4837:12)
    at async Object.zkeyVerifyFromR1cs [as action] (/Users/tom/.nvm/versions/node/v16.13.1/lib/node_modules/snarkjs/build/cli.cjs:8777:17)
    at async clProcessor (/Users/tom/.nvm/versions/node/v16.13.1/lib/node_modules/snarkjs/build/cli.cjs:304:27)

введите описание изображения здесь

■ предположение

При выполнении этого кода создается «zkey», поэтому я предположил, что этот код не работает.

      snarkjs plonk setup Multiplier3_plonk/Multiplier3.r1cs powersOfTau28_hez_final_10.ptau Multiplier3_plonk/circuit_final.zkey

Это предложения об ошибках в snark.js, но я не могу понять, в чем проблема.

          if (zkey.protocol != "groth16") {
        throw new Error("zkey file is not groth16");
    }

И я прочитал этот документ, но я не могу найти, в чем я ошибаюсь.

https://github.com/iden3/snarkjs#15-настройка

1 ответ

The snarkjs zkey verify ...Команда является частью установки groth16. Поскольку вы использовали PLONK, нет необходимости проверятьcircuit_final.zkey.

Люди, которые обновили файл readme.md snarkjs, забыли обновить «Вы можете перейти непосредственно к Разделу 21 ...» на «... Раздел 22 ...». (readme.md на момент фиксации e3bc042)

Другие вопросы по тегам