Releases: keep-starknet-strange/garaga
v0.18.1
Notable changes
- Add supports for SP1 verifier, see https://github.com/feltroidprime/SP1-starknet-template/ for example usage.
- Adds drand calldata generation in Rust & Typescript. Docs will follow, future release will bring timelock encryption usage.
- SP1, RISC0 and other Constants are centralized in a single file
tools/make/constants.json
and generated in different languages (py, ts, rs) with themake constants
command.
What's Changed
- Sync with
docs
branch. by @feltroidprime in #393 - Adds drand round calldata builder in Rust/js by @raugfer in #396
- Bump next from 14.2.25 to 14.2.26 in /tools/npm/integration-test-suite/packages/web-js-esm-react by @dependabot in #394
- Add SP1 groth16 verifier by @feltroidprime in #398
- Release v0.18.1 by @feltroidprime in #399
Full Changelog: v0.18.0...v0.18.1
v0.18.0
Tl:dr
This version fixes a high risk vulnerability in multi scalar multiplications, which affects the whole library (zk proofs verifs, signatures).
Exploits today are unlikely, but you must update your garaga dependencies and generated contracts ASAP.
Details to follow.
What's Changed
- Honk verification error messages and cleanup by @shramee in #391
- Replace ECIP by GLV/FakeGLV by @feltroidprime in #387
- Release v0.18.0 by @feltroidprime in #392
garaga gen
now prints useful information if detected noir versions are incorrect
New Noir recommended versions
Starknet Flavours are now fully integrated !
to use them, make sure to use bb with 0.86.0-starknet.1
version.
Nargo :
noirup --version 1.0.0-beta.3 # install
nargo --version # 1.0.0-beta.3
Barretenberg :
bbup --version 0.86.0-starknet.1
bb --version # 0.86.0
Full Changelog: v0.17.0...v0.18.0
v0.17.0
Performance improvements and security fixes.
Please do not use in production Honk contracts generated by garaga versions prior to 0.17.0.
New compatible noir & barretenberg versions should be 1.0.0-beta.3 & 0.85.0 :
nargo --version # 1.0.0-beta.3
bb --version # 0.85.0
- Cairo updated to 2.11.4
- Starknet-py updated to 0.26.2
What's Changed
- Optimize SHA-512 by @feltroidprime in #333
- Optimize SHA-512 pt. II. by @feltroidprime in #334
- Bump next from 14.2.21 to 14.2.25 in /tools/npm/integration-test-suite/packages/web-js-esm-react by @dependabot in #336
- Repo config by @feltroidprime in #337
- [WIP] Mutator Set contract with zk verifier by @feltroidprime in #338
- Get rid of the
build
folder by @feltroidprime in #345 - Avoid unecessary hashing of points & scalars in Noir verifier. by @feltroidprime in #342
- Noir verifier : avoid checking VK pts are on curve + add missing
shplonk_q
check. by @feltroidprime in #347 - Add and adapt Mutator set rust code from neptune. by @feltroidprime in #350
- Update Risc0 verifier to 2.0.0 by @feltroidprime in #339
- Sync & update docs. by @feltroidprime in #351
- Fix: CI skipping for docs by @feltroidprime in #354
- Assume last Ri is 1 in pairing checks calldata by @feltroidprime in #353
- clippy, ci fix by @feltroidprime in #355
- Adds basic
.nr
program for MMR inclusion proof toMutatorSet
contract by @feltroidprime in #357 - Bump pyo3 & fastecdsa versions by @dependabot in #361
- RISC0 Fixes towards next release by @raugfer in #362
- Remove
mock
parameter inextension_field_modulo_circuit.py
by @feltroidprime in #364 - Remove
next_u288
function to useIntoCircuitInputValue
trait by @feltroidprime in #365 - Refactor CI skipping by @feltroidprime in #366
- Fill precomputed
(1/SUBGROUP_SIZE)
instead of computing it in circuit by @feltroidprime in #367 - Avoid adding 0 at loop initialization. by @feltroidprime in #368
- Optimize
accumulate_delta_range_relation
circuit. by @feltroidprime in #371 - CLI fixes and minor updates. by @feltroidprime in #372
- Optimize
scalar_to_epns
with BoundedInt (-25%). by @feltroidprime in #373 - Optimize
Point256IntoProofPoint
by @feltroidprime in #374 - Make
FunctionFelt
generic on<T>
to reduce msm calldata size and deserialization costs by @feltroidprime in #375 - Add bytecode size check for
MAX_LOG_N
Noir contract in CI by @feltroidprime in #379 - Bump starknet-py & devnet + fix CLI by @feltroidprime in #378
- Improve rust ecip performance & test generation time by @feltroidprime in #380
- Add a test for zero numerator case in Torus final exponentiation by @feltroidprime in #382
- Implement
msm_g1_2_points
to have less bytecode for relevant use cases by @feltroidprime in #383 - Add Conversion Functions Between Timestamps and Drand Rounds by @RojhatToptamus in #314
- Upgrade Noir support to BB v0.85.0 by @raugfer in #384
- Release v0.17.0 by @feltroidprime in #377
New Contributors
- @RojhatToptamus made their first contribution in #314
Full Changelog: v0.16.0...v0.17.0
v0.16.0
TLDR :
- Noir and bb updated to 1.0.0-beta2 & 0.82.2 (see Barretenberg 0.82.0 Migration Notes : https://hackmd.io/@saleel/HygTwO5epyl )
- Generation of Noir ZK flavours contracts https://github.com/keep-starknet-strange/garaga/blob/c3db6b78efc0a4b8eb6a8c06df7f053257728ea7/hydra/garaga/starknet/cli/gen.py#L67-L72
- msm optimisations
- Cairo 2.11.2 update
- EdDSA on Ed25519 support (with Rust & Wasm)
What's Changed
- Updates Ultra Keccak/Starknet Honk to be compatible with BB version 0.74.0 by @raugfer in #310
- Add support for Ultra ZK flavours by @raugfer in #306
- Pairing check bytecode optimisations. by @feltroidprime in #316
- Upgrades support for BB v0.82.2 by @raugfer in #317
- Remove remaining ark dependencies in favour of lambdaworks. by @feltroidprime in #319
- Honk bytecode optimisations by @feltroidprime in #321
- Simplify honk contract generator by @feltroidprime in #322
- Update Cairo version to 2.11.2 by @feltroidprime in #323
- process
scalar_to_epns
digits 2 by 2 to avoid dealing withscalar_negative_bool
(-30%) by @feltroidprime in #324 - Files / Folders re-org by @feltroidprime in #326
- Bring back removed final exp witness test by @feltroidprime in #327
make rewrite
takes now 2 sec instead of 18 sec by @feltroidprime in #328- Support EdDSA signatures over Ed25519 by @feltroidprime in #329
- Small
ec_safe_add
optimisation + clean EdDSA files. by @feltroidprime in #331 - Release v0.16.0 by @feltroidprime in #332
Full Changelog: v0.15.5...v0.16.0
v0.15.5
Adds poseidon_hash_bn254 to garaga npm package.
https://github.com/keep-starknet-strange/garaga/blob/8cc51a86a84401b063b39520e2d67254baeaebe5/tools/npm/garaga_ts/src/node/api.ts#L99
What's Changed
- Adds poseidon_hash_bn254(x, y) in garaga_rs with Js and Python bindings. by @feltroidprime in #307
- Release v0.15.5 by @feltroidprime in #309
Full Changelog: v0.15.4...v0.15.5
v0.15.4
Notable changes :
- significant performance improvement on all parts using scalar multiplication ( #280 )
- confirmed Noir version update : nargo 1.0.0-beta1 + bb 0.67 (#291 #302 )
- noir calldata generation is now possible from rust / npm package ( #288 )
- support for a experimental Noir flavour using Starknet Poseidon hash inside the verifier instead of Keccak ( #287 ) . Only possible with a fork of barretenberg for now.
- schnorr & ecdsa signature support, with calldata in py / rust / npm, + some refactoring of Cairo library folders / file structures without breaking changes on the imports ( #300 #303 )
- poseidon hash for bn254 support ( #282 ), to have the same hash in Starknet and Noir/Circom
As with every release,
- PyPi https://pypi.org/project/garaga/
- NPM package https://www.npmjs.com/package/garaga
are updated and class hashes of maintained contract as well : https://garaga.gitbook.io/garaga/maintained-smart-contracts
What's Changed
- Risc0 Adjustments and Sample App by @raugfer in #279
- Perf epns by @shramee in #280
- circom poseidon hash cairo circuit impl by @neotheprogramist in #282
- Adds support for the UltraStarknetHonk by @raugfer in #287
- Adds primitives needed for BLS12-381 hash_to_curve for G1 & G2 by @petscheit in #258
- bug: Fix generated asdf
tool-versions
file name. by @feltroidprime in #295 - Bump next from 14.2.10 to 14.2.21 in /tools/npm/integration-test-suite/packages/web-js-esm-react by @dependabot in #296
- ci: Parallelize devnet e2e test. by @feltroidprime in #297
- Honk vk/proof calldata encoding in Rust by @raugfer in #288
- Updates files upgrading nargo/bb to 1.0.0-beta.1/0.66.0 by @raugfer in #291
- chore: change param order to match related circuit output order by @petscheit in #298
- Cairo 2.9.2 Update with manual Serde on relevant structs by @feltroidprime in #299
- Update recommended bb version to 0.67 by @feltroidprime in #302
- ecdsa & schnorr wrappers / tooling by @feltroidprime in #300
- WASM bindings for Schnorr/ECDSA calldata builders by @raugfer in #304
- Release v0.15.4 by @feltroidprime in #305
New Contributors
- @neotheprogramist made their first contribution in #282
Full Changelog: v0.15.3...v0.15.4
v0.15.3
This release focuses on Noir contract optimizations.
Proof is compressed by omitting the (CONST_PROOF_SIZE_LOG_N - LOG_N) constant values and deduced and taken advantage of in Cairo code.
See #274
What's Changed
- bump PyO3 version by @sigmadawg in #275
- v0.15.3: Honk contract bytecode, calldata & resources optimisations. by @feltroidprime in #274
New Contributors
- @sigmadawg made their first contribution in #275
Full Changelog: v0.15.2...v0.15.3
v0.15.2
This release fixes a small bug of Noir honk contract generator when log_circuit_size was >= 10.
What's Changed
- fix: Noir circuit name too long when log_n >= 10. by @feltroidprime in #271
Full Changelog: v0.15.1...v0.15.2
v0.15.1
This release updates the RiscZero constants to support the latest RiscZero version 1.2.
New Risc0 verifier contract class hash : 0x34fda7d39c28c2fb0d8e876f1c51a38f9fa395023c3749a0ee793611baa6095
What's Changed
- Release v0.15.1 : Bump RiscZero constants to v1.2 by @feltroidprime in #268
- fix: Bump typescript package version. by @feltroidprime in #269
Full Changelog: v0.15.0...v0.15.1
v0.15.0
This release improves multi scalar mul costs; bn254 pairing costs, and adds support for Noir contracts verifier generation.
See https://garaga.gitbook.io/garaga/deploy-your-snark-verifier-on-starknet/noir
PyPi and npm packages have been updated as with each release.
Class hashes of maintained smart contract as well : https://garaga.gitbook.io/garaga/maintained-smart-contracts
Breaking changes :
- the CLI commands name for
declare-project
anddeploy-project
have changed todeclare
anddeploy
- MultiScalarMul calldata, Pairing and groth16 calldata wll be different and incompatible with 0.14 code. Either use tooling/code in version 0.14 or update generated smart contracts and dependencies (rust/cairo/python/npm) to 0.15.
What's Changed
- Bug: fix output by @tekkac in #257
- Fix maturin CI : Static python version across all targets. by @feltroidprime in #260
- Simpler CLI command naming, minor docs inconsistencies and deploy_v1 fix by @m-kus in #259
- perf: BN254 Miller Loop "10" "01" compression by @feltroidprime in #261
- garaga-rs: Faster polynomial division. by @feltroidprime in #263
- perf: batch LHS of ECIP check. by @feltroidprime in #262
- Bump Cairo to 2.9.1. by @feltroidprime in #264
- (Aztec brother) ultra_keccak_honk contract support. by @feltroidprime in #245
- Release v0.15.0 by @feltroidprime in #265
- Fix npm CI release. by @feltroidprime in #266
Full Changelog: v0.14.0...v0.15.0