12 commits in all time Mar 19, 2026 10:26 – Jun 17, 2026 10:26 UTC
giuliop AlgoPlonk
Add BSB22 commitment support for PLONK verifiers
Git Commit 4d140097 Branch main Document 14/862 ++ 103 --
giuliop AlgoPlonk
Harden setup lookup and verifier point inversion
- reject unknown setup names instead of falling back to unsafe test setup
- preserve fixed-width x-coordinate bytes in verifier template inversion
Git Commit ee4c8325 Branch main Document 18/271 ++ 21 --
aarav1656 AlgoPlonk
Merge 81300c2d747172b179358038e6722f849aed51f7 into 1939a5892670e338b45b16e5cb0b87c9c8b8d0d9
Git Commit 411e91bd Branch pull/7/merge Document 3/183 ++ 16 --
Aarav Raj AlgoPlonk
feat: box-based public-input transport for BN254 verifier
Large circuits (e.g. our 70-public-input DKIM circuit) cannot pass proof +
public inputs as ABI args: 864B proof + 2240B inputs exceeds Algorands
Git Commit 81300c2d Branch pull/7/head Document 1/42 ++ 2 --
aarav1656 AlgoPlonk
Merge 8cb35b9c35d0bd3558ffd0ce7ef54dc0be1f7bbf into 1939a5892670e338b45b16e5cb0b87c9c8b8d0d9
Git Commit c656f8d8 Branch pull/7/merge Document 3/141 ++ 14 --
Aarav Raj AlgoPlonk
feat: support single BSB22 commitment in BN254 smart-contract verifier
Extend the PuyaPy BN254 verifier generator to support circuits that emit
exactly one BSB22 commitment (gnark custom gate), as produced by gnark's
range-checker for emulated arithmetic (e.g. RSA-2048 + SHA-256). Previously
WritePythonCode rejected any commitment with "custom gates are not supported".

The single-commitment folding mirrors gnark's own audited Solidity PLONK
verifier (backend/plonk/bn254/solidity.go), term for term:
  - bind VK_QCP into the gamma challenge (after Qk, before public inputs)
  - bind the commitment point into the alpha challenge (before [Z])
  - PI += hash_to_field(commitment) * L_{nbPublic+commitIndex}(zeta)
  - fold commitment * qcp(zeta) into the linearised polynomial digest
  - bind VK_QCP + qcp(zeta) into the KZG folding (gamma_kzg) challenge
  - fold VK_QCP into the batch opening accumulation
A hash_to_field subroutine implements RFC 9380 expand_message_xmd(SHA-256),
L=48, reduced mod r (matching the prover's fr.Hash over the uncompressed
commitment). Circuits with >1 commitment remain rejected.

Validated end-to-end on Algorand localnet: a valid single-commitment proof
verifies on-chain and a tampered one is rejected; no regression on
no-commitment circuits.

utils.CompileWithPuyaPy now invokes puyapy directly (instead of
`algokit compile py`) so builds work where puyapy is provided by a Python
>=3.12 virtualenv on PATH.
Git Commit 8cb35b9c Branch pull/7/head Document 3/141 ++ 14 --
giuliop AlgoPlonk
fix verifier logicsig rekey guard
Git Commit 1939a589 Branch main Document 5/171 ++ 90 --
sanjay-sol AlgoPlonk
fix: invert point at infinity
Git Commit 6618b9c3 Branch main Document 4/8 ++ 0 --
sanjay-sol AlgoPlonk
Merge 53744eaabc081c040149bc80128a6a2cc9e304c1 into 6ed21a12da5ba45ff8d41c3a9a88d5a7920b1cbd
Git Commit 6dd7fcac Branch pull/5/merge Document 4/8 ++ 0 --
sanjay-sol AlgoPlonk
fix: invert point at infinity
Git Commit 53744eaa Branch pull/5/head Document 4/16 ++ 16 --
sanjay-sol AlgoPlonk
Merge 1d8633f3109cb436abdac63f55b57b824c20663c into 6ed21a12da5ba45ff8d41c3a9a88d5a7920b1cbd
Git Commit 459caac3 Branch pull/5/merge Document 4/16 ++ 8 --
sanjay-sol AlgoPlonk
fix: invert point at infinity
Git Commit 1d8633f3 Branch pull/5/head Document 4/16 ++ 8 --