diff --git a/hash/snark/bench/Poseidon2/build.sh b/hash/snark/bench/Poseidon2/build.sh index 60147eb..b15f12f 100755 --- a/hash/snark/bench/Poseidon2/build.sh +++ b/hash/snark/bench/Poseidon2/build.sh @@ -1,15 +1,24 @@ #!/bin/bash +if [ -z ${ZKBENCH_INPUT_SIZE} ]; then +ZKBENCH_INPUT_SIZE=256 +fi + +if [ -z ${ZKBENCH_WHICH} ]; then +ZKBENCH_WHICH="hash_sponge" +fi + ORIG=`pwd` mkdir -p build gcc -O3 generate_input.c -o build/generate_input || { echo "gcc failed"; exit 101; } -sed "s/ZKBENCH_INPUT_SIZE/${ZKBENCH_INPUT_SIZE}/g" hash_sponge.circom.template >build/hash_sponge.circom +NAME=${ZKBENCH_WHICH} +sed "s/ZKBENCH_INPUT_SIZE/${ZKBENCH_INPUT_SIZE}/g" ${NAME}.circom.template >build/${NAME}.circom cd build -circom hash_sponge.circom --r1cs --wasm || { echo "circom failed"; exit 102; } +circom ${NAME}.circom --r1cs --wasm || { echo "circom failed"; exit 102; } cd $ORIG \ No newline at end of file diff --git a/hash/snark/bench/Poseidon2/run.sh b/hash/snark/bench/Poseidon2/run.sh index 4df2999..4ad877c 100755 --- a/hash/snark/bench/Poseidon2/run.sh +++ b/hash/snark/bench/Poseidon2/run.sh @@ -1,11 +1,31 @@ #!/bin/bash +if [ -z ${ZKBENCH_PROVER} ]; then +ZKBENCH_PROVER="snarkjs" +fi + +if [ -z ${ZKBENCH_WHICH} ]; then +ZKBENCH_WHICH="hash_sponge" +fi + ORIG=`pwd` cd build -NAME="hash_sponge" -echo "generating proof with snarkjs" -snarkjs groth16 prove ${NAME}_prover.zkey ${NAME}_witness.wtns ${NAME}_proof.json ${NAME}_public.json +echo "generating proof with ${ZKBENCH_PROVER}" +case $ZKBENCH_PROVER in + snarkjs) + NAME="${ZKBENCH_WHICH}" + snarkjs groth16 prove ${NAME}_prover.zkey ${NAME}_witness.wtns ${NAME}_proof.json ${NAME}_public.json + ;; + rapidsnark) + NAME="${ZKBENCH_WHICH}" + rapidsnark ${NAME}_prover.zkey ${NAME}_witness.wtns ${NAME}_proof.json ${NAME}_public.json + ;; + *) + echo "unknown prover \`$ZKBENCH_PROVER\`" + exit 99 + ;; +esac cd $ORIG diff --git a/hash/snark/bench/Poseidon2/setup.sh b/hash/snark/bench/Poseidon2/setup.sh index c23b51d..c458d51 100755 --- a/hash/snark/bench/Poseidon2/setup.sh +++ b/hash/snark/bench/Poseidon2/setup.sh @@ -1,20 +1,16 @@ #!/bin/bash +if [ -z ${ZKBENCH_WHICH} ]; then +ZKBENCH_WHICH="hash_sponge" +fi + ORIG=`pwd` ROOT="${ORIG}/../../../../" cd build -echo "generating input..." -./generate_input $ZKBENCH_INPUT_SIZE >input.json - -echo "generating witness..." -NAME="hash_sponge" -cd ${NAME}_js -node generate_witness.js ${NAME}.wasm ../input.json ../${NAME}_witness.wtns || { echo "witness gen failed"; exit 101; } -cd .. - echo "circuit-specific ceremony..." +NAME="${ZKBENCH_WHICH}" snarkjs groth16 setup ${NAME}.r1cs ${ROOT}/ceremony/ceremony.ptau ${NAME}_0000.zkey echo "some_entropy" | snarkjs zkey contribute ${NAME}_0000.zkey ${NAME}_0001.zkey --name="1st Contributor Name" rm ${NAME}_0000.zkey diff --git a/hash/snark/bench/Poseidon2/witness.sh b/hash/snark/bench/Poseidon2/witness.sh new file mode 100755 index 0000000..223ee5f --- /dev/null +++ b/hash/snark/bench/Poseidon2/witness.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +if [ -z ${ZKBENCH_INPUT_SIZE} ]; then +ZKBENCH_INPUT_SIZE=256 +fi + +if [ -z ${ZKBENCH_WHICH} ]; then +ZKBENCH_WHICH="hash_sponge" +fi + +ORIG=`pwd` + +cd build + +echo "generating input..." +./generate_input $ZKBENCH_INPUT_SIZE >input.json + +echo "generating witness... (WASM)" +NAME="${ZKBENCH_WHICH}" +cd ${NAME}_js +node generate_witness.js ${NAME}.wasm ../input.json ../${NAME}_witness.wtns || { echo "witness gen failed"; exit 101; } +cd .. + +cd $ORIG