Skip to content

v0.3.0

Choose a tag to compare

@ananas-block ananas-block released this 27 Oct 21:04
7d5bb16

Changes

  • Support gnark Groth16 proofs with a single BSB22 Pedersen commitment, including lookup circuits, through the bsb22 feature.
  • Parse snarkjs and gnark verifying keys and generate Rust constants with the circom-vk and gnark-vk features.
  • Convert circom-prover proofs into the verifier's byte format with the optional circom feature.
  • Upgrade direct Arkworks dependencies to 0.6, preserving compatibility with circom-prover's proof coordinates.
  • Use pinocchio syscalls on Solana and support no_std verification. Reduce hash-to-field costs for BSB22 verification.

Breaking changes

  • Rename Groth16Verifyingkey::vk_gamme_g2 to vk_gamma_g2.
  • Add Groth16Verifyingkey::vk_commitment. Set it to None for standard Groth16 proofs; use Groth16Verifier::new_with_commitment for BSB22 proofs.
  • Remove unused Groth16Error variants and its Clone and Eq implementations.
  • Upgrade direct Arkworks types from 0.5 to 0.6. Upstream circom-prover and the host Solana BN254 implementation still use Arkworks 0.5 transitively.

Validated with workspace and all-feature tests, two million gnark differential cases, Circom proof generation and verification, Solana SBF and no_std builds, and CU benchmarks.

All changes since v0.2.0