github.com/consensys/gnark@v0.11.0/CHANGELOG.md (about) 1 <a name="v0.11.0"></a> 2 ## [v0.11.0] - 2024-09-06 3 ### Build 4 - update runner and go version ([#1260](https://github.com/consensys/gnark/issues/1260)) 5 6 ### Chore 7 - update version 8 - explicit IO methods in interfaces ([#1266](https://github.com/consensys/gnark/issues/1266)) 9 - update gnark-crypto module 10 - clean old definition 11 - generate 12 - define interface for solidity-supported VK 13 - make function comments match function names ([#1163](https://github.com/consensys/gnark/issues/1163)) 14 15 ### Docs 16 - update README ([#1255](https://github.com/consensys/gnark/issues/1255)) 17 - update reference 18 - describe potential length extension attack when using MiMC in-circuit ([#1198](https://github.com/consensys/gnark/issues/1198)) 19 - fix typo in package doc 20 - add documentation 21 - update documentation for ecdsa and eddsa 22 - update TODOs ([#1109](https://github.com/consensys/gnark/issues/1109)) 23 24 ### Feat 25 - use offset variable in derive_gamma 26 - handle invalid signature failures in ECRecover precompile ([#1101](https://github.com/consensys/gnark/issues/1101)) 27 - allow configurable hash-to-field function for Groth16 Solidity verifier ([#1102](https://github.com/consensys/gnark/issues/1102)) 28 - add IsOnG2 for BN254 ([#1204](https://github.com/consensys/gnark/issues/1204)) 29 - use blake2 for variable hashcode ([#1197](https://github.com/consensys/gnark/issues/1197)) 30 - simplified offset computation 31 - ensure verifying keys implement Solidity interface 32 - handle solidity options in CI check 33 - use fpstr in Groth16 Solidity template 34 - define fpstr method for groth16 solidity template 35 - define import_fp template 36 - code gen 37 - statistical zero knowledge option for bn254 38 - use offset in pairing 39 - capture O variable in gate for external range checker ([#1211](https://github.com/consensys/gnark/issues/1211)) 40 - code gen 41 - add BN254 final exponentiation check with output ([#1209](https://github.com/consensys/gnark/issues/1209)) 42 - use anonymous struct 43 - added version solidity template groth16 verifier 44 - re ran code gen and add files 45 - update solidity template groth16 46 - update template 47 - change signature ExportSolidity groth16 48 - code gen 49 - code gen 50 - modified plonk template 51 - code gen 52 - modified signature of ExportSolidity in template 53 - addition of export options for solidity verifiers 54 - simplify loop constraint index 55 - **bw6:** Fp6 as a direct extension using Montgomery-6 56 57 ### Feat 58 - implement FixedLengthSum of sha2 ([#821](https://github.com/consensys/gnark/issues/821)) 59 60 ### Fix 61 - remove redundant select 62 - variable modulus subtraction padding ([#1200](https://github.com/consensys/gnark/issues/1200)) 63 - branch with unchecked cast could panic at compile time ([#1234](https://github.com/consensys/gnark/issues/1234)) 64 - minimum 1 bit for constant binary decomposition ([#1229](https://github.com/consensys/gnark/issues/1229)) 65 - edge case with PLONK backend when 1 constraint ([#1226](https://github.com/consensys/gnark/issues/1226)) 66 - strict ModReduce in emulated fields ([#1224](https://github.com/consensys/gnark/issues/1224)) 67 - used size in domain instead of recomputing it 68 - remove unconstrained and unused variables 69 - remove unconstrained and unused variables ([#1218](https://github.com/consensys/gnark/issues/1218)) 70 - avoid malicious hint in BLS12-381 final exp check 71 - avoid infinite loop in hint when previous ML=0 72 - avoid malicious hint in BN254 final exp check 73 - conditional check in non-native IsZero for applying optimization ([#1145](https://github.com/consensys/gnark/issues/1145)) 74 - use consecutive powers instead of squaring ([#1212](https://github.com/consensys/gnark/issues/1212)) 75 - use emulated arithmetic for GLV decomp ([#1167](https://github.com/consensys/gnark/issues/1167)) 76 - restored cfg struct 77 - fixed error_mod_exp comment 78 - shift constraint indices by nb of public vars ([#1128](https://github.com/consensys/gnark/issues/1128)) 79 - fixed conflicts 80 - fixed comment prove 81 - fixed typo PROOF_H_0_X -> PROOF_H_0_COM_X 82 - fixed UnmarshalSolidity 83 - fixed comment 84 - fixed fold_h comment 85 - fixed comment 86 - fixed comment 87 - removed redundant computation pointer update 88 - remove redundant computation 89 - several external typo fixes ([#1261](https://github.com/consensys/gnark/issues/1261)) 90 - ensure condition is bool in api.Select 91 - fix OR computation in case one input is constant and other variable ([#1181](https://github.com/consensys/gnark/issues/1181)) 92 - fixed comment unmarshal 93 - fixed comment solidity 94 - fixed comment solidity 95 - fixed comment solidity 96 - fixed comment solidity 97 - fixed some comments 98 - fixed L-05 99 - fixed L-04 100 - fixed M-04 101 - fixed L-04 102 - fixed l-02 103 - defer to math.bits when nbdigits big or not set 104 - fix [#1149](https://github.com/consensys/gnark/issues/1149) by removing unused code ([#1164](https://github.com/consensys/gnark/issues/1164)) 105 - exact width for upper part 106 - more descriptive error message ([#1104](https://github.com/consensys/gnark/issues/1104)) 107 - added missing import in template 108 - fixed solidity template 109 - fixes [#1157](https://github.com/consensys/gnark/issues/1157) ensures calls to AttachDebugInfo are surrounded with… ([#1160](https://github.com/consensys/gnark/issues/1160)) 110 - **bls12-377:** use FinalExponentiationCheck in pairing2.go 111 - **bls12-377:** push to cyclo group in pairing2.go 112 - **bls12-377:** hint computation for final exp 113 - **bls12-377:** naming of Fp6 mul 114 - **bw6:** Toom-Cook 6-way mul 115 - **bw6:** pairing using direct sextic extension 116 - **pairing:** fix benchmarks 117 - **uints:** constrain valueOf ([#1139](https://github.com/consensys/gnark/issues/1139)) 118 119 ### Fix 120 - Build on 32-bit arch would raise int overflow https://github.com/Consensys/gnark/issues/1192 ([#1195](https://github.com/consensys/gnark/issues/1195)) 121 122 ### Perf 123 - eliminate final exp in bls12-381 optimized 124 - eliminate final exp in bls12-377 125 - optimize final exp bls12-377 126 - **bls12-381:** use cyclotomic group in finel exp check 127 - **bls12-381:** eliminate finalexp ~naively 128 - **bls12-381:** revisit tower extension 129 - **bn254:** eliminate finalexp as per eprint 2024/640 130 - **bn254:** use cyclotomic group in final exp check 131 - **bn254:** revisit tower extension 132 - **bn254:** save one mul in finalExp check 133 - **bn254:** optimize addchain for exp by 6u+2 134 - **bn254:** eliminate finalexp in precompile 135 - **bw6:** optimize specialized Montgomery-6 mul 136 - **bw6:** sparse mul by lines 137 - **bw6:** save 2 subs in fp6 sq 138 - **bw6:** optimize mulby023 139 - **bw6:** mulby02345 140 - **bw6:** save some subs in Fp6 square 141 - **bw6:** Square uses Karatsuba over Chung-Hasan instead of TC6 142 - **bw6:** revisit tower extension 143 - **bw6:** save some adds in specialized mul e6 144 - **bw6:** use hint to divide by 362880 in Toom-6 145 - **bw6:** optimize Montgomery-6 mul 146 - **bw6:** optimize pairing with new tower 147 - **bw6:** use Karabina12345 instead of GS for small sizes too 148 - **bw6:** toom-cook-3x for Fp3 mul 149 - **bw6-761:** eliminate finalexp 150 - **bw6-761:** use Karabina even for 1 square 151 - **bw6-761:** push ML to cyclo-group before FE elimination 152 153 ### Refactor 154 - clean code 155 - revert to old line computation and adjust gnark-crypto instead 156 - move utils from std/ to internal 157 - apply review suggestions 158 - apply review suggestions 159 - separate fixed circuits used in zkevm ([#1217](https://github.com/consensys/gnark/issues/1217)) 160 - clean code 161 - clean code 162 - move limb composition to package 163 - use single implementation 164 - clean code 165 - removes todods ([#1111](https://github.com/consensys/gnark/issues/1111)) 166 - **bls12-377:** karabina decompression 167 - **bn254:** clean FE elimination code 168 - **bn254:** add some comments 169 - **bw6:** remove dead code 170 - **bw6:** remove benchmark 171 - **bw6:** remove benchmark 172 - **bw6:** apply review suggestion 173 174 ### Style 175 - fixed wrong EcMul comment 176 - fixed comment 177 - fixed comment 178 - fixed typos 179 - added comment 180 - removed unused variable 181 - constant for fixed size proof 182 - SHA2 constant to replace 0x2 183 - cleaner computation nb BSB commitments 184 - renamed H commitments constants 185 - reuse variable 186 - removed redundant if statement 187 - lagrangeOne -> lagrangeZero 188 - verify_opening_linearised_polynomial -> compute_opening_linearised_polynomial 189 - divideByXMinusOne could -> divideByZH 190 - fixed typo 191 - clean code 192 - remove old todos ([#1106](https://github.com/consensys/gnark/issues/1106)) 193 194 ### Test 195 - update stats 196 - update stats 197 - added non regression test for api.Select bool cond 198 - add issue 1153 repro 199 - update stats 200 - check errors in test circuit ([#1140](https://github.com/consensys/gnark/issues/1140)) 201 - update stats 202 - update stats 203 - update stats 204 - update stats 205 - add PLONK test for public input mapping ([#1123](https://github.com/consensys/gnark/issues/1123)) 206 - update stats 207 208 ### Wip 209 - toom-cook-3x 210 211 ### Pull Requests 212 - Merge pull request [#1254](https://github.com/consensys/gnark/issues/1254) from Consensys/perf/ML 213 - Merge pull request [#1258](https://github.com/consensys/gnark/issues/1258) from Consensys/refactor/limb-composition 214 - Merge pull request [#1251](https://github.com/consensys/gnark/issues/1251) from Consensys/build/bump-gnarkcrypto-vsn 215 - Merge pull request [#1247](https://github.com/consensys/gnark/issues/1247) from Consensys/fix/issue1246 216 - Merge pull request [#1207](https://github.com/consensys/gnark/issues/1207) from Consensys/perf/eliminate-finalExp-bls 217 - Merge pull request [#1214](https://github.com/consensys/gnark/issues/1214) from Consensys/fix/BN254-finalExp 218 - Merge pull request [#1196](https://github.com/consensys/gnark/issues/1196) from ThomasPiellard/audit/final-commit-fixes 219 - Merge pull request [#1143](https://github.com/consensys/gnark/issues/1143) from Consensys/perf/eliminate-finalExp 220 - Merge pull request [#1187](https://github.com/consensys/gnark/issues/1187) from Consensys/fix/groth16-solidity-templates 221 - Merge pull request [#1155](https://github.com/consensys/gnark/issues/1155) from Consensys/perf/eliminate-finalExp-bw6761 222 - Merge pull request [#1173](https://github.com/consensys/gnark/issues/1173) from Consensys/perf/eliminate-finalExp-bls12381 223 - Merge pull request [#11](https://github.com/consensys/gnark/issues/11) from ThomasPiellard/audit/M-04 224 - Merge pull request [#10](https://github.com/consensys/gnark/issues/10) from ThomasPiellard/audit/L-02 225 - Merge pull request [#14](https://github.com/consensys/gnark/issues/14) from ThomasPiellard/audit/H-01 226 - Merge pull request [#13](https://github.com/consensys/gnark/issues/13) from ThomasPiellard/audit/N-05 227 - Merge pull request [#2](https://github.com/consensys/gnark/issues/2) from ThomasPiellard/audit/N-01 228 - Merge pull request [#5](https://github.com/consensys/gnark/issues/5) from ThomasPiellard/audit/L-08 229 - Merge pull request [#7](https://github.com/consensys/gnark/issues/7) from ThomasPiellard/audit/L-06 230 - Merge pull request [#6](https://github.com/consensys/gnark/issues/6) from ThomasPiellard/audit/L-07 231 - Merge pull request [#8](https://github.com/consensys/gnark/issues/8) from ThomasPiellard/audit/L-05 232 - Merge pull request [#4](https://github.com/consensys/gnark/issues/4) from ThomasPiellard/audit/N-03 233 - Merge pull request [#3](https://github.com/consensys/gnark/issues/3) from ThomasPiellard/audit/N-02 234 - Merge pull request [#1](https://github.com/consensys/gnark/issues/1) from ThomasPiellard/audit/N-04 235 - Merge pull request [#9](https://github.com/consensys/gnark/issues/9) from ThomasPiellard/audit/L-04 236 - Merge pull request [#12](https://github.com/consensys/gnark/issues/12) from ThomasPiellard/audit/L-03 237 - Merge pull request [#1165](https://github.com/consensys/gnark/issues/1165) from Consensys/fix/partition-bounds 238 - Merge pull request [#1138](https://github.com/consensys/gnark/issues/1138) from Consensys/feat/option_solidity 239 - Merge pull request [#1131](https://github.com/consensys/gnark/issues/1131) from Consensys/perf/toom3-r1cs 240 - Merge pull request [#1126](https://github.com/consensys/gnark/issues/1126) from Consensys/perf/direct-extensions 241 - Merge pull request [#1110](https://github.com/consensys/gnark/issues/1110) from Consensys/perf/field-extensions 242 - Merge pull request [#1113](https://github.com/consensys/gnark/issues/1113) from Consensys/docs/signatures 243 244 245 <a name="v0.10.0"></a> 246 ## [v0.10.0] - 2024-04-22 247 ### Bench 248 - large 249 - don't inflate the decompressed size too much 250 - proving works 251 - 26KB 252 - huffman decoding 253 - awful 254 255 ### Bls12377 256 - faster e6 MulBy01 257 - test e6 MulBy01 258 - test mul 01 by 01 259 260 ### Bls12381 261 - faster e6 MulBy01 262 263 ### Bls24315 264 - faster e12 MulBy01 265 - test e12 MulBy01 266 267 ### Bn254 268 - faster e6 MulBy01 269 - test mul 01 by 01 270 271 ### Build 272 - update compress to v0.2.3 ([#1032](https://github.com/consensys/gnark/issues/1032)) 273 - get gopter 274 275 ### Bw6761 276 - faster e3 MulBy01 277 - test mul 01 by 01 278 279 ### Chore 280 - remove prints and all huffman code 281 - comments/cleanup for lzss compression 282 - update stats 283 - remove committed profiles ([#1053](https://github.com/consensys/gnark/issues/1053)) 284 - adapt changes from native Fiat-Shamir transcript ([#974](https://github.com/consensys/gnark/issues/974)) 285 - go.sum 286 - update stats 287 - remove unused line eval init 288 - use type alias 289 - inline computation 290 - fix linter errors 291 - merge rough edges 292 - update gnark-crypto 293 - update gnark-crypto 294 - gitignore 295 - update stats 296 - remove unused line init 297 - remove unused code 298 - set word size to 1 299 - minor changes to benchmark 300 - update gnark-crypto to latest 301 - uncrowd the pr a bit more 302 - cleanup documentation examples 303 - avoid nonnative dereferences ([#861](https://github.com/consensys/gnark/issues/861)) 304 - better logging, remove code from data folder 305 - update gnark-crypto to latest 306 - clean up comments and prints 307 - avoid dereferencing into existing Elements 308 - remove prints 309 - clean up test cases 310 - improved analytics 311 - **deps:** bump golang.org/x/crypto from 0.12.0 to 0.17.0 ([#973](https://github.com/consensys/gnark/issues/973)) 312 313 ### Ci 314 - don't run redundant release checks 315 - run more tests when doing PR 316 - remove github bot 317 - make macOS and win do minimal tests only 318 319 ### Clean 320 - rm solidity.tmpl 321 322 ### Doc 323 - add docs to NewR1CS and NewSparseR1CS in system.go [#985](https://github.com/consensys/gnark/issues/985) 324 325 ### Docs 326 - clean comments 327 - add hint definition for native inputs 328 - method doc native output 329 - add comments 330 - add subgroup check to doc_test.go 331 - describe that hint inputs and outputs are init-ed ([#1003](https://github.com/consensys/gnark/issues/1003)) 332 - clean comments 333 - update algebra documentations 334 - GLV hint 335 - define that addition is now unsafe 336 - add method documentation 337 - BestCompression vs BestSnarkDecomposition 338 339 ### FEAT 340 - Add experimental support for Icicle GPU acceleration behind build tag ([#844](https://github.com/consensys/gnark/issues/844)) 341 342 ### Feat 343 - register hints in std/ also when have no circuit 344 - change sign in comment 345 - modified comment 346 - expmod with variable modulus ([#1090](https://github.com/consensys/gnark/issues/1090)) 347 - moved claimed values of linearised polynomial out of the proof 348 - re enable test bs12->bw6 349 - code gen 350 - implement glv for all curves 351 - code gen 352 - replaced precompiles opcode with constants 353 - addition of precompiles as constants 354 - used to compute offsets in state 355 - used in template for proof offsetss 356 - Groth16 Solidity contract with commitments ([#1063](https://github.com/consensys/gnark/issues/1063)) 357 - add secp256k1 curve default initializer ([#1086](https://github.com/consensys/gnark/issues/1086)) 358 - add range check selector retrieval ([#1066](https://github.com/consensys/gnark/issues/1066)) 359 - add MulNoReduce and Sum methods in field emulation ([#1072](https://github.com/consensys/gnark/issues/1072)) 360 - add non-native hint with native inputs 361 - add non-native hint with native output 362 - add non-native hint with native output 363 - non-native sumcheck verifier ([#1042](https://github.com/consensys/gnark/issues/1042)) 364 - verify commitments in groth16 recursion verifier ([#1057](https://github.com/consensys/gnark/issues/1057)) 365 - add option for enforcing number of goroutines for the solver ([#1052](https://github.com/consensys/gnark/issues/1052)) 366 - stabilize anonymous hint function names ([#1054](https://github.com/consensys/gnark/issues/1054)) 367 - modified algebraic relation 368 - G2 membership bls12-377 369 - G1 membership bls12-377 370 - curve/twist membership bls12-377 371 - subgroup G1/G2 membership BW6-761 372 - add PLONK in-circuit verifier ([#880](https://github.com/consensys/gnark/issues/880)) 373 - pairing precompile error handled 374 - code gen 375 - clean MarshalSolidity 376 - fix unmarshalling solidity 377 - use n-bit mux for switching PLONK verification keys ([#1017](https://github.com/consensys/gnark/issues/1017)) 378 - code gen plonk upgrade 379 - adds plonk.SRSSize helper method ([#1012](https://github.com/consensys/gnark/issues/1012)) 380 - different PLONK circuit verification ([#1010](https://github.com/consensys/gnark/issues/1010)) 381 - renaming zhZeta 382 - opening of h0, h1, h2 ok 383 - using batch inversion 384 - remove foldedHDigest 385 - add quotient to the linearised polynomial 386 - multiply s1, s2 by alpha 387 - some todos and dead code ([#993](https://github.com/consensys/gnark/issues/993)) 388 - add WithUseSafe option 389 - update compress version; failing test (resolved) ([#979](https://github.com/consensys/gnark/issues/979)) 390 - regenerate internal/stats 391 - updated comment in fold_state 392 - groth16 solidity use calldatacopy for commitments ([#1097](https://github.com/consensys/gnark/issues/1097)) 393 - plonk verifier options ([#1028](https://github.com/consensys/gnark/issues/1028)) 394 - if we don't compress we don't need the dict ([#929](https://github.com/consensys/gnark/issues/929)) 395 - exit when an error is encountered 396 - exit when condition is not filled 397 - make registries for gkr thread safe ([#920](https://github.com/consensys/gnark/issues/920)) 398 - cache lookup blueprint entries in solving phase ([#915](https://github.com/consensys/gnark/issues/915)) 399 - batched KZG ([#908](https://github.com/consensys/gnark/issues/908)) 400 - forceDivisibleBy 401 - compile large circuit outside tests 402 - Fiat-Shamir transcript using a short hash ([#900](https://github.com/consensys/gnark/issues/900)) 403 - snark decomp done, not yet tested 404 - snark decompressor, all but eof logic done 405 - offset, length and bytes tables 406 - read lengths! 407 - new stream 408 - add multi symbol 409 - started v2 410 - r/w num, (un)marshal for stream 411 - implement bit mode for short hash 412 - use bitlength from parameters 413 - bit-level alignment of compressed 414 - marshalling G1 and Scalar on emulated curves, following gnark-crypto 415 - add short-hash wrappers for recursion ([#884](https://github.com/consensys/gnark/issues/884)) 416 - native marshal (bls12, 24) consistent with gnark-crypto 417 - marshal G1 ok on non emulated curves (bls12, 24) 418 - pack/unpack functions 419 - add fixed pairing for bw6-761 420 - allow custom hash function in backends ([#873](https://github.com/consensys/gnark/issues/873)) 421 - more analytics 422 - some analytics 423 - add bw6 kzg 424 - add bw6 emulated ScalarMul and ScalarMulBase 425 - api.IsNonZero 426 - huffman Decode 427 - add bw6 fields 428 - bzip2 (bzip would be better) 429 - some experiments with huffman coding 430 - preliminary snark decompressor impl 431 - basic i/o funcs 432 - small tests work with indeterminate length 433 - basic lzss decompressor 434 - new data set and huffman estimations 435 - IsByteZero works 436 - add naive bw6 miller loop 437 - add bw6 final exp 438 - **2-chain:** MSM of size 2 439 - **emulated bw6 pairing:** optimal tate version working 440 - **sw_bls12377:** Add DoubleFixedQPairing 441 - **sw_bls24315:** Add DoubleFixedQPairing 442 443 ### Fix 444 - test final exp without gnark-crypto hack 445 - JointScalarMulBase without GLV (for ecdsa package) 446 - fixed type 447 - folded MSM scalar decomposition 448 - emulated hint tests ([#1083](https://github.com/consensys/gnark/issues/1083)) 449 - edge cases in SM and JSM were inverted + comments 450 - incorrect parameter 451 - several typos in the documentation ([#943](https://github.com/consensys/gnark/issues/943)) 452 - remove duplicate error check 453 - scs add/mul when recorded constraint is 0 454 - organize std packages hints registrations ([#1043](https://github.com/consensys/gnark/issues/1043)) 455 - another occurence of G1 in SRS ([#1036](https://github.com/consensys/gnark/issues/1036)) 456 - use G1 generator from SRS ([#1035](https://github.com/consensys/gnark/issues/1035)) 457 - verifier works 458 - fixed size slice 459 - fixed formula in comments 460 - AssertOnG1 BLS12-377 461 - use subtraction with reduce in AssertIsEqual ([#1026](https://github.com/consensys/gnark/issues/1026)) 462 - plonk recursion without commitment 463 - fixed compute_gamma_kzg 464 - fixed offset opening at zeta-omega 465 - Decompressor to return -1 when output doesn't fit ([#1022](https://github.com/consensys/gnark/issues/1022)) 466 - fixed typo 467 - fixed verify_opening_linearised_polynomial 468 - fixed proof size 469 - fixed generator 470 - fixed comment derive alpha 471 - fixed MarshalSolidity 472 - assign baseChallenge correctly while verifying gkr solution ([#1020](https://github.com/consensys/gnark/issues/1020)) 473 - verifier ok 474 - add Placeholder for vk with fixed lines 475 - remove shorthash override for same field ([#1008](https://github.com/consensys/gnark/issues/1008)) 476 - bw6 field emulation 477 - works on small test case 478 - "last byte" bug 479 - typo 480 - typo 481 - typo 482 - typo 483 - rename ScalarMulGeneric to scalarMulGeneric in tests 484 - swith points order in JointScalarMulBase 485 - init lines before assigning 486 - use eigenvalue and thirdroot pointers 487 - stats 488 - use Generic instead of GLV for ECMUL to handle edge-cases 489 - remove debug panic from previous commit 490 - ensure plonk verify check witness length ([#952](https://github.com/consensys/gnark/issues/952)) 491 - update stats 492 - some bugs 493 - groth16 verifier 494 - ReadIntoStream 495 - bn254 -> {{ toLower .Curve }} 496 - test Expt remaned to ExpX0 497 - compression works on the first 300b of calldata 498 - missing wait on channel in plonk prover ([#926](https://github.com/consensys/gnark/issues/926)) 499 - minor test issues 500 - bad merge. bad git! 501 - use platform independent method for counting new multiplication overflow from result limb count ([#916](https://github.com/consensys/gnark/issues/916)) 502 - actually remove the go generate line 503 - comment out go generate in suffixarray 504 - groth16 recursion 505 - non-native arithmetic autoreduction for division, inversion and sqrt ([#870](https://github.com/consensys/gnark/issues/870)) 506 - readIntoStream bug 507 - simple table lookup works 508 - test with backrefs 509 - some minor bugs 510 - use gt(arg, R_MOD_MINUS_ONE) 511 - small packing test works 512 - fuzzer bug 513 - 18b offset - ave 514 - snark errors 515 - DoublePairFixedQ with different inputs 516 - test MulBy014 and remove old MulBy034 517 - make tests pass 518 - update latest.stats 519 - make builder private again 520 - 1B addresses seem to work 521 - trailing backref bug 522 - plonk.SRSSize takes constraint.ConstraintSystem as input, not constraint.System 523 - works on 2c2964. performance awful 524 - remove outdated test 525 - read bugs 526 - ineffectual assignment to err 527 - failed 528 - presumption of long negative space of zeros 529 - two symbols test 530 - use M-twist (014) for emulated BW6 pairing 531 - RLE bug 532 - bug with negative indexes 533 - bug with lone 0 in high indexes 534 - all tests pass, except for 3c2943: too slow 535 - all zeros tests pass 536 - write to the output table 537 - all "simple" tests pass 538 - zerosAfterNonzero pass 539 - can handle two consecutive backrefs 540 - works on 3c2943 with symb 0 541 - **2-chain:** last iteration of MSM of size 2 542 - **2-chains:** varScalarMulG1 edge cases 543 - **2-chains:** constScalarMulG1 edge cases 544 - **2-chains:** ScalarMulG2 edge cases 545 - **bw6:** fix Expt test 546 - **bw6:** DecompressKarabina edge cases 547 - **linter:** ineffectual assignment 548 549 ### Perf 550 - add lazy match look ahead 1 551 - adjustement 552 - use logderiv map 553 - prefer actual backrefs for RLE; better but still bad 554 - replace dummy G by (0,1) in ScalarMul 555 - dfa search; actually makes things worse 556 - ite -> api.Select 557 - naive emulated bw6 pairing working 558 - huffman improvement 559 - use less outputs (joint) 560 - use less outputs from hints 561 - optimize hint computation with corresponding output field 562 - do not use multiplication for subscalar check 563 - simplify the glv decomposition hint 564 - emulated equality assertion ([#1064](https://github.com/consensys/gnark/issues/1064)) 565 - minor optims for plonk verifier 566 - save some negs in ec arithmetic 567 - big optim for JointScalarMulBase 568 - reduce 1 lookup per backref 569 - a few petty opts 570 - do not store zero mul constraint 571 - glv-base msm for bw6 (dirty) 572 - a few little opts 573 - custom constraint for inIDelta 574 - custom constraint for advancing inI 575 - custom constraint for copying 576 - more small optim to jointScalarMulGLV 577 - more optim to jointScalarMulGLV 578 - "start at" 579 - kzg gadget using DoubleFixedQPairing 580 - make compress way faster 581 - plonk verifier 582 - binary search of longest backref 583 - small optim replacing Sub by Add 584 - one binary search only 585 - fold H before big MSM 586 - even better lookahead for lazy deflate 587 - non-native multilinear polynomial evaluation ([#1087](https://github.com/consensys/gnark/issues/1087)) 588 - groth16 uses precomputed lines for all curves 589 - mark the result of `builder.IsZero` as boolean to save constraints when used in future ([#977](https://github.com/consensys/gnark/issues/977)) 590 - smaller backrefs 591 - faster compression by reducing search space 592 - avoid some additions in jointScalarMulGLV 593 - bw6 glv with smaller loop 594 - small optim in jointScalarMulGLV 595 - save 4 scs in lookup2 api 596 - big optim for JointScalarMul and MSM 597 - isolate trival add/mul by 0/1 in plonk verifier and kzg 598 - rewrite Hayashida et al. hard part 599 - non-native modular multiplication ([#749](https://github.com/consensys/gnark/issues/749)) 600 - implement unified addition in 2-chains 601 - mutualize bit decomposition when same scalar used is ScalarMul 602 - reduce mem alloc when init suffix array 603 - use JointScalarMul in plonk recursion 604 - bounded scalar multiplication ([#934](https://github.com/consensys/gnark/issues/934)) 605 - use G2 precomputed lines for Miller loop ([#930](https://github.com/consensys/gnark/issues/930)) 606 - replace sort.Search 607 - don't use 0 as symbol delimiter 608 - lookup blueprint compile time improvement ([#899](https://github.com/consensys/gnark/issues/899)) 609 - use new fixed-arg pairing in kzg 610 - use new fixed-arg pairing in kzg (WIP) 611 - **2-chain:** handle edge cases in varScalarMul 612 - **2-chain:** optimize varScalarMul 613 - **2-chain:** small scs optim to doubleAndAdd 614 - **2-chain:** save 1 add in varScalarMul in G2 615 - **2-chain:** optimize folded MSM 616 - **2-chains:** small optim in varScalarMul and JointScalarMul 617 - **2-chains:** apply fast path for constScalarMul edge cases 618 - **2-chains:** save an addition per iteration in ScalarMul 619 - **bls12-377:** implement a variant of Karabina cyclo square 620 - **bls24:** optimize varScalarMul 621 - **bn254:** mul lines 2-by-2 in fixed-arg pairing for KZG when bit=0 622 - **bw6:** manually reducing E12 at some places yields better perf 623 - **bw6:** lines-by-acc mul gives better results than line-by-line mul 624 - **bw6:** implement a variant of Karabina cyclo square 625 - **bw6:** use optimized DoublePairFixedQ in kzg 626 - **bw6:** optimize final exponentiation 627 - **bw6:** use more efficient addchains 628 - **bw6-761:** save 1 ScalarMul in subgroup membership tests 629 - **ecdsa:** use GLV in JointScalarMulBase 630 - **ecmul:** use GLV with safe handling of edge cases in EVM ecmul 631 - **ecrecover:** save 1 MulMod in ecrecover 632 - **emulated:** huge optim scalarMulGLV 633 - **emulated:** ScalarMulBase with GLV is better 634 - **emulated:** save 1 add in scalarMulGLV 635 - **emulated:** optimize GLV hint 636 - **emulated:** big optim jointScalarMulGLV 637 - **emulated:** big optim scalarMulGLV 638 - **kzg:** remove folding and shrinked scalars options in MSM 639 - **kzg:** use MSM instead of two SM in CheckOpeningProof 640 - **plonkVerif:** manually reduce wrong-field elements here and there 641 - **sw_emulated:** optimize jointScalarMulGeneric 642 643 ### Refac 644 - compression modes 645 - remove useless functions 646 647 ### Refactor 648 - some refactoring 649 - address PR review 650 - compile 600KB 651 - use safe version in precompile 652 - merge safe implementation 653 - ScalarMulSafe and ScalarMul 654 - work on pointer values 655 - use existing modulus value 656 - use emulated pointer to avoid init when no GLV 657 - make newG2Aff private 658 - use line evaluation references for avoiding copies 659 - hardcode glv values instead of exporting from gnark-crypto 660 - remove SameScalarMul from interface 661 - plonk.Setup takes kzg srs in canonical and lagrange form ([#953](https://github.com/consensys/gnark/issues/953)) 662 - reconcile with master 663 - rename precompute to compute when done in-circuit 664 - clean comments 665 - algebra interface and pairing 666 - use external compressor repo ([#942](https://github.com/consensys/gnark/issues/942)) 667 - consolidate emulated bw6-761 pairing with other curves 668 - consolidate bw6-761 tower + fix GT exp tests 669 - apply PR review suggestions 670 - simplify hint overloading for api.Commit ([#919](https://github.com/consensys/gnark/issues/919)) 671 - re-introduce points in KZG verification key 672 - kill backend.PLONK_FRI ([#1075](https://github.com/consensys/gnark/issues/1075)) 673 - use variable point in tests for precomputeLines 674 - lzssv2 -> lzss 675 - kill backend.PLONK_FRI 676 - use lineEvaluation type instead of field elements 677 - use emulated.FieldParams as type parameter to generic Curve and Pairing ([#901](https://github.com/consensys/gnark/issues/901)) 678 - bls24 also uses size 4 lines 679 - lots of cleanup. one failing test remaining 680 - keep one version + multi-pairing 681 - get rid of lzssv1 682 - no need for outAt 683 - packing as stream feature 684 - simplify packing 685 - do not use internal objects 686 - massive simplification of lzssv1 compression 687 - consolidate pairing implementations 688 - remove log heads 689 - cleaning tests 690 - **2-chain:** precomputed lines in pairing + KZG + plonk verifier 691 - **2-chain bls24:** precomputed lines in pairing+KZG+plonk verifier 692 - **2-chains:** use gnark-crytpo fixed-arg pairing 693 - **2-chains:** remove Jacobian coordiantes code 694 - **bls12-381:** precomputed lines embedded in G2Affine struct 695 - **bn254:** precomputed lines embedded in G2Affine struct 696 - **bw6:** remove some unnecessary computations 697 - **bw6 pairing:** use MillerLoopOptAte in gnark-crypto for test 698 - **bw6-761:** use revisited Ate pairing instead of Tate 699 - **emulated:** use gnark-crytpo fixed-arg pairing 700 - **kzg:** lazy precomputation of lines 701 702 ### Revert 703 - kill IsNonZero 704 - map.keys/values to be private as before 705 - uncrowd the pr 706 - remove TestCompressWithContext 707 - strange uppercase 708 - dfa search was counterproductive 709 710 ### Style 711 - code cleaning 712 - code cleaning 713 - costmetics 714 - remove prints 715 - clean and document the code 716 - remove redundant checks 717 718 ### Test 719 - decompression works; must go about packing differently 720 - plonk verifier with precomputed lines 721 - add tests for all types of hints 722 - update stats 723 - add regression test for zero mul duplicate 724 - compress_tests pass 725 - keep test curve 726 - pack 727 - bypassing decompression works 728 - updates fuzz test with new API 729 - fuzz 730 - actual calldata 731 - 253-254-255 fails 732 - trying to recreate the length bug 733 - add testdata/ fuzzer dir 734 - average batch 735 - compression roundtrip passes w merged stream utils 736 - marshal test 737 - add scalar marshal+hash 738 - add g1 marshal + hash test 739 - add test case for not recording zero mul constraint 740 - update stats 741 - add emulated pairing circuits to stats ([#1031](https://github.com/consensys/gnark/issues/1031)) 742 - reactivate other for cmp 743 - added BenchmarkAverageBatch 744 - added average batch test case 745 - bw6 emulated kzg 746 - a couple 747 - failing test for cs loading 748 - single symbol test 749 - add huffman estimated gains 750 - decompression snark 751 - twoBackrefsAfterNonzero fails 752 - actually, 257zerosAfterNonzero fails 753 - twoZerosAfterNonzero 754 - zeroAfterNonzero added, fixed 755 - more, failing "8zerosAfterNonzero" 756 - more state machine tests. failing 757 - print compressed file size 758 - some logging 759 - **bw6:** recude multi-pairing size in tests 760 761 ### Pull Requests 762 - Merge pull request [#1044](https://github.com/consensys/gnark/issues/1044) from Consensys/feat/plonk_update 763 - Merge pull request [#1085](https://github.com/consensys/gnark/issues/1085) from Consensys/perf/ec-arithmetic-2chain 764 - Merge pull request [#1061](https://github.com/consensys/gnark/issues/1061) from Consensys/perf/ec-arithmetic 765 - Merge pull request [#1080](https://github.com/consensys/gnark/issues/1080) from Consensys/feat/emulated-nativehint 766 - Merge pull request [#1077](https://github.com/consensys/gnark/issues/1077) from shramee/faster-fq6-01 767 - Merge pull request [#1076](https://github.com/consensys/gnark/issues/1076) from shramee/faster-fq6-01-01 768 - Merge pull request [#1068](https://github.com/consensys/gnark/issues/1068) from Consensys/fix/recorded-scs 769 - Merge pull request [#1030](https://github.com/consensys/gnark/issues/1030) from Consensys/feat/bw6-subgroupcheck 770 - Merge pull request [#1049](https://github.com/consensys/gnark/issues/1049) from Consensys/perf/jointScalarMulGeneric 771 - Merge pull request [#1023](https://github.com/consensys/gnark/issues/1023) from Consensys/fix/ec-edgecases 772 - Merge pull request [#1016](https://github.com/consensys/gnark/issues/1016) from Consensys/perf/g16-circuit 773 - Merge pull request [#976](https://github.com/consensys/gnark/issues/976) from Consensys/perf/ecmul-precompile 774 - Merge pull request [#992](https://github.com/consensys/gnark/issues/992) from GoodDaisy/master 775 - Merge pull request [#975](https://github.com/consensys/gnark/issues/975) from Consensys/perf/ecdsa 776 - Merge pull request [#949](https://github.com/consensys/gnark/issues/949) from Consensys/perf/plonk-verifier 777 - Merge pull request [#928](https://github.com/consensys/gnark/issues/928) from Consensys/feat/plonk_exit_if_error 778 - Merge pull request [#933](https://github.com/consensys/gnark/issues/933) from Consensys/perf/karabina-cycloSq 779 - Merge pull request [#931](https://github.com/consensys/gnark/issues/931) from Consensys/perf/bw6-finalExp 780 - Merge pull request [#924](https://github.com/consensys/gnark/issues/924) from Consensys/feat/bypass-compression 781 - Merge pull request [#891](https://github.com/consensys/gnark/issues/891) from Consensys/feat/marshal_g1_scalar 782 - Merge pull request [#889](https://github.com/consensys/gnark/issues/889) from secure12/master 783 - Merge pull request [#876](https://github.com/consensys/gnark/issues/876) from Consensys/feat/bw6761-fixed-pairing 784 - Merge pull request [#878](https://github.com/consensys/gnark/issues/878) from Consensys/chore/example-cleanup 785 - Merge pull request [#868](https://github.com/consensys/gnark/issues/868) from Consensys/fix/decompressKarabina 786 - Merge pull request [#866](https://github.com/consensys/gnark/issues/866) from Consensys/feat/bw6761-kzg 787 - Merge pull request [#846](https://github.com/consensys/gnark/issues/846) from Consensys/feat/bw6761-pairing 788 789 790 <a name="v0.9.1"></a> 791 ## [v0.9.1] - 2023-10-16 792 ### Chore 793 - go.mod tidy 794 - update import paths 795 - remove excessive comment 796 797 ### Ci 798 - update mod download tpl for prettier errors 799 - remove gotestfmt for push to master workflow 800 - new attempt to fix push to master workflow 801 - grmpf 802 - use runner.os 803 - fix ubuntu ref 804 - fix push workflow 805 - fix push workflow 806 807 ### Docs 808 - add example docs 809 - add example docs 810 - add package documentation 811 - add package documentation 812 813 ### Feat 814 - add BLS12-381 and BLS24-315 support to Groth16 gadget 815 - add one more type parameter for witness initialisation 816 - add BLS12-381 and BLS24-315 support to KZG gadget 817 - add Curve and Pairing compatiblity for BLS24-315 818 - add placeholder generating functions 819 - add default pairing and curve getter 820 - add witness assignment function 821 - add helper methods to native pairing 822 - add generic Groth16 implementation 823 - add MSM and GT equality to generic interfaces 824 - add generic KZG polynomial commitment verification 825 - add generic Curve and Pairing interfaces 826 827 ### Fix 828 - cast bls12377 GT element coords to bw6 fr 829 - fixed fold_state 830 831 ### Perf 832 - a special case for mulacc ([#859](https://github.com/consensys/gnark/issues/859)) 833 834 ### Refactor 835 - remove typed KZG and Groth16 verifiers 836 - rename KZG tests 837 - use only KZG VK part 838 - implement fully generic kzg verifier 839 - use name type parameter types 840 - add Scalar type alias 841 - fix types 842 - implement generic pairing and curve for bls12377 843 - add Add to emulated SW 844 845 ### Test 846 - rename subtests 847 - add ValueOf tests 848 - full generic groth16 verifier 849 - implement inner circuit without commitment 850 - implement recursion test 851 - add generic groth16 test (broken) 852 - add KZG test for BLS12377 853 - update version tag ([#841](https://github.com/consensys/gnark/issues/841)) 854 855 ### Pull Requests 856 - Merge pull request [#840](https://github.com/consensys/gnark/issues/840) from Consensys/refactor/generic-kzg 857 - Merge pull request [#820](https://github.com/consensys/gnark/issues/820) from Consensys/fix/fold_state 858 859 860 <a name="v0.9.0"></a> 861 ## [v0.9.0] - 2023-09-19 862 ### Build 863 - fix linter warning 864 - update PR template and CI actions 865 - generify bsb22 comm fs move 866 867 ### Ci 868 - cosmetic change 869 - remove ubuntu specifics from windows / macOS path 870 - adjust test on non-ubuntu target 871 - avoid running std/ test on macOS CI 872 873 ### Feat 874 - add bounded comparator functions ([#530](https://github.com/consensys/gnark/issues/530)) 875 - add sha3 primitive ([#817](https://github.com/consensys/gnark/issues/817)) 876 877 ### Fix 878 - assert that the binary decomposition of a variable is less than the modulus ([#835](https://github.com/consensys/gnark/issues/835)) 879 - remove panic when iterating constraints 880 - don't bind bsb22 comm to gamma 881 - move bsb22 comm fs in plonk prover 882 - fs bsb22 commitment fs right before needed 883 - plonk must commit to Qcp 884 885 ### Perf 886 - improve plonk prover memory footprint ([#815](https://github.com/consensys/gnark/issues/815)) 887 888 ### Refactor 889 - **pairing:** remove bls24 bench + remove bn254 duplicate line 890 891 ### Pull Requests 892 - Merge pull request [#816](https://github.com/consensys/gnark/issues/816) from Consensys/perf/pairing-neg 893 - Merge pull request [#812](https://github.com/consensys/gnark/issues/812) from Consensys/fix/plonk-bsb-challenge 894 895 896 <a name="v0.9.0-alpha"></a> 897 ## [v0.9.0-alpha] - 2023-08-18 898 ### Bench 899 - gkr inefficient 900 - merkle tree 901 902 ### Build 903 - update direct dependencies 904 - go gen 905 - generify the changes 906 - generify bn254 changes 907 - generify 908 - some generification and remove commented code 909 - generify plonk refactor 910 - generify commitment hashing 911 - generify batch verification 912 - generify serialization fix 913 - merge named hint PR 914 - generify some 915 - remove debugging modifications 916 - generify bn254 changes 917 - generify bn254 changes 918 - update gnark-crypto dependency 919 - update gnark-crypto dep 920 - go generate 921 - update ci script 922 - update stats 923 - go get gnark-crypto[@develop](https://github.com/develop) 924 - generify hashing pi2 925 - generify public var fix 926 - generify verifier changes 927 - generify prover changes 928 - generify setup changes 929 - go generate 930 - generify verifier changes 931 - generify prover changes 932 - generify setup changes 933 - generify constraint changes 934 - generify mpcsetup for all curves 935 - upgraded github.com/stretchr/testify v1.8.1 => v1.8.2 936 - gnark-crypto[@develop](https://github.com/develop) 937 - generify 938 - generify bn254/gkr changes 939 - reran go generate 940 - make linter happy 941 942 ### Chore 943 - update gnark-crypto dependency ([#790](https://github.com/consensys/gnark/issues/790)) 944 - make staticcheck happy 945 - merge changes 946 - more accurate field name, remove some dead code 947 - rm deadcd, improve verifier mem, some docs 948 - document hollow, remove in-house search 949 - clean up tests 950 - delete unnecessary test cases 951 - go get gnark-crypto[@develop](https://github.com/develop) 952 - point to gnark-crypto[@develop](https://github.com/develop) 953 - git ignore go workspace ([#635](https://github.com/consensys/gnark/issues/635)) 954 - remove debug printing code 955 - remove training wheels 956 - update gnark-crypto dependency for exported towers 957 - remove heavy profiling and compiling 958 - some efforts from before christmas break 959 960 ### Ci 961 - allow weak rng in marshaling tests 962 - ensure linter runs on generated files + adjustements ([#677](https://github.com/consensys/gnark/issues/677)) 963 964 ### Clean 965 - removed dead code + double comments 966 - removed dead code 967 - even more deadcode 968 - removed more dead code 969 - removed dead code 970 971 ### Dep 972 - newer gnark-crypto 973 - gnark-crypto 974 975 ### Doc 976 - explain commitment constraint 977 - explain committed constraint 978 979 ### Docs 980 - clarify some comments 981 - fix select description in field emulation 982 - GKR API 983 - comment fixed pairing 984 - point at infinity 985 - better names and a link to hackMd 986 - explain the optionality of f in AddSolverHint 987 - typo 988 - subgroup check in doc-example 989 - comment about AddUnified 990 - typo 991 - godoc linking 992 - explain that r1cs.NewBuilder returns frontend.Committer 993 - update pr template 994 - make long equation codeblock 995 - correct comment 996 - comment about subgroup membership 997 - comment about subgroup membership 998 - update version in README.md 999 - make href in godoc 1000 - correct `WithNbDigits` description ([#522](https://github.com/consensys/gnark/issues/522)) 1001 - add documentation to std/algebra packages 1002 - implement lookup2 comment 1003 - fix docs, make links 1004 - make documentation of weierstrass/ better 1005 - add comments to sw_emulated 1006 - add package documentation and example 1007 - **fixed-emulated-pairing:** add some comments 1008 1009 ### Feat 1010 - hint name options 1011 - use AssertIsOnG2 for ECPAIR precompile + comments 1012 - calldatacopy in compute_gamma_kzg 1013 - calldata ok 1014 - compute_commitment_linearised_polynomial calldata ok 1015 - fold_h calldata ok 1016 - verify_quotient_poly_eval_at_zeta calldata ok 1017 - pi contribution in calldata ok 1018 - sum_pi_wo_commit calldata ok 1019 - derive challenges calldata ok 1020 - sanity checks in calldata Ok 1021 - put function calls at the beginning of Verify 1022 - verifier in one assembly block 1023 - zeta to the n minus 1 extracted from compute_pi 1024 - one single assembly block ok 1025 - check_input_size in main block 1026 - challenges derivation in the main block 1027 - compute_pi in main assembly block ok 1028 - compute_pi assembly ok 1029 - hash_fr in assembly + removed Utils 1030 - staticcall fails -> revert immediately instead of updated state_success 1031 - zeta_power_n_minus_one save and reused in compute_pi 1032 - [PLONK_AUDIT_4-15] fixes 757 1033 - status of staticcalls are checked, fixes [#753](https://github.com/consensys/gnark/issues/753) 1034 - added plonk.ProvingKey WriteRawTo and UnsafeReadFrom ([#746](https://github.com/consensys/gnark/issues/746)) 1035 - [PLONK_AUDIT_4-8] fixes [#743](https://github.com/consensys/gnark/issues/743) 1036 - [PLONK_AUDIT_4-4] fixes [#741](https://github.com/consensys/gnark/issues/741) 1037 - restored comments 1038 - [PLONK_AUDIT_4-9] fixes 738 1039 - "named gate" 1040 - [PLONK_AUDIT_4-11] fixes [#735](https://github.com/consensys/gnark/issues/735) 1041 - gkr-api for plonk 1042 - update plonk solidity template ([#729](https://github.com/consensys/gnark/issues/729)) 1043 - added dummy setup part for g16 multi commit ([#725](https://github.com/consensys/gnark/issues/725)) 1044 - implement add-only Joye scalarMul 1045 - groth16 commitmetInfo experiments 1046 - in-place-ish DivideByThresholdOrList 1047 - add sha2 primitive ([#689](https://github.com/consensys/gnark/issues/689)) 1048 - commitment info in groth16.vk[bn254] serialization 1049 - commitment placeholder -> randomness 1050 - lazy line initialising 1051 - define precomputed lines only if initalising 1052 - filterHeap for unsorted lists 1053 - groth16 multicommit setup bn254, hopefully 1054 - batch pedersen poks 1055 - implement NIST P-256 and P-384 curves ([#697](https://github.com/consensys/gnark/issues/697)) 1056 - differentiate ecrecover with strict and lax check for s ([#656](https://github.com/consensys/gnark/issues/656)) 1057 - no commitments -> vanilla groth16 1058 - prover with no commitment act like vanilla groth16 1059 - reflect pedersen changes in bn254 1060 - emulated pairing 2-by-2 fixed circuit for EVM 1061 - verifier template ok 1062 - prover template ok 1063 - modification opening order kzg bn254 1064 - plonk provingkey marshaling with muticommits 1065 - introduce constraint blueprints. improve memory usage, enables custom gates and group of constraints ([#641](https://github.com/consensys/gnark/issues/641)) 1066 - sr1cs multicommits 1067 - compilation side - plonk multicommits 1068 - described zpnmo parameter + reuse zpnmo in compute_alpha_square_lagrange_0 (forgot to push it) 1069 - use state instead of mload(0x40) 1070 - bn254 plonk multicommit backend 1071 - log-derivative vector lookups ([#620](https://github.com/consensys/gnark/issues/620)) 1072 - multi-commits in constraint system data structures 1073 - add modular square root in field emulation ([#623](https://github.com/consensys/gnark/issues/623)) 1074 - plonkVk.WriteRawTo 1075 - serialize minimal commitmentinfo with plonk vk 1076 - use Brier-Joye unified add for evm ecadd 1077 - experiments with solving 1078 - development done for bn254. to test and generify 1079 - "generic" top sort 1080 - simple compilation test passes 1081 - support more operations 1082 - codegen 1083 - yet more codegen 1084 - add n to 1 MUX and MAP ([#475](https://github.com/consensys/gnark/issues/475)) 1085 - add EVM precompiles ([#488](https://github.com/consensys/gnark/issues/488)) 1086 - add PairingCheck function 1087 - store api in pairing structs 1088 - add simple key value storage 1089 - embed key-value storage in R1CS and SCS 1090 - embed key-value storage in test engine 1091 - add gadget for enabling multiple commitments in-circuit ([#562](https://github.com/consensys/gnark/issues/562)) 1092 - isZero in field emulation ([#609](https://github.com/consensys/gnark/issues/609)) 1093 - range checks using log derivative, fixes [#581](https://github.com/consensys/gnark/issues/581) ([#583](https://github.com/consensys/gnark/issues/583)) 1094 - implement commit for test engine 1095 - set default compression threshold ([#599](https://github.com/consensys/gnark/issues/599)) 1096 - add IsOnCurve to sw_bn254/g2 1097 - add IsOnCurve to sw_emulated 1098 - add bls12-381 to std/algebra/emulated 1099 - blind commitment 1100 - add a partition selector ([#486](https://github.com/consensys/gnark/issues/486)) 1101 - reintroduce hints for field emulation ([#547](https://github.com/consensys/gnark/issues/547)) 1102 - some bsb22 proving in plonk 1103 - range check gadget ([#472](https://github.com/consensys/gnark/issues/472)) 1104 - plonk frontend filter common cases of duplicate constraints ([#539](https://github.com/consensys/gnark/issues/539)) 1105 - add calling hints to field emulation 1106 - commitment verification - plonk bn254 1107 - gnark/profile now filter frontend private method for clarity and return a tree as txt repr ([#538](https://github.com/consensys/gnark/issues/538)) 1108 - BN254 pairing ([#411](https://github.com/consensys/gnark/issues/411)) 1109 - compute table on init once 1110 - add defer to the Compiler interface ([#483](https://github.com/consensys/gnark/issues/483)) 1111 - compilation, setup and commitment done; proof and verification next 1112 - update gnark version to v0.8.0 1113 - add equality assertion for GT elements 1114 - add BN254 pairing using field emulation 1115 - **fields_bn254:** add IsZero in extensions 1116 - **fields_bn254:** add Select in extensions 1117 - **fields_bn254:** add String helpers 1118 - **pairing:** check points are on curve and twist 1119 - **sw_bls12381:** add AssertIsOnG1 and AssertIsOnG2 1120 - **sw_bls12381:** G1 and G2 membership without hints 1121 - **sw_bn254:** add AssertIsOnG2 1122 - **sw_bn254:** G2 membership without hints 1123 - **sw_bn254:** endomorphism optims for G2 membership 1124 - **sw_emulated:** AddSafe for input points equal or not 1125 - **sw_emulated:** infinity as (0,0) edge-cases in UnifiedAdd 1126 - **sw_emulated:** infinity as (0,0) edge-cases in ScalarMul 1127 1128 ### Feat 1129 - Export multicommit ([#789](https://github.com/consensys/gnark/issues/789)) 1130 1131 ### Fix 1132 - use jacobain double for test 1133 - fixed [#761](https://github.com/consensys/gnark/issues/761) 1134 - fixed kzg G1 srs in template :/ 1135 - compute_kzg fixed calldata 1136 - update develop version ([#776](https://github.com/consensys/gnark/issues/776)) 1137 - update circuits stats 1138 - do not accumulate terms with zero coefficient for addition ([#763](https://github.com/consensys/gnark/issues/763)) 1139 - use AddUnified in ECRecover 1140 - create full-length slice for gkr value ([#751](https://github.com/consensys/gnark/issues/751)) 1141 - removed deadcode 1142 - loop counter corrected fixes [#755](https://github.com/consensys/gnark/issues/755) 1143 - fixed pairing check (wait for 4-5 to check staticcall using dedicated function) 1144 - range checks for quotient + linearised polynomials openigns 1145 - plonk scs serialization issues ([#747](https://github.com/consensys/gnark/issues/747)) 1146 - compute_pi takes the proof only when commit is called 1147 - Verify is public 1148 - fixed visibilities, changed library to contract 1149 - replace hints bn254 1150 - emulated ToBits ([#731](https://github.com/consensys/gnark/issues/731)) 1151 - K -> Z 1152 - nil -> empty slice 1153 - the previous fix 1154 - bn254 multicommit proving keys 1155 - commitmentInfo serialization 1156 - committed commitment folding bug 1157 - groth16 tests pass 1158 - bellman test vk 1159 - make linter happy 1160 - randomize fake commitments 1161 - groth16 works. plonk fuzzer fails 1162 - remove unnecessary import 1163 - test double fixed pairing 1164 - commitment to commitment works 1165 - single commitments work again 1166 - attempt at commitment hint input filtering 1167 - two indep commitments work for bn254 1168 - using loop counter in lambda 1169 - single commits work for bn254 1170 - no commitments case for bn254 1171 - empty commitments vector 1172 - no private committed bug 1173 - groth16 commit verification error handling 1174 - gorth16 commit compile bug 1175 - re uploading solidity template 1176 - removed solidity folder 1177 - remove dead file 1178 - removed non used code 1179 - removed commented code 1180 - fixes [#672](https://github.com/consensys/gnark/issues/672) 1181 - fixed kzg serialisation on bn254 1182 - init elements in arrays and slices if have init hook ([#695](https://github.com/consensys/gnark/issues/695)) 1183 - PI2 renaming in marshal 1184 - failing vk serialization test 1185 - newNamedHint bug 1186 - one commit works 1187 - claimed quotient 1188 - no commit test passes 1189 - prover no longer errors; unexpected quotient for 2-commit 1190 - Proving key serialization 1191 - proof serialization 1192 - fix race condition when compiling circuits in parallel ([#676](https://github.com/consensys/gnark/issues/676)) 1193 - added missing cbor tags for BlueprintSparseR1CBool 1194 - register commitment func with new name 1195 - HasCommitment -> NbCommitments 1196 - multi-commit unsupported error messages 1197 - in case no commitment 1198 - private -> public 1199 - assert oddity of y coordinate from v instead of high bit ([#655](https://github.com/consensys/gnark/issues/655)) 1200 - companion to pedersen breakup 1201 - field emulation subtract padding compute ([#603](https://github.com/consensys/gnark/issues/603)) 1202 - add (0,0) case to curve membership 1203 - fixed double comments 1204 - fixes [#768](https://github.com/consensys/gnark/issues/768) 1205 - one omitted change 1206 - finalExp when element is 1 in torus 1207 - restore reference plonk circuit size 1208 - don't set comm to 0; it might be inverted 1209 - filter constants 1210 - use frontend.Committer properly 1211 - plonk.Commit race condition 1212 - remove an ineffectual assign in E6 1213 - update stats 1214 - marshaling tests - plonk 1215 - double blind commitment 1216 - add pi2 to fs - bn254 1217 - bsb22 in plonk with public vars 1218 - match latest backend changes in bw6-761 1219 - minor mistake in setup generification 1220 - make linter happy 1221 - disastrous typo 1222 - subtraction overflow computation bug ([#579](https://github.com/consensys/gnark/issues/579)) 1223 - circuit-efficient Expt 1224 - open qcp commitment 1225 - qcp formats 1226 - computing t(X) requires lagrange coset input 1227 - handle nested Define signature in call stack for profile 1228 - pass canonical version of pi2 to computeLinearizedPolynomial 1229 - use mocked api.Commit also in Windows tests ([#560](https://github.com/consensys/gnark/issues/560)) 1230 - fix [#516](https://github.com/consensys/gnark/issues/516) compiler detects api.AssertIsDifferent(x,x) with better error ([#552](https://github.com/consensys/gnark/issues/552)) 1231 - do not pass limb width enforcement for consts in AssertIsEqual ([#550](https://github.com/consensys/gnark/issues/550)) 1232 - append solver options to prover options in tests 1233 - fix profile example to not compare expected output with varying line numbers 1234 - allow unreplaced BSB22 commitment hint in solver ([#507](https://github.com/consensys/gnark/issues/507)) 1235 - stable levelbuilder hint mapping ([#533](https://github.com/consensys/gnark/issues/533)) 1236 - initialize new variable if field emulation multiplication check ([#534](https://github.com/consensys/gnark/issues/534)) 1237 - handle stack traces with deferred function ([#521](https://github.com/consensys/gnark/issues/521)) 1238 - update path to algebra/native/twistededwards 1239 - update path to algebra/native 1240 - update path to algebra/native 1241 - use sw_emulated instead of weierstrass 1242 - remove pairing_bn254 1243 - restrict constants in field emulation to width ([#518](https://github.com/consensys/gnark/issues/518)) 1244 - closes [#509](https://github.com/consensys/gnark/issues/509) api did not handle AssertIsLessOrEqual with constant as first param ([#511](https://github.com/consensys/gnark/issues/511)) 1245 - remove profiling 1246 - used keyed struct fields, silence linter 1247 - scs.MarkBoolean missing return w/ constant ([#491](https://github.com/consensys/gnark/issues/491)) 1248 - allocate new variable in engine.MulAcc ([#482](https://github.com/consensys/gnark/issues/482)) 1249 - update version ([#477](https://github.com/consensys/gnark/issues/477)) 1250 - remove printfs 1251 - witness-related functions no longer return ptrs 1252 - reflect gkr changes in gnark-crypto 1253 - log correction 1254 - avoid overlogging 1255 - dumping error and solver test 1256 - solving bug - bn254 1257 - bn254 mem pool 1258 - a small bug and some new benchmarks 1259 - go mod tidy 1260 - mod tidy 1261 - no defineGkrHints for tinyfield and more 1262 - no gkr for tinyfield 1263 - minor stuff, some code generation 1264 - small mimc test 1265 - race condition 1266 - propagating gkrInfo 1267 - import cycle 1268 - solver works. prover doesn't. possibly deeper gkr issue 1269 - solving works on the simplest example 1270 - inconsistencies re assignments alignment 1271 - more `ToBigIntRegular` => `BigInt` 1272 - **add-only scalarMul:** handle 0-scalar and (0,0) edge-cases 1273 - **ecadd:** add y1+y2=0 edge case 1274 - **sw_bn254:** fix size of 2-naf table of the seed 1275 1276 ### Perf 1277 - ScalarMulBase for sw_bls12377 on G2 1278 - ELM03+Joye07 for emulated scalarMul 1279 - special E12 squaring in the second ML iteration 1280 - replace Add(Mul) by MulAdd 1281 - async parallel plonk pr read ([#748](https://github.com/consensys/gnark/issues/748)) 1282 - add a generalized version of binary selection ([#636](https://github.com/consensys/gnark/issues/636)) 1283 - use ScalarMulAddOnly is ecrecover and ecmul precompiles 1284 - use ScalarMulAddOnly is ecrecover and ecmul precompiles 1285 - add frontend.WithCompressThreshold in compile test opts 1286 - replace intSet by bitset 1287 - use cpt in topo sort 1288 - optimise one sub 1289 - factorize MultiLin.Evaluate hot loop 1290 - reflect new gc gkr opts and parallelize solving 1291 - ScalarMulBase with pre-computed points + use in ecdsa 1292 - use `api.Lookup2` for constructing 4 to 1 mux 1293 - use `api.Select` for 2 to 1 mux 1294 - ScalarMulBase for sw_bls12377 1295 - optimize final exp (Fuentes et al.) 1296 - save 1 Select at each iteration in the emulated scalar mul 1297 - reduce mem allocs in scs frontend ([#654](https://github.com/consensys/gnark/issues/654)) 1298 - special E24 squaring in the second ML iteration 1299 - ScalarMulBase for sw_bls24315 G1/G2 + KZG in-circuit 1300 - plonk ccs serialization ([#557](https://github.com/consensys/gnark/issues/557)) 1301 - **bls381-pairing:** optimize Frobenius and FrobeniusSquare 1302 - **bn254-pair:** MulByNonResidueInverse using hints 1303 - **bn254-pair:** optimize fields ops + cleaning 1304 - **bn254-pair:** optimize Halve using hints 1305 - **bn254-pair:** optimize FrobeniusSquare computations 1306 - **bn254-pair:** use hinted Div in tower instead of plain inv+mul 1307 - **bn254-pairing:** isolate i=63 in MillerLoop to save a doubleStep 1308 - **bn254-pairing:** test and optimize MultiMillerLoop 1309 - **bn254-pairing:** some missed small optims 1310 - **bn254-pairing:** Mul lines between them before mul by accumulator 1311 - **ecdsa:** JoinScalarMulBase avoids 0 edge-cases 1312 - **pairing-bn254:** optimize emulated pairing over BN254 1313 - **pairing-bn254:** optimize Miller loop (last line out of loop) 1314 - **pairing-bn254:** optimize doubleStep (mulByConst 3) 1315 - **pairings:** switch to no edge-cases when single pairing 1316 - **scalarMul:** saves computation in last two iterations 1317 - **scalarMulBase:** lookup2 for the first 2 bits 1318 - **sw_bn254:** use 2-NAF for fixed scalar Mul on G2 1319 - **sw_bn254:** optim of fixed scalar Mul on G2 1320 - **sw_bn254:** use addchain/doubleAndAdd for fixed scalar mul 1321 1322 ### Perf 1323 - Improve MultiLin.Eval number of constraints ([#788](https://github.com/consensys/gnark/issues/788)) 1324 1325 ### Refactor 1326 - use select instead of lookup2 1327 - renaming as per robot overlords 1328 - inputs check are in a proper function 1329 - use gnark-crypto gate registries 1330 - apply suggested edits 1331 - compactify commitment tests ([#728](https://github.com/consensys/gnark/issues/728)) 1332 - remove api from ScalarMulAddOnly arguments 1333 - reflect commitmentInfo changes in plonk 1334 - reflect changes in plonk prover 1335 - bn254 groth16 commitmentinfo 1336 - separate groth16 commitmentInfo experiments 1337 - do not pass api in pairing 1338 - FindInSlice use 1339 - make native precomputed lines private 1340 - remove profiler code 1341 - use c.CommitmentWireIndexes in Plonk backend 1342 - eliminate GetNbCommitments 1343 - groth16 and plonk tests to hollow circuits themselves 1344 - test utils to another file 1345 - emulation parameters ([#696](https://github.com/consensys/gnark/issues/696)) 1346 - get the input length for pair lengths 1347 - end-to-end commitment tests 1348 - rename PI2 1349 - reuse dummy one 1350 - remove HintIds struct 1351 - NewNamedHint not taking hint function input 1352 - r1cs NewNamedHint not taking hint func 1353 - commitmentInfo array for groth16 bn254 1354 - commitmentInfo array in plonk setup 1355 - commitmentinfo array in plonk prover 1356 - get rid of CommittedAndCommitment 1357 - limit commitment info in groth16 ver 1358 - in method work with pointers instead of values 1359 - init b of twist once 1360 - use assertIsOnCurve from sw_emulated 1361 - init point at return 1362 - g2 gadget as pointer 1363 - init emulated constants once 1364 - make double, add, triple and doubleAndAdd private 1365 - remove DivSpecial 1366 - do not include committed wires indexes in plonk vk 1367 - more adapting to separated kzg srs 1368 - use separated kzg pk, vk 1369 - separate final exp into safe and unsafe 1370 - gkrAPI is no longer a frontend.API 1371 - rename ScalarMulAddOnly to ScalarMul and ditch old 1372 - remove duplicate test utils 1373 - do not pass api in towers 1374 - embed api and init emulation in tower 1375 - same bsb22 placeholder for groth16 and plonk 1376 - make E6 double public 1377 - remove dead code (Frobenius and GS cyclosq) 1378 - remove profiler in test 1379 - remove profiler in test 1380 - make lineEvaluation private 1381 - make all hints private 1382 - unify calling interfaces 1383 - made some util func private 1384 - expose all typed backends in gnark/backend (moved from internal/) ([#561](https://github.com/consensys/gnark/issues/561)) 1385 - minor code cleaning 1386 - move utils in mpcsetup; limit api surface 1387 - setup -> mpcsetup 1388 - flatten mpc structure, idomify APIs 1389 - expose all typed backends in gnark/backend (moved from internal/) 1390 - compute lagrange basis from scratch 1391 - dont need nativemod in emulated hint unwrapper 1392 - solving and compilation in accordance with commitmentInfo struct changes 1393 - SparceCS.CommitmentConstraint instead of C; more "honest" constraints 1394 - take api.Commit to api.go 1395 - algebra into native (2-chain) and emulated 1396 - use generator from gnark-crypto to init points 1397 - make internal methods private 1398 - use generator from gnark-crypto to init points 1399 - rename methods for getting tables 1400 - lazy compute the base tables on init 1401 - plonk uses constraint/ and couple of fixes closes [#467](https://github.com/consensys/gnark/issues/467) ([#493](https://github.com/consensys/gnark/issues/493)) 1402 - latest gnark-crypto, use FFT signature change with opts ([#485](https://github.com/consensys/gnark/issues/485)) 1403 - make methods private 1404 - remove Commit from Compiler, make optional interface 1405 - some cleanup - bn254 only 1406 - hint-lite, has import cycle 1407 - use mostly no-ptr data. better information silos 1408 - improved, simplified solver; compiler to match 1409 - all in one package 1410 - MSM takes Montgomery only - Plonk 1411 - groth16 backend tests pass 1412 - no non-mont on bls12-377 1413 - **pairing-bn254:** remove dead code (fields_e2) 1414 - **pairing-bn254:** remove dead code (E2 Halve) 1415 - **pairing-bn254:** remove dead code 1416 1417 ### Refactor 1418 - std/algebra ([#526](https://github.com/consensys/gnark/issues/526)) 1419 1420 ### Remove 1421 - unused func 1422 - some unused code 1423 1424 ### Revert 1425 - special case for empty slice 1426 - forced conversion 1427 - remove extra testing funcs 1428 - unexport cs.system 1429 - unnecessary stylistic change 1430 - unnecessary stylistic changes 1431 - bn254/gkr changes 1432 1433 ### Style 1434 - remove prints 1435 - remove comment 1436 - subscript group index 1437 - remove commented import 1438 - unused input -> _ 1439 - correct some comments 1440 - fewer vars 1441 - remove unnecessary stylistic changes 1442 - academic style reference for documentation 1443 - rename addStepLineOnly to lineCompute 1444 - rename variables 1445 - apply suggested edits 1446 - public-value-defining constraints as -x + c = 0 for consistency 1447 - **fields_bn254:** clean hints 1448 - **pairing-bn254:** add comments 1449 - **pairing-bn254:** add comments 1450 1451 ### Test 1452 - product of pairings on bls12-381 1453 - print some linpoly arguments 1454 - more for bsb22 plonk 1455 - add failing test for round trip pk serialization 1456 - handle all cases in a single parametric circuit 1457 - proof is correct. verification failing 1458 - print solution 1459 - public values 1460 - don't parallelize 1461 - print commitment 1462 - pi is computed correctly 1463 - failing on parallel 1464 - JointScalarMulBase 1465 - use assertless sampling 1466 - use deep.Equal in Plonk roundtrip 1467 - fails. pointer issue 1468 - add bn254 and bl12381 test of AssertIsOnCurve 1469 - test bls12-381 in sw_emulated + comments 1470 - add safe final exp tests 1471 - test also unsafe final exp 1472 - multi commits in scs 1473 - added failing test for groth16 pk serialization round trip 1474 - added missing integration test for round trip serialization 1475 - remove profiling test 1476 - remove blindings and hashes, simplest no-commitment test that fails 1477 - added reference benchmark 1478 - ensure phase2 serialization is tested 1479 - solver error found 1480 - with dependency. err: inputs are modified 1481 - add emulated Fp12 tests 1482 - add emulated Fp6 tests 1483 - add emulated Fp2 tests 1484 - basic permutation tests passing 1485 - only the gkr solver 1486 - more instances 1487 - with dependency 1488 - "doubling" circuit passes 1489 - end-to-end: can't use test engine (for now) 1490 - **emulated:** ScalarMul with random scalars 1491 - **fields_bn254:** add remaing tests 1492 - **fields_bn254:** clean tests 1493 - **sw_emulated:** infinity as (0,0) edge-cases in ScalarMul 1494 1495 ### Pull Requests 1496 - Merge pull request [#814](https://github.com/consensys/gnark/issues/814) from Consensys/develop 1497 - Merge pull request [#804](https://github.com/consensys/gnark/issues/804) from Consensys/feat/revert_staticcall 1498 - Merge pull request [#796](https://github.com/consensys/gnark/issues/796) from Consensys/feat/calldata_pi_proof 1499 - Merge pull request [#795](https://github.com/consensys/gnark/issues/795) from Consensys/feat/clean_compute_pi 1500 - Merge pull request [#794](https://github.com/consensys/gnark/issues/794) from Consensys/feat/clean_hash_fr 1501 - Merge pull request [#792](https://github.com/consensys/gnark/issues/792) from Consensys/perf/solidity-cached-array-index 1502 - Merge pull request [#783](https://github.com/consensys/gnark/issues/783) from Consensys/perf/emulated-scalarMul 1503 - Merge pull request [#775](https://github.com/consensys/gnark/issues/775) from Consensys/fix/plonk_audit_4-23 1504 - Merge pull request [#772](https://github.com/consensys/gnark/issues/772) from Consensys/perf/pairing-add0 1505 - Merge pull request [#760](https://github.com/consensys/gnark/issues/760) from Consensys/perf/emulated-scalarMul 1506 - Merge pull request [#769](https://github.com/consensys/gnark/issues/769) from Consensys/fix/plonk_contract_i_768 1507 - Merge pull request [#762](https://github.com/consensys/gnark/issues/762) from Consensys/fix/i_761 1508 - Merge pull request [#758](https://github.com/consensys/gnark/issues/758) from Consensys/fix/plonk_audit_4-15 1509 - Merge pull request [#754](https://github.com/consensys/gnark/issues/754) from Consensys/fix/plonk_audit_4-5 1510 - Merge pull request [#756](https://github.com/consensys/gnark/issues/756) from Consensys/fix/plonk_audit_4-13 1511 - Merge pull request [#742](https://github.com/consensys/gnark/issues/742) from Consensys/fix/plonk_audit_4-4 1512 - Merge pull request [#744](https://github.com/consensys/gnark/issues/744) from Consensys/fix/plonk_audit_4-8 1513 - Merge pull request [#714](https://github.com/consensys/gnark/issues/714) from Consensys/perf/emulated-pairing 1514 - Merge pull request [#698](https://github.com/consensys/gnark/issues/698) from Consensys/evm/ecpair 1515 - Merge pull request [#726](https://github.com/consensys/gnark/issues/726) from Consensys/emulated/scalarMul 1516 - Merge pull request [#708](https://github.com/consensys/gnark/issues/708) from Consensys/feat/fixed-pairing 1517 - Merge pull request [#739](https://github.com/consensys/gnark/issues/739) from Consensys/fix/plonk_audit_4-9 1518 - Merge pull request [#736](https://github.com/consensys/gnark/issues/736) from Consensys/fix/plonk_audit_4-11 1519 - Merge pull request [#737](https://github.com/consensys/gnark/issues/737) from Consensys/feat/gkr-custom-gates 1520 - Merge pull request [#443](https://github.com/consensys/gnark/issues/443) from Consensys/feat/gkr-api 1521 - Merge pull request [#733](https://github.com/consensys/gnark/issues/733) from Consensys/refactor/gkr-notfrontend-api 1522 - Merge pull request [#723](https://github.com/consensys/gnark/issues/723) from ConsenSys/fix/serialization 1523 - Merge pull request [#702](https://github.com/consensys/gnark/issues/702) from ConsenSys/feat/g16-multicommits 1524 - Merge pull request [#712](https://github.com/consensys/gnark/issues/712) from ConsenSys/fix/plonk-commit0 1525 - Merge pull request [#707](https://github.com/consensys/gnark/issues/707) from ConsenSys/perf/scalarMul-2chain 1526 - Merge pull request [#706](https://github.com/consensys/gnark/issues/706) from ConsenSys/perf/scalarMul-2chain 1527 - Merge pull request [#694](https://github.com/consensys/gnark/issues/694) from ConsenSys/feat/change_opening_order_kzg 1528 - Merge pull request [#701](https://github.com/consensys/gnark/issues/701) from ConsenSys/fix/672 1529 - Merge pull request [#668](https://github.com/consensys/gnark/issues/668) from ConsenSys/feat/plonk-multicommit 1530 - Merge pull request [#666](https://github.com/consensys/gnark/issues/666) from ConsenSys/feat/hint-naming-options 1531 - Merge pull request [#661](https://github.com/consensys/gnark/issues/661) from ConsenSys/perf/ecdsa 1532 - Merge pull request [#629](https://github.com/consensys/gnark/issues/629) from ConsenSys/feat/emulated/subgroup-check 1533 - Merge pull request [#658](https://github.com/consensys/gnark/issues/658) from ConsenSys/perf/kzg-verify 1534 - Merge pull request [#632](https://github.com/consensys/gnark/issues/632) from ConsenSys/refactor/kzg-srs-breakup-companion 1535 - Merge pull request [#633](https://github.com/consensys/gnark/issues/633) from ConsenSys/plonk-commitment-info 1536 - Merge pull request [#631](https://github.com/consensys/gnark/issues/631) from ConsenSys/feat/AddSafe 1537 - Merge pull request [#625](https://github.com/consensys/gnark/issues/625) from aybehrouz/perf/mux 1538 - Merge pull request [#613](https://github.com/consensys/gnark/issues/613) from ConsenSys/fix-605 1539 - Merge pull request [#586](https://github.com/consensys/gnark/issues/586) from ConsenSys/406-bsb22-commitments-plonk 1540 - Merge pull request [#591](https://github.com/consensys/gnark/issues/591) from ConsenSys/feat/bls12-381-pairing 1541 - Merge pull request [#594](https://github.com/consensys/gnark/issues/594) from ConsenSys/perf/bn254-FinalExp 1542 - Merge pull request [#566](https://github.com/consensys/gnark/issues/566) from ConsenSys/perf/bn254-pairing 1543 - Merge pull request [#563](https://github.com/consensys/gnark/issues/563) from ConsenSys/stage/bnb/groth16setup 1544 - Merge pull request [#519](https://github.com/consensys/gnark/issues/519) from ConsenSys/refactor/remove-profiling 1545 - Merge pull request [#514](https://github.com/consensys/gnark/issues/514) from ConsenSys/refactor/weierstrass-scalarmulbase 1546 - Merge pull request [#506](https://github.com/consensys/gnark/issues/506) from ConsenSys/perf/kzg-in-circuit 1547 - Merge pull request [#497](https://github.com/consensys/gnark/issues/497) from ConsenSys/perf/ecdsa 1548 - Merge pull request [#503](https://github.com/consensys/gnark/issues/503) from ConsenSys/docs/emulated-select 1549 - Merge pull request [#481](https://github.com/consensys/gnark/issues/481) from ConsenSys/refactor/commit-interface 1550 - Merge pull request [#480](https://github.com/consensys/gnark/issues/480) from ConsenSys/feat/kvstore 1551 1552 1553 <a name="v0.8.1"></a> 1554 ## [v0.8.1] - 2023-07-11 1555 ### Chore 1556 - update CHANGELOG 1557 - update version 1558 - update gnark-crypto dependency 1559 1560 ### Pull Requests 1561 - Merge pull request [#771](https://github.com/consensys/gnark/issues/771) from Consensys/release/v0.8.1 1562 1563 1564 <a name="v0.8.0"></a> 1565 ## [v0.8.0] - 2023-02-14 1566 ### Build 1567 - update to latest gnark-crypto 1568 - update to latest gnark-crypto 1569 - make linter happy remove deprecated call 1570 - updated to feat/commitment branch on gnark-crypto ([#408](https://github.com/consensys/gnark/issues/408)) 1571 - test only on go 1.18 for now 1572 - re-ran go generate 1573 - update CI ([#318](https://github.com/consensys/gnark/issues/318)) 1574 1575 ### Ci 1576 - fix slack integration + adds golanglint-ci ([#316](https://github.com/consensys/gnark/issues/316)) 1577 1578 ### Clean 1579 - remove deadcode and kill `api.Tag` and `api.Counter` ([#353](https://github.com/consensys/gnark/issues/353)) 1580 1581 ### Docs 1582 - updated README.md 1583 - remove logo references 1584 - update doc link 1585 - describe limb regrouping for equality 1586 - add method documentation 1587 - add explainer 1588 - comments 1589 - add method docs 1590 1591 ### Feat 1592 - added serialization header to CS and debug info to all constraints with -tags=debug ([#347](https://github.com/consensys/gnark/issues/347)) 1593 - checkpoint 3, computations are correct, some commitments are failing 1594 - add cs.GetConstraint with examples, and pretty printer helpers ([#452](https://github.com/consensys/gnark/issues/452)) 1595 - cleaned plonk constraints evaluation 1596 - code gen + cleaned code 1597 - update gnark version to v0.8.0 1598 - plonk constraints captured using Expressions 1599 - code gen 1600 - Evalute is used instead of manually evaluatin 1601 - removed printings 1602 - fixed verifier 1603 - add automatic non-native witness element limb constraining ([#446](https://github.com/consensys/gnark/issues/446)) 1604 - cleaned code 1605 - addition of missing commitments and openings in vk and pk 1606 - checkpoint 2 1607 - checkpoint refactor 1608 - add ECDSA signature verification ([#372](https://github.com/consensys/gnark/issues/372)) 1609 - adds `api.MAC(..)` ([#427](https://github.com/consensys/gnark/issues/427)) 1610 - keccak-f permutation function ([#401](https://github.com/consensys/gnark/issues/401)) 1611 - add debug.SymbolTable into constraint system for storage efficiency of debug info ([#421](https://github.com/consensys/gnark/issues/421)) 1612 - split field in field emulation into Field and FieldAPI ([#395](https://github.com/consensys/gnark/issues/395)) 1613 - testing options and clearer errors 1614 - add linear expression packing for R1CS ([#418](https://github.com/consensys/gnark/issues/418)) 1615 - merge develop 1616 - add inherit circuit tag ([#387](https://github.com/consensys/gnark/issues/387)) 1617 - add gnark tags 1618 - gkr verifier is NOT a witness object 1619 - some sumcheck experiments 1620 - poly functions and some tests 1621 - gkr verifier 1622 - some sumcheck experiments 1623 - replaced full bit decomposition by rshift in emulated/assertIsEqual ([#354](https://github.com/consensys/gnark/issues/354)) 1624 - cleaned code 1625 - add test.NoFuzzing() testing option ([#296](https://github.com/consensys/gnark/issues/296)) 1626 - map in snark 1627 - add fake API for emulated arithmetics 1628 - split add/mul/sub into cond and op 1629 - addition of dynamic test for kzg bls24315 1630 - addition of dynamic test kzg bls12377 1631 - size of fiat shamir data is harcoded 1632 - count fields in first schema parsing 1633 - add VariableCount method to builder 1634 - implement AssertIsLessEqualThan 1635 - binary composition 1636 - add Params.isEqual 1637 - implement Lookup2 and select 1638 - add panicking constant init 1639 - added verifier (forgot to commit it) 1640 - merge develop 1641 - addition of proximity tests 1642 - uncomment integration tests 1643 - only mul is tested for plonk fri 1644 - addition of plonkfri in test package 1645 - code gen 1646 - addition of templates 1647 - Fiat Shamir done 1648 - re activated blinding 1649 - removed dead code + old commented code 1650 - removed mock commitment scheme 1651 - verification of Z, Zshifted 1652 - addition of proofs for s1,s2,s3 and ccircuit coefficients 1653 - **frontend:** add builder wrapper compile opt 1654 - **hint:** allow registering multiple hints 1655 - **plonk:** addition of skeleton prover with non homomorphic PCS 1656 - **std:** KZG verifier gadget bls24-315 (with static witness) 1657 1658 ### Fix 1659 - mark and output boolean ([#459](https://github.com/consensys/gnark/issues/459)) 1660 - mimc pow7 1661 - prover-verifier work with blinding 1662 - handle recursive hints in level builder ([#441](https://github.com/consensys/gnark/issues/441)) 1663 - verifier working \o/ 1664 - pack full limbs for quotient ([#439](https://github.com/consensys/gnark/issues/439)) 1665 - add shortcut for const input in MulConst ([#438](https://github.com/consensys/gnark/issues/438)) 1666 - closes [#434](https://github.com/consensys/gnark/issues/434) returns a copy of the input slice when filtering groth16+commitment ([#435](https://github.com/consensys/gnark/issues/435)) 1667 - fix previous commit 1668 - closes [#400](https://github.com/consensys/gnark/issues/400) path trimming correct, example with unix path separators 1669 - tests expected to fail 1670 - engine.Println to take strings ([#419](https://github.com/consensys/gnark/issues/419)) 1671 - verifier input building 1672 - idiotic load circuit bug 1673 - update test vector proofs to proper size, some bugs 1674 - fix [#400](https://github.com/consensys/gnark/issues/400) with trim path handling in profile report ([#409](https://github.com/consensys/gnark/issues/409)) 1675 - fixed Lagrange polynomials construction ([#389](https://github.com/consensys/gnark/issues/389)) 1676 - staticcheck 1677 - multi-fan-out input bug 1678 - update test vectors, hash finalevalproofs 1679 - less elegant "hollow", but it works 1680 - some problems in sumcheck and gkr 1681 - TestTranscript works 1682 - Xor(var, constant) in scs corrected 1683 - simple sumcheck test passes 1684 - IsZero throws panic on ([#367](https://github.com/consensys/gnark/issues/367)) 1685 - fixes [#359](https://github.com/consensys/gnark/issues/359) missing fields in plonk serialized format ([#364](https://github.com/consensys/gnark/issues/364)) 1686 - Sumcheck verifier usable as circuit 1687 - InterpolateOnRange works even when it doesn't really have to "inerpolate" 1688 - extra nosec G404 in test file 1689 - minor typo 1690 - misspelled ("decsribes" -> "describes") ([#339](https://github.com/consensys/gnark/issues/339)) 1691 - remove leq overwrite 1692 - reduce element when init from const 1693 - fixed comments 1694 - kzg verifier test 1695 - rebase on develop 1696 - reduce div integration circuit 1697 - remove broken equality fast-path 1698 - remove subtraction padding optimisation 1699 - use BaseField() to get modulus 1700 - use scalar field bitlength directly 1701 - change hint definitions 1702 - reduce given argument not inline 1703 - ToBits return nb of bits 1704 - ToBits edge case for overflow=0 1705 - consider carries in bit decomposition 1706 - return element 1707 - add/set use argument nb of limbs 1708 - set overflow after reduce 1709 - remove unused method 1710 - more precise padding computation 1711 - make conversion functions private 1712 - remove debug calls 1713 - multiplication top limb width 1714 - remove second high limb exception in sub padding 1715 - added DecomposeScalarG2 to std.RegisterHints 1716 - enfore width after inverse and div 1717 - remove api from constant init 1718 - ignore plonk_fri in internal/stats for now 1719 - remove unused error return 1720 - check unchecked error 1721 - copy instead of loop 1722 - fixed position of the shifted opening 1723 - fixed size Iop (error due to the blinding) 1724 - fixed opening Merkle path 1725 - fixed vanilla plonk fri 1726 - removed unused debug function 1727 - **emulated:** enforce widths of packed limbs ([#368](https://github.com/consensys/gnark/issues/368)) 1728 - **nonnative:** off by one error 1729 - **plonk:** fixed generic verifier 1730 1731 ### Fix 1732 - minor typo ([#360](https://github.com/consensys/gnark/issues/360)) 1733 1734 ### Perf 1735 - more precomputation in plonk/iop ([#471](https://github.com/consensys/gnark/issues/471)) 1736 - mimc on bls12-377/fr uses x^17 as a permutation 1737 - api.IsZero generate less constraints ([#356](https://github.com/consensys/gnark/issues/356)) 1738 - minor improvments to big.Int test engine ([#344](https://github.com/consensys/gnark/issues/344)) 1739 - allocate less in test engine 1740 - remove width enforcement in Reduce() 1741 - lazy reduction 1742 - constrain main bits in equality diff to be only zeros 1743 - optimize equality check 1744 1745 ### Refactor 1746 - update to latest gnark crypto 1747 - keeping up 1748 - gnark-crypto iop 1 1749 - clean up witness package, introduces clean `witness.Witness` interface ([#450](https://github.com/consensys/gnark/issues/450)) 1750 - emulated clean up fixes [#448](https://github.com/consensys/gnark/issues/448) ([#449](https://github.com/consensys/gnark/issues/449)) 1751 - reflect gnark-crypto gkr changes, debug pending 1752 - add constraint package and improve memory management in frontend ([#412](https://github.com/consensys/gnark/issues/412)) 1753 - use polynomial package 1754 - std/math/nonnative -> std/math/emulated ([#345](https://github.com/consensys/gnark/issues/345)) 1755 - remove in-method reductions 1756 - use field in schema leaf handler 1757 - Compile(ecc.ID) -> Compile(field *big.Int) ([#328](https://github.com/consensys/gnark/issues/328)) 1758 - VerifyFri -> Verify 1759 1760 ### Refactor 1761 - remove geth dependency ([#440](https://github.com/consensys/gnark/issues/440)) 1762 1763 ### Style 1764 - clean up unused functions 1765 - remove questions 1766 - Multilin -> MultiLin 1767 - Multilin -> MultiLin 1768 - comment about scalar fields of in-circuit KZG 1769 - moved kzg in circuit in commitment/ folder 1770 - removed dead code 1771 - removed dead comments 1772 - factored code in integration_test 1773 - remove dead code 1774 - remove irrelevant TODOs 1775 - typos 1776 - rename n to r 1777 - inline test struct init 1778 - cleanup test comments 1779 - change field to params in tests 1780 - test name update 1781 - remove unused documentation file 1782 - removed dead debug printings 1783 - uncomment verify.go in generic plonk 1784 - removed printing functions 1785 1786 ### Test 1787 - add four-instance test case 1788 - all pass except "two_input_single_identity_gate_two_instances" 1789 - trying to feed proof as circuit input, reflect errors 1790 - routine developed for gkr 1791 - Transcript fails 1792 - doubleMap works 1793 - singleMap works 1794 - fix incorrect proof 1795 - circuit and witness cannot be the same object 1796 - counter start from 2 1797 - all parts of witness get unconstrained error 1798 - sumcheck in circuit, getting errors 1799 - pass 1800 - sumcheck in circuit, getting errors 1801 - add Goldilocks tests 1802 - add fake API tests 1803 - bench kzg verifier with plonk 1804 - add test/solver_test.go ([#329](https://github.com/consensys/gnark/issues/329)) 1805 - binary composition test 1806 - implement lookup2 test 1807 - implement constant test 1808 - fewer test cases 1809 - implement large computation circuit 1810 - implement select test 1811 1812 ### Pull Requests 1813 - Merge pull request [#469](https://github.com/consensys/gnark/issues/469) from ConsenSys/fix/mimc-pow7 1814 - Merge pull request [#451](https://github.com/consensys/gnark/issues/451) from ConsenSys/feat/iop_refactor 1815 - Merge pull request [#455](https://github.com/consensys/gnark/issues/455) from ConsenSys/develop 1816 - Merge pull request [#453](https://github.com/consensys/gnark/issues/453) from ConsenSys/mimx/nb-rounds-bls12377 1817 - Merge pull request [#393](https://github.com/consensys/gnark/issues/393) from ConsenSys/feat/gkr 1818 - Merge pull request [#361](https://github.com/consensys/gnark/issues/361) from ConsenSys/feat/polynomial 1819 - Merge pull request [#363](https://github.com/consensys/gnark/issues/363) from ConsenSys/fix/lde-0div 1820 - Merge pull request [#362](https://github.com/consensys/gnark/issues/362) from ConsenSys/fix/mathrand 1821 - Merge pull request [#250](https://github.com/consensys/gnark/issues/250) from ConsenSys/feat/plonk_generic 1822 - Merge pull request [#325](https://github.com/consensys/gnark/issues/325) from ConsenSys/feat/emulated-api 1823 - Merge pull request [#331](https://github.com/consensys/gnark/issues/331) from ConsenSys/perf/test-engine 1824 - Merge pull request [#332](https://github.com/consensys/gnark/issues/332) from ConsenSys/refactor/schema-parsing 1825 - Merge pull request [#334](https://github.com/consensys/gnark/issues/334) from ConsenSys/fix/nonnative-offbyone 1826 - Merge pull request [#320](https://github.com/consensys/gnark/issues/320) from ConsenSys/perf/nonnative 1827 - Merge pull request [#307](https://github.com/consensys/gnark/issues/307) from ConsenSys/feat/std/kzg-verifier 1828 - Merge pull request [#302](https://github.com/consensys/gnark/issues/302) from ConsenSys/feat/nonnative-ff 1829 1830 1831 <a name="v0.7.1"></a> 1832 ## [v0.7.1] - 2022-04-14 1833 ### Build 1834 - fix gosec warnings 1835 - updated to gnark-crypto v0.7.0 1836 1837 ### Ci 1838 - updated github actions 1839 - test against go1.17 and go1.18 ([#288](https://github.com/consensys/gnark/issues/288)) 1840 1841 ### Clean 1842 - std/groth16 uses same notation as out-of-circuit groth16 ([#304](https://github.com/consensys/gnark/issues/304)) 1843 - remove PairingContext and Extension objects from api calls in std/.../pairing ([#286](https://github.com/consensys/gnark/issues/286)) 1844 1845 ### Docs 1846 - added security policy, gnark-announce and twitter link 1847 - updated DOI 1848 - updated README.md with same warning as in docs 1849 - added Deprecated comments in front of APIs moved to Compiler interface 1850 - clean up hint interface comment 1851 - updated DOI 1852 1853 ### Feat 1854 - implement PR suggestions in std/math/bits 1855 - disable logger in tests by default, unless debug tag present 1856 - adds std/math/bits/ToNAF 1857 - added VerifyingKey.Assign methods in std/groth16 ([#306](https://github.com/consensys/gnark/issues/306)) 1858 - add gnark/logger 1859 - remove offset shifts in plonk compile 1860 - remove post-compile offset id in R1CS builder 1861 - added internal/stats package 1862 - hint.NbOuputs should not be used at solve time, only at compile time 1863 - added ivokub suggestion on logging duration values 1864 - adds gnark logger. closes [#202](https://github.com/consensys/gnark/issues/202) 1865 - added ToTernary closes [#269](https://github.com/consensys/gnark/issues/269) 1866 - moved api.FromBinary to std/math/bits 1867 - add ToBinary in std/math/bits 1868 - added std.GetHints for convenience. fixes [#264](https://github.com/consensys/gnark/issues/264). error message when hint is missing now has hint name 1869 - added NBits hint 1870 - make nboutputs of a hint explicit at compile time 1871 - **std:** added AssertIsTrit 1872 1873 ### Fix 1874 - move init() behind sync.Once. remove verbose option in stats binary 1875 - fix previous commit 1876 - err instead of panic when recursively solving hints 1877 - add whitespace between vars in test.Println 1878 - closes [#293](https://github.com/consensys/gnark/issues/293) and enables recursive hints solving 1879 - replace stats snippet signature with newVariable() instead of fixed variable 1880 - restored logger format 1881 - re generated stats 1882 - fixes [#266](https://github.com/consensys/gnark/issues/266) by adding constant path in Lookup2 and Select 1883 - incorrect handling of nbBits == 1 in api.ToBinary 1884 - gosec errors 1885 - uncomment fuzz part of test 1886 - std.GetHints() return bits.NNAF 1887 - **stats:** fix pairing stats. added run flag for stats binary to filter with regexp 1888 1889 ### Perf 1890 - restored frontend.WithCapacity option... 1891 - **plonk:** IsConstant -> ConstantValue 1892 - **sw:** no need for Lookup2 in constScalarMul 1893 - **tEd:** Add -1C 1894 1895 ### Refactor 1896 - delete dead code (TripleMillerLoop) 1897 - std/pairing have more consistent apis 1898 - std/pairing bls12377 api more coherent 1899 - remove StaticHint wrapper, log duplicate hints ([#289](https://github.com/consensys/gnark/issues/289)) 1900 - backend.WithOutput -> backend.WithCircuitLogger 1901 - remove all internal circuits from stats, keep important snippets only 1902 - move circuit_stats_test.go into internal/stats 1903 - move NBits hint to math/bits 1904 - move ntrits hint to std/math/bits 1905 - make api.ToBinary point to math/bits/ToBinary 1906 - revert Builder -> Compiler internal name change 1907 - compiler -> r1cs and scs internally 1908 - start moving api.ToBinary to std/math/bits/ 1909 - compiled.Variable -> compiled.LinearExpression 1910 - factorize coeff table initialization 1911 - frontend/cs subpackages to match new interfaces 1912 - split compiler, api and builder interface into interfaces 1913 - remove IsBoolean from R1CS variables 1914 - preparing frontend.Compiler interface 1915 - frontend.Compile now takes a builder instead of backendID as parameter 1916 - moved internal/compiled to frontend/compiled 1917 - remove nb inputs from hint declaration 1918 1919 ### Style 1920 - code cleaning in std/pairing 1921 - code cleaning 1922 - added clearer error message for groth16 verifier missing init in circuit 1923 - remove dead code 1924 - remove duplicate import in template 1925 - code cleaning 1926 - remove dead code 1927 - code cleaning 1928 1929 ### Test 1930 - add failing test for [#293](https://github.com/consensys/gnark/issues/293) 1931 1932 ### Pull Requests 1933 - Merge pull request [#298](https://github.com/consensys/gnark/issues/298) from ConsenSys/fix/hint-panic 1934 - Merge pull request [#295](https://github.com/consensys/gnark/issues/295) from ConsenSys/fix/test-println 1935 - Merge pull request [#294](https://github.com/consensys/gnark/issues/294) from ConsenSys/fix/recursivehhints 1936 - Merge pull request [#291](https://github.com/consensys/gnark/issues/291) from ConsenSys/refactor/std/pairing 1937 - Merge pull request [#281](https://github.com/consensys/gnark/issues/281) from ConsenSys/feat/logger 1938 - Merge pull request [#280](https://github.com/consensys/gnark/issues/280) from ConsenSys/simplify-r1cs-compile 1939 - Merge pull request [#279](https://github.com/consensys/gnark/issues/279) from ConsenSys/feat/statistics 1940 - Merge pull request [#276](https://github.com/consensys/gnark/issues/276) from ConsenSys/feat-math-bits 1941 - Merge pull request [#278](https://github.com/consensys/gnark/issues/278) from ConsenSys/perf-constant-lookup2 1942 - Merge pull request [#272](https://github.com/consensys/gnark/issues/272) from ConsenSys/refactor-hint 1943 - Merge pull request [#275](https://github.com/consensys/gnark/issues/275) from ConsenSys/refactor-compiler-builder 1944 - Merge pull request [#271](https://github.com/consensys/gnark/issues/271) from ConsenSys/refactor-compiled 1945 - Merge pull request [#267](https://github.com/consensys/gnark/issues/267) from ConsenSys/perf/tEd-add 1946 - Merge pull request [#265](https://github.com/consensys/gnark/issues/265) from ConsenSys/perf/SW-constScalarMul 1947 1948 1949 <a name="v0.6.5"></a> 1950 ## [v0.6.5] - 2022-04-13 1951 ### Fix 1952 - **plonk:** security vuln in fiat-shamir inputs 1953 1954 1955 <a name="v0.7.0"></a> 1956 ## [v0.7.0] - 2022-03-25 1957 ### Build 1958 - fix gosec warnings 1959 - updated to gnark-crypto v0.7.0 1960 1961 ### Ci 1962 - updated github actions 1963 - test against go1.17 and go1.18 ([#288](https://github.com/consensys/gnark/issues/288)) 1964 1965 ### Clean 1966 - remove PairingContext and Extension objects from api calls in std/.../pairing ([#286](https://github.com/consensys/gnark/issues/286)) 1967 1968 ### Docs 1969 - updated README.md with same warning as in docs 1970 - added Deprecated comments in front of APIs moved to Compiler interface 1971 - clean up hint interface comment 1972 - updated DOI 1973 1974 ### Feat 1975 - adds std/math/bits/ToNAF 1976 - remove offset shifts in plonk compile 1977 - added ivokub suggestion on logging duration values 1978 - add gnark/logger 1979 - hint.NbOuputs should not be used at solve time, only at compile time 1980 - remove post-compile offset id in R1CS builder 1981 - added internal/stats package 1982 - added ToTernary closes [#269](https://github.com/consensys/gnark/issues/269) 1983 - adds gnark logger. closes [#202](https://github.com/consensys/gnark/issues/202) 1984 - disable logger in tests by default, unless debug tag present 1985 - implement PR suggestions in std/math/bits 1986 - moved api.FromBinary to std/math/bits 1987 - add ToBinary in std/math/bits 1988 - added std.GetHints for convenience. fixes [#264](https://github.com/consensys/gnark/issues/264). error message when hint is missing now has hint name 1989 - added NBits hint 1990 - make nboutputs of a hint explicit at compile time 1991 - **std:** added AssertIsTrit 1992 1993 ### Fix 1994 - add whitespace between vars in test.Println 1995 - closes [#293](https://github.com/consensys/gnark/issues/293) and enables recursive hints solving 1996 - replace stats snippet signature with newVariable() instead of fixed variable 1997 - move init() behind sync.Once. remove verbose option in stats binary 1998 - re generated stats 1999 - gosec errors 2000 - fixes [#266](https://github.com/consensys/gnark/issues/266) by adding constant path in Lookup2 and Select 2001 - uncomment fuzz part of test 2002 - std.GetHints() return bits.NNAF 2003 - incorrect handling of nbBits == 1 in api.ToBinary 2004 - **stats:** fix pairing stats. added run flag for stats binary to filter with regexp 2005 2006 ### Perf 2007 - restored frontend.WithCapacity option... 2008 - **plonk:** IsConstant -> ConstantValue 2009 - **sw:** no need for Lookup2 in constScalarMul 2010 - **tEd:** Add -1C 2011 2012 ### Refactor 2013 - std/pairing have more consistent apis 2014 - std/pairing bls12377 api more coherent 2015 - remove StaticHint wrapper, log duplicate hints ([#289](https://github.com/consensys/gnark/issues/289)) 2016 - backend.WithOutput -> backend.WithCircuitLogger 2017 - remove all internal circuits from stats, keep important snippets only 2018 - move circuit_stats_test.go into internal/stats 2019 - move NBits hint to math/bits 2020 - move ntrits hint to std/math/bits 2021 - make api.ToBinary point to math/bits/ToBinary 2022 - revert Builder -> Compiler internal name change 2023 - compiler -> r1cs and scs internally 2024 - start moving api.ToBinary to std/math/bits/ 2025 - compiled.Variable -> compiled.LinearExpression 2026 - factorize coeff table initialization 2027 - frontend/cs subpackages to match new interfaces 2028 - split compiler, api and builder interface into interfaces 2029 - remove IsBoolean from R1CS variables 2030 - preparing frontend.Compiler interface 2031 - frontend.Compile now takes a builder instead of backendID as parameter 2032 - moved internal/compiled to frontend/compiled 2033 - remove nb inputs from hint declaration 2034 2035 ### Style 2036 - code cleaning 2037 - added clearer error message for groth16 verifier missing init in circuit 2038 - remove dead code 2039 - remove duplicate import in template 2040 - code cleaning 2041 - remove dead code 2042 - code cleaning 2043 2044 ### Test 2045 - add failing test for [#293](https://github.com/consensys/gnark/issues/293) 2046 2047 ### Pull Requests 2048 - Merge pull request [#295](https://github.com/consensys/gnark/issues/295) from ConsenSys/fix/test-println 2049 - Merge pull request [#294](https://github.com/consensys/gnark/issues/294) from ConsenSys/fix/recursivehhints 2050 - Merge pull request [#291](https://github.com/consensys/gnark/issues/291) from ConsenSys/refactor/std/pairing 2051 - Merge pull request [#281](https://github.com/consensys/gnark/issues/281) from ConsenSys/feat/logger 2052 - Merge pull request [#280](https://github.com/consensys/gnark/issues/280) from ConsenSys/simplify-r1cs-compile 2053 - Merge pull request [#279](https://github.com/consensys/gnark/issues/279) from ConsenSys/feat/statistics 2054 - Merge pull request [#276](https://github.com/consensys/gnark/issues/276) from ConsenSys/feat-math-bits 2055 - Merge pull request [#278](https://github.com/consensys/gnark/issues/278) from ConsenSys/perf-constant-lookup2 2056 - Merge pull request [#272](https://github.com/consensys/gnark/issues/272) from ConsenSys/refactor-hint 2057 - Merge pull request [#275](https://github.com/consensys/gnark/issues/275) from ConsenSys/refactor-compiler-builder 2058 - Merge pull request [#271](https://github.com/consensys/gnark/issues/271) from ConsenSys/refactor-compiled 2059 - Merge pull request [#267](https://github.com/consensys/gnark/issues/267) from ConsenSys/perf/tEd-add 2060 - Merge pull request [#265](https://github.com/consensys/gnark/issues/265) from ConsenSys/perf/SW-constScalarMul 2061 2062 2063 <a name="v0.6.4"></a> 2064 ## [v0.6.4] - 2022-02-15 2065 ### Build 2066 - update to gnark-crpto v0.6.1 2067 - updatd to latezst gnarkcrypto 2068 2069 ### Docs 2070 - updated changelog for v0.6.4 2071 - updated README.md with playground link 2072 2073 ### Feat 2074 - plonk adapted to kzg modifications 2075 - udpate gnark-crypto 2076 - code gen for plonk 2077 - polynomial --> []frElement 2078 - groth16 prover adapted to new fft OK 2079 - **plonk:** beta is dervied using Fiat Shamir 2080 - **tEd:** implements double-base scalar mul 2081 2082 ### Fix 2083 - fixed trace and println tests 2084 - fixed wrong bigInt op in plonk api 2085 - resolve comments 2086 - restored commented code blinding polynomial 2087 - fixed verifier 2088 - verifier obtains correct quotient 2089 - missing beta in linearized polynomial 2090 - linearized polynomial OK 2091 - correct up to quotient 2092 - fixed plonk up to permutation polynomial 2093 - **tEd:** case when scalar size is odd 2094 - **tEd:** case when scalar size is odd 2095 2096 ### Perf 2097 - sparse R1CS solver is parallel 2098 - R1CS solver may now run in parallel 2099 - **EdDSA:** eddsa gadget using double-base scalar mul 2100 - **bandersnatch:** apply tEd perf changes to Bandersnatch 2101 2102 ### Refactor 2103 - **eddsa:** rearrange eddsa verif as cofactor clearing counts 2104 2105 ### Style 2106 - code cleaning 2107 - removed debug comments 2108 2109 ### Test 2110 - **tEd:** test scalarMul for all curves and schemes 2111 2112 ### Pull Requests 2113 - Merge pull request [#259](https://github.com/consensys/gnark/issues/259) from ConsenSys/perf-parallel-solver 2114 - Merge pull request [#261](https://github.com/consensys/gnark/issues/261) from ConsenSys/feat/kzg_updated 2115 - Merge pull request [#257](https://github.com/consensys/gnark/issues/257) from ConsenSys/perf/EdDSA 2116 - Merge pull request [#253](https://github.com/consensys/gnark/issues/253) from ConsenSys/feat/fft_cosets 2117 2118 2119 <a name="v0.6.3"></a> 2120 ## [v0.6.3] - 2022-02-13 2121 ### Build 2122 - make staticcheck happy 2123 2124 ### Docs 2125 - updated changelog for v0.6.3 2126 - updated example in README.md 2127 2128 ### Feat 2129 - updated gnark-crypto 2130 - removed seed in mimc 2131 - mimc implem corresponds to ethereum implem 2132 2133 ### Fix 2134 - fixes [#255](https://github.com/consensys/gnark/issues/255) variable visibility inheritance regression 2135 - mod reduce input in solve with hint when coming from interface 2136 - counter was set with PLONK backend ID in R1CS 2137 - fixed conflicts 2138 - assign a, b, c to solution and div by coeff instead of mul 2139 - use uint64 for cbor unmarshal and cast 2140 - fixed mimc example 2141 2142 ### Perf 2143 - replace big int pool in hint solver by tmp slice 2144 - r1cs solver faster linear expression eval 2145 - r1cs solver 40% faster by avoiding redudnant check 2146 2147 ### Test 2148 - benchmark solve r1cs with large linear exp 2149 - added r1cs solve benchmark 2150 2151 ### Pull Requests 2152 - Merge pull request [#256](https://github.com/consensys/gnark/issues/256) from ConsenSys/fix-bug-compile-visibility 2153 - Merge pull request [#249](https://github.com/consensys/gnark/issues/249) from ConsenSys/perf-ccs-hint 2154 - Merge pull request [#248](https://github.com/consensys/gnark/issues/248) from ConsenSys/perf-ccs-solver 2155 - Merge pull request [#247](https://github.com/consensys/gnark/issues/247) from ConsenSys/fix/plonk_cbor 2156 2157 2158 <a name="v0.6.2"></a> 2159 ## [v0.6.2] - 2022-01-28 2160 ### Fix 2161 - r1cs.GetConstraint bad alloc 2162 2163 2164 <a name="v0.6.1"></a> 2165 ## [v0.6.1] - 2022-01-28 2166 ### Build 2167 - go 1.16 to go 1.17 2168 - github workflow against go 1.17 only 2169 - github workflow against go 1.17 and go 1.18 2170 2171 ### Clean 2172 - better errors in witness 2173 2174 ### Docs 2175 - updated CHANGELOG.md with v0.6.1 changes 2176 - update backend/witness godoc 2177 - added bibtex citation 2178 - **backend:** unify documentation for options 2179 - **frontend:** unify docs for options 2180 - **test:** unify documentation for options 2181 2182 ### Feat 2183 - added ccs.GetConstraints 2184 - added witness.Public() to return Public part of the witness 2185 - addition of Cmp in the API 2186 - added GetSchema in CompiledConstraintSystem 2187 - witness unmarshal uses limit reader if schema is set 2188 - schema now stores nbPublic and nbSecret 2189 - add optional omitempty tag in json generated schema 2190 - prepare new witness API 2191 - added frontend/schema to build circuit and witness schemas 2192 2193 ### Fix 2194 - handle array of array of array... in schema 2195 - remove limit reader when parsing json 2196 - deal with zero value in partial JSON witness 2197 - added witness MarshalJSON working test. few ugly hacks to remove 2198 - implemented pr suggestions. restored, fixed and addded sub tests in tags_test.go 2199 - remove gnark embed tag in example rollup 2200 - remove embbed struct tag 2201 - typo in hint fn name 2202 2203 ### Perf 2204 - minimize allocations in ccs.GetConstraints 2205 2206 ### Refactor 2207 - compiled.Visbility -> schema.Visibiility 2208 - added IsSolved API on the CompiledConstraintSystem interface 2209 - backend/witness has no more dependency on frontend 2210 - reduce frontend dependency in witness and remove most of type switches 2211 - witness.WriteSequence -> schema.WriteSequence 2212 - CopyTo -> VectorToAssignment 2213 - factorize code in witness_test 2214 - rename some variables from witness to assignment to avoid confusion 2215 - cleaned internal/witness unused code 2216 - killed ReadAndProve and ReadAndVerify (plonk) 2217 - killed ReadAndProve and ReadAndVerify (groth16) 2218 2219 ### Style 2220 - replace ①by 1 2221 - change main/companion to outer/inner curve 2222 - clean up unsatisfied constraint error paths 2223 - return constraint formatted as in the paper 2224 - experiment 2 constraint str 2225 - experiment 1 plonk constraint string repr 2226 - plonk human readable constraint A+M+k == O 2227 - constraint is not satified err -> constraint #id is not satisfied 2228 - cosmetics in sparseR1C repr 2229 - constraint cosmetics string repr. remove ToHTML deadcode 2230 - code cleaning 2231 - code cleaning, error refactoring 2232 - code clean up, pr review changes 2233 - remove defers in test/assert.go 2234 - group WitnessOption under same type, implements PR review 2235 - clean some todo 2236 - **frontend:** create CompileOption type 2237 - **frontend:** use functional opts for witness 2238 - **test:** create TestingOption type for function opts 2239 2240 ### Test 2241 - added assert.marshalWitness subtest to ensure round trip json and binary serialization test coverage 2242 2243 ### Tests 2244 - run marshalling tests as subtests 2245 2246 ### Pull Requests 2247 - Merge pull request [#244](https://github.com/consensys/gnark/issues/244) from ConsenSys/plonk-human-readable 2248 - Merge pull request [#237](https://github.com/consensys/gnark/issues/237) from ConsenSys/ccs-get-constraints 2249 - Merge pull request [#233](https://github.com/consensys/gnark/issues/233) from ConsenSys/feat/api_cmp 2250 - Merge pull request [#235](https://github.com/consensys/gnark/issues/235) from ConsenSys/witness-public-api 2251 - Merge pull request [#232](https://github.com/consensys/gnark/issues/232) from ConsenSys/cleanup-231-group-options 2252 - Merge pull request [#230](https://github.com/consensys/gnark/issues/230) from ConsenSys/ccs-schema 2253 - Merge pull request [#229](https://github.com/consensys/gnark/issues/229) from ConsenSys/ccs-issolved-api 2254 - Merge pull request [#228](https://github.com/consensys/gnark/issues/228) from ConsenSys/witness-json 2255 - Merge pull request [#226](https://github.com/consensys/gnark/issues/226) from ConsenSys/feat-circuit-schema 2256 - Merge pull request [#227](https://github.com/consensys/gnark/issues/227) from ConsenSys/build-update-go1.17 2257 - Merge pull request [#222](https://github.com/consensys/gnark/issues/222) from ConsenSys/perf/std-sw-glv 2258 2259 2260 <a name="v0.6.0"></a> 2261 ## [v0.6.0] - 2022-01-04 2262 ### Build 2263 - update to latest gnark-crypto with fix for empty addchain folders 2264 - updated to latest gnark-crypto 2265 2266 ### Clean 2267 - remove TotalInputs 2268 2269 ### Docs 2270 - updated changelog.md 2271 - updated README.md example 2272 - draft release notes for v0.6.0 2273 - zkteam -> gnark 2274 - add suggestion to error 2275 2276 ### Feat 2277 - extended the Add test 2278 - internal/parser handles interface values and outputs warning when a struct is non adressable [#169](https://github.com/consensys/gnark/issues/169) 2279 - added explicit warning when parser encounters unadressable struct field [#169](https://github.com/consensys/gnark/issues/169) 2280 - addition of test for mul 2281 - lighter stack trace by default for circuits, more verbose when -tags=debug provided 2282 - added api.Tag and api.AddCounter to measure number of constraints in portion of circuit 2283 - add debug info for SparseR1CS inverse 2284 - add option to define newBuilder 2285 - register frontend for backends 2286 - register frontend compilers 2287 - removed txt logs 2288 - handle non zero divisor in Div 2289 - addition of boolean table for sparseR1cs 2290 - restored options (forgot to commit the file) 2291 - extended select test 2292 - addition of test for select api 2293 - api.AddCounter now measure new plonk constraints too 2294 - made inv test explicit 2295 - test circuits specifiy curves (useful for Div,Inv) 2296 - addition of test for final exp in sw_bls24315 2297 - cleaned frontend/ 2298 - code uses new Compile from compile.go 2299 - hint inptus LinearExpression -> interface 2300 - closes [#197](https://github.com/consensys/gnark/issues/197) FromInterface supports uintXX and intXX types 2301 - extended add test 2302 - addition of Compile method on System interface 2303 - addition of tests in r1cs/ 2304 - addition of Tag, Counter in plonk/ and r1cs/ 2305 - populated r1cs/ plonk/ for separating schemes 2306 - finished assertions plonk 2307 - completion of API (except rangeCheck, lookup2, Hints) 2308 - started the addition of plonk secific cs 2309 - added frontend.IsConstant and ConstantValue apis 2310 - added api.CurveID() 2311 - boolean constraint are handled separately 2312 - restored plonk/groth16 switch in frontend 2313 - add new curve bw6-633 2314 - triplePairing test uses 3 different pairs 2315 - counters accesible through CompiledConstraintSystem 2316 - **frontend:** add lookup2 API method 2317 - **frontend:** NewHint returns multiple outputs 2318 - **integration_test:** add variable-input/output hint test 2319 - **std:** fields, SW and pairing over BLS24-315 in BW6-633 circuit 2320 - **test:** add Run for running as subtests 2321 - **test:** add Log method for logging in subtests 2322 - **test:** solve multi-output hints in engine 2323 2324 ### Fix 2325 - fixed mul 2326 - addition of mod reduction in plonk api to bound bigInt 2327 - re-exposed compiled.ConstraintSystem (internal) as frontend.CompiledConstraintSystem 2328 - fixed examples/plonk 2329 - reduce variables modulo scalar order 2330 - hint solver was not returning objects to pool 2331 - use sr1cs debug representation 2332 - restored check unconstrained inputs when compiling 2333 - fixed staticcheck 2334 - fixes [#168](https://github.com/consensys/gnark/issues/168) adds context to a non-deterministic compilation error in the Assert object 2335 - fixed staticheck 2336 - removed unused file 2337 - ran go generate 2338 - fixed signature of addPlonkConstraint 2339 - fixed bigInt passed by copy in plonk api 2340 - mul test for all curves 2341 - pairing test on Plonk + Groth16 2342 - removed dead folder 2343 - fixed mul test 2344 - fixed AssertIsEqual when an argument is constant 2345 - fixed mul by zero 2346 - fixed Div (plonk) 2347 - fixed Div(constant, var) 2348 - plonk solver handles both L and R to solve 2349 - Div -> DivUnchecked test div 2350 - fixed code gen 2351 - fixed range_constant plonk 2352 - restored simpler version for range_constant r1cs 2353 - fixed lookup2 2354 - fixed isZero 2355 - fixed assertIsEqual 2356 - fixed assertion (AssertIsEqual missing return) 2357 - fixed AssertIsBoolean in plonk (mul by constant failed) 2358 - fixes [#169](https://github.com/consensys/gnark/issues/169) ensure frontend.Circuit methods are defined on pointer receiver 2359 - extended sub test 2360 - fixed Groth16 integration tests 2361 - restored bootloader 2362 - removed Compile() method in engine 2363 - fixed API missing methods 2364 - incorrect handling of hints in r1cs solver 2365 - fixes [#178](https://github.com/consensys/gnark/issues/178) by adding cbor.MaxMapPairs options when reading R1CS 2366 - merge with develop branch 2367 - remove deadcode (csfuzz targets) 2368 - go:generate bw6633 and updated circuit stats 2369 - fixed code gen :/ 2370 - fixed gosec 2371 - ran gofmt 2372 - set variable to Solved after Or,And,Xor when compiling to plonk 2373 - handled nbBits=1 in toBinary 2374 - fixed comments 2375 - resolve comments 2376 - fixed Div 2377 - fixed tests in cs_api_test 2378 - restored log in parser 2379 - fixed XOR, OR, mustBeLessOrEqCst 2380 - fixed select to reduce nb of plonk constraints 2381 - fixed ToBinary 2382 - fixed toSparseR1CS, removed dead code 2383 - fixed Select constraint 2384 - **debug_test:** reverse trace and expected trace order 2385 - **examples:** omit unnecessary api call 2386 - **frontend:** reduce constant by modulus 2387 - **frontend:** set only hint internal variables constrained 2388 - **init.stats:** update circuit statistics 2389 - **integration_test:** remove fuzzing call 2390 2391 ### Frontend 2392 - update hint documentation 2393 2394 ### Perf 2395 - **std:** bls24 Miller loop in 2NAF + opt. Final exp 2396 2397 ### Refactor 2398 - frontend.Variable -> cs.Variable 2399 - simplified cs_to_r1cs_sparse algo 2400 - Variable is now an interface. std/ wip 2401 - moved compile in compiler/ 2402 - std/ uses Variable interface{} 2403 - remove api.Constant. can now assign directly 2404 - move GetWitnessValue to internal test engine func 2405 - unpublish frontend/cs/ structures 2406 - rename frontend/R1CSRefactor to frontend/R1CS 2407 - use compile option to define builder 2408 - cs.Variable -> frontend.Variable 2409 - rename frontend.System to frontend.Builder 2410 - TotalOutputs -> NbOutputs 2411 - use internal util 2412 - move frontend util to internal 2413 - use frontend.Compile 2414 - added frontend.IsConstant and ConstantValue apis 2415 - Define(curveID, api) -> Define(api); api.CurveId() 2416 - modified definition of Variable in zkpScheme 2417 - compiled.CompiledConstraintSystem -> compiled.ConstraintSystem 2418 - move definitions to frontend 2419 - changed Variable definition in cs.go and compiled/ 2420 - remove curve from system Compile 2421 - frontend.Variable -> cs.Variable 2422 - interface --> Variable 2423 - CurveID() --> Curve() in API 2424 - cleaning hierarchy of constraints systems 2425 - addition of compiler for both systems 2426 - constraintSystme -> R1CS 2427 - Hint takes []LinearExpression as input 2428 - VariableID -> WireID 2429 - use subtests in backend serialization tests 2430 - simplifed wire tracking in a cs 2431 - api interface allows access to backendID 2432 - refactored frontend 2433 - modified cs_api.go 2434 - **frontend:** move Tag to frontend/ 2435 - **frontend:** add compiler registry 2436 - **integration_test:** run as subtests 2437 - **lookup2:** use multiple witnesses for tests 2438 - **stats:** use subassert for errors 2439 - **stats:** run as subtests 2440 - **test:** use Tag 2441 - **test:** run assert subtests using Run 2442 2443 ### Style 2444 - added few comments 2445 - removed dead code 2446 - remove counter example in std/ 2447 - remove unused displayCounters boolean 2448 - remove frontend.DisplayCounters option 2449 - remove witnessValue method 2450 - remove bls377tobw761 conv func 2451 - remove bls377tobw761 conv func 2452 - error strings should not end with punctuation or a newline 2453 - **Miller loop:** for loop instead of addition chain 2454 2455 ### Test 2456 - use BN254 in modulus-dependent tests for speed 2457 - added failing test with multiple hints in one R1C 2458 - **lookup2:** add integration test 2459 2460 ### Pull Requests 2461 - Merge pull request [#192](https://github.com/consensys/gnark/issues/192) from ConsenSys/multi-hint 2462 - Merge pull request [#220](https://github.com/consensys/gnark/issues/220) from ConsenSys/feat-from-interface 2463 - Merge pull request [#217](https://github.com/consensys/gnark/issues/217) from ConsenSys/fix-internal-compiled 2464 - Merge pull request [#191](https://github.com/consensys/gnark/issues/191) from ConsenSys/assert-subtests 2465 - Merge pull request [#200](https://github.com/consensys/gnark/issues/200) from ConsenSys/refactor/frontend 2466 - Merge pull request [#205](https://github.com/consensys/gnark/issues/205) from ConsenSys/fix/constant-mod-reduction 2467 - Merge pull request [#186](https://github.com/consensys/gnark/issues/186) from ConsenSys/fix/plonk_constraints 2468 - Merge pull request [#185](https://github.com/consensys/gnark/issues/185) from ConsenSys/feat/bw6-633 2469 - Merge pull request [#189](https://github.com/consensys/gnark/issues/189) from ConsenSys/lookup2 2470 - Merge pull request [#183](https://github.com/consensys/gnark/issues/183) from ivokub/hint-registry 2471 - Merge pull request [#182](https://github.com/consensys/gnark/issues/182) from ConsenSys/std/pairing 2472 - Merge pull request [#176](https://github.com/consensys/gnark/issues/176) from ConsenSys/feat-constraint-counter 2473 - Merge pull request [#180](https://github.com/consensys/gnark/issues/180) from ConsenSys/refactor-variable-interface 2474 - Merge pull request [#173](https://github.com/consensys/gnark/issues/173) from ConsenSys/feat-debug-tag 2475 2476 2477 <a name="v0.5.2"></a> 2478 ## [v0.5.2] - 2021-11-03 2479 ### Build 2480 - updated to gnark-crypto v0.5.3 2481 - fix fuzz target compile error 2482 - fix fuzz target compile error 2483 - updated to latest gnark-crypto 2484 - updated to latest gnark-crypto 2485 - updated to gnark-crypto v0.5.2 2486 - updated test timeout, while we improve plonk compile speeds 2487 - fix staticcheck warning 2488 - updated to latest gnark-crypto 2489 - fix unchecked errors 2490 - fix gofuzz target 2491 - re-ran go generate 2492 - fix gofuzz build 2493 2494 ### Docs 2495 - updated CHANGELOG.md for v0.5.2 2496 - added pull requests in changelog.md 2497 - added doc to frontend.API interface 2498 - added documentation to new test pacakge 2499 2500 ### Feat 2501 - Sub matches Add api in circuit 2502 - attempt at reducing nb constraints for ML by working in affine 2503 - added frontend compile options to handle capacity and unconstrained inputs ignore flag 2504 - added gcd for int64 coeff values in splitR1C, untested 2505 - added test engine support for hints 2506 - added UnsafeReadFrom for groth16 Proving and Verifying keys 2507 - GetKey now returns an ID of a primitive linear expression 2508 - added DivUnchecked. start factorizing some frontend.API with better Constant cases 2509 - added post-compile check to ensure all inputs are constrained fixes [#163](https://github.com/consensys/gnark/issues/163) 2510 - ignore zero coefficients for variable constraint check 2511 - added frontend.API interface 2512 - added fuzzing. div now takes 2 constraints 2513 - caching test srs for faster tests 2514 - added TestableCircuit interface 2515 - added debugInfo for ToBinary API 2516 - unset variables error message comes with a stack trace 2517 - frontend bits operation adjusted to fr.Bits real size 2518 - ml with short addition chain (13245cs -> 12297, marginal gain) 2519 - **std:** add bandersnatch 2520 2521 ### Fix 2522 - fixes [#155](https://github.com/consensys/gnark/issues/155) slow compiling with plonk frontend 2523 - don't check if one wire is constrained 2524 - restore std/algebra/sw g1ScalarMul test circuit 2525 - bug in Select when parameters are constant 2526 - regenerated stats. 2527 - remove unneeded mod operations in api 2528 - fixed constraints blow up for plonk 2529 - test engine mod reduce range check bound if not constant 2530 - introduced bug in refactoring 2531 - fix toHTML 2532 - reduce duplicate when splitting r1c 2533 - plonk build permutation index out of bounds 2534 - std/twistededwards remove A 2535 - std/twistededwards remove A 2536 - added markBoolean on inplace boolean constraints to avoid duplicated constraints 2537 2538 ### Perf 2539 - fast path with int64 in divide linear expression 2540 - cs.coeffID with gobencode 2541 - fast path for coeffID when coeff is int64 2542 - sparseR1CS reduce improvments 2543 - plonk frontend split and reduce improvments 2544 - plonk compile, replace sha256 with fast lookup with collisions 2545 - minor perf adjustement on big.Int operations and allocations 2546 - reduced redundant constraints in range check 2547 2548 ### Refactor 2549 - delete old curve typed hint functions 2550 - hint function signature uses big.Int, no more ID from name 2551 - splitBis -> split 2552 - h and record are now part of scs 2553 - moved testing in assert, code cleaning 2554 - moved testing in assert, code cleaning 2555 - reverted gnark to api in Define() 2556 - all circuits use frontend.API in place of *frontend.ConstraintSystem 2557 - in circuits *frontend.ConstraintSystem to frontend.API 2558 - factorized assert helper accross curves and backends 2559 2560 ### Style 2561 - remove unused code (nSquare) 2562 - removed commented code 2563 - removed code for used for debugging purposes 2564 - clean up std/algebra/g1 2565 - removed useless lines in g1 Double 2566 - clean up std/fp2 2567 - use ecc.Info() where possible to get modulus or field size 2568 - std/twisted edwards code cleaning 2569 - std/fiat-shamir clean up 2570 - cleaned up some TODO 2571 - move stats tests in circuitstats_test.go 2572 - remove plonk and groth16 assert.go 2573 - added comment in range check 2574 - remove code no longer used in the pairing 2575 - commented ml test used to diplay nb constraints 2576 2577 ### Test 2578 - groth16 marshal 10 round only 2579 - passing 2580 - bypass fuzz test of frontend for now 2581 2582 ### Tests 2583 - added add and sub internal test circuits 2584 - minor adjustements or better fuzzing 2585 2586 ### Pull Requests 2587 - Merge pull request [#159](https://github.com/consensys/gnark/issues/159) from ConsenSys/std/bandersnatch 2588 - Merge pull request [#164](https://github.com/consensys/gnark/issues/164) from ConsenSys/perf-scs-compile 2589 - Merge pull request [#161](https://github.com/consensys/gnark/issues/161) from ConsenSys/test-engine-with-hints 2590 - Merge pull request [#162](https://github.com/consensys/gnark/issues/162) from ConsenSys/std/pairing 2591 - Merge pull request [#160](https://github.com/consensys/gnark/issues/160) from ConsenSys/perf-unsafe-decoding 2592 - Merge pull request [#156](https://github.com/consensys/gnark/issues/156) from ConsenSys/std/twistedEdwards 2593 - Merge pull request [#151](https://github.com/consensys/gnark/issues/151) from ConsenSys/testable-circuits 2594 - Merge pull request [#153](https://github.com/consensys/gnark/issues/153) from ConsenSys/fix/plonk_constraints_blowup 2595 - Merge pull request [#146](https://github.com/consensys/gnark/issues/146) from ConsenSys/feat/ml-snark-pairing 2596 - Merge pull request [#148](https://github.com/consensys/gnark/issues/148) from ConsenSys/perf-range-check 2597 2598 2599 <a name="v0.5.1"></a> 2600 ## [v0.5.1] - 2021-09-21 2601 ### Build 2602 - go mod tidy 2603 - remove dead code, makes staticcheck happier 2604 - comment fuzz test part that depends on assertions 2605 - increased CI test timeout and run race test on ubuntu only 2606 - fix gosec unhandled error warning 2607 2608 ### Docs 2609 - added release notes for v0.5.1 in CHANGELOG.md 2610 2611 ### Feat 2612 - added ToHTML on R1CS 2613 - cs.Println and debugInfo supported in groth16 and plonk 2614 - add witness reconstruction methods. closes [#135](https://github.com/consensys/gnark/issues/135) 2615 - added sanity check in frontend.Compile to ensure constraint validity 2616 - add witness.WriteSequence to export expected witness sequence 2617 - hintFunction now returns an error instead of panic 2618 - added sanity checks in plonk solver 2619 - plonk support for hints ok 2620 - added Hints data struct in SparseR1CS 2621 - added ToHTML on SparseR1CS 2622 - debugInfoComputation and debugInfoAssertion in a cs 2623 - cs.Println now supports structures with Variables 2624 - added assertions in ToHTML template 2625 - debug info is displayed when div by 0 happens (Groth16 only) 2626 - test circuit for AssertIsDifferent 2627 - added skelleton for hintFunctions in r1cs 2628 - IsZero is now implemented with 3 constraints fixes [#132](https://github.com/consensys/gnark/issues/132) 2629 - **frontend:** added cs.NewHint 2630 - **groth16:** added dummyInifinty counts for dummySetup accurate sizes generation of pk 2631 - **plonk:** isZero with advice wire OK, binaryDec NOK 2632 - **r1cs:** replaced isZero solver path by solver hint 2633 - **r1cs:** removed binaryDec solving method in favor of cs.NewHint 2634 2635 ### Fix 2636 - hint functions use compiled.Term instead of variable IDs only 2637 - fix previous fix 2638 - remove debug stack trace from frontend error 2639 - ProvingKey marshaling test with infinity flags, fixes [#141](https://github.com/consensys/gnark/issues/141) 2640 - return empty slice when R1CS.Solve fails 2641 - remove references to assertions in html templates 2642 - sparseR1CS rebuilds hint map when deserializing 2643 - ensure frontend.ConstraintSystem is not modified by compile process 2644 - added Virtual variables to avoid creating wires for boolean constraints 2645 - comment fuzz test 2646 - fix serialization test. ensure we init hints when reading R1CS 2647 - fixed error msg in Inverse, Div for groth16 fuzzer 2648 - initialize InfinityX in dummy setup 2649 - can constraint linear expressions to be boolean fixes [#136](https://github.com/consensys/gnark/issues/136) 2650 - BinaryDecomposition solving assumes bits are in L, which is fine 2651 - removed fmt.Println trace in setup 2652 - **eddsa:** addition of isOnCurve check 2653 - **eddsa:** S not splitted (s<r) + 2,3 Double instead of [cofactor]G 2654 - **groth16:** Prove with force flag wasn't doing much since msm had lots of zeroes in input 2655 - **test:** integration test failing due to missing witness assignment 2656 2657 ### Frontend 2658 - **groth16:** ensure R (as in LRO) as less variables than L 2659 2660 ### Perf 2661 - **groth16:** filter wire values after solve in go routines 2662 - **groth16:** filter A and B for infinity points 2663 - **groth16:** use batch invert in groth16.Setup 2664 2665 ### Refactor 2666 - groth16.Prove and plonk.Prove takes backend.ProverOption as parameter 2667 - save hints in a map in ConstraintSystem instead of slice 2668 - factorized structs between compiled.SparseR1Cs and compiled.R1CS 2669 - remove NbConstraints from R1CS 2670 - move mHints to compiled R1CS and SparseR1CS 2671 - factorize logging between R1CS and SparseR1CS 2672 - separated hint functions in their own file 2673 - factorizing code between R1CS and SparseR1CS 2674 - introduced solution struct shared between R1CS and SparseR1CS 2675 - remove assertions in Groth16 R1CS 2676 - remove Assertions in compiled sparseR1CS 2677 - removed r1c.SolvingMethod in favor of cs.NewHint 2678 - moved assertions in cs_assertions.go 2679 - cs.IsZero doesn't need curveID anymore 2680 2681 ### Style 2682 - printArg doesn't return error 2683 - code cleaning in cs_to_r1cs_sparse.go 2684 - fixed comment in popConstant 2685 - cleaned eddsa 2686 - in-place filtering of points in setup 2687 - fixed comments on S in eddsa 2688 - cleaned eddsa_test 2689 2690 ### Test 2691 - ensure frontend.Compile is deterministic 2692 - added non regression for cs.Println and debugInfo traces 2693 - integration test remove Public in favor of Good in test circuits 2694 - replaced Fatal by Error in stat check test 2695 - added circuit statistic non regression tests 2696 - added plonk path to integration_test.go 2697 - fix gofuzz compile error 2698 - added test from [#136](https://github.com/consensys/gnark/issues/136) 2699 2700 ### Pull Requests 2701 - Merge pull request [#142](https://github.com/consensys/gnark/issues/142) from ConsenSys/frontend-println-tests 2702 - Merge pull request [#139](https://github.com/consensys/gnark/issues/139) from ConsenSys/cs-hint 2703 - Merge pull request [#134](https://github.com/consensys/gnark/issues/134) from ConsenSys/is-zero 2704 - Merge pull request [#130](https://github.com/consensys/gnark/issues/130) from ConsenSys/groth16-setup-filter-inf 2705 - Merge pull request [#131](https://github.com/consensys/gnark/issues/131) from ConsenSys/fix/i_128 2706 - Merge pull request [#129](https://github.com/consensys/gnark/issues/129) from ConsenSys/fix/reduce_constraints_eddsa 2707 2708 2709 <a name="v0.5.0"></a> 2710 ## [v0.5.0] - 2021-08-23 2711 ### Build 2712 - updated to latest gnark-crypto 2713 - remove 32bit test for now, add timeout for github action 2714 - updated to latest gnark-crypto. use ecc.NextPowerOfTwo 2715 - updated to latest gnark-crypto 2716 - add github CI action checks 2717 - updated to latest gnark-crypto 2718 - updated to msm-cpus branh of gnark-crypto 2719 - updated to latest gnark-crypto 2720 - updated to latest gnark-crypto 2721 - updated to latest gnark crypto. fixes [#120](https://github.com/consensys/gnark/issues/120) 2722 - updated to latest gnark-crypto 2723 - updated to latest gnark-crypto 2724 - run go mod tidy 2725 - updated to gnark-crypto v0.5.0 2726 - make gosec happy by handling un-handled errors 2727 - run go generate 2728 - updated to latest gnark-crypto 2729 - restored gnark-crypto version 2730 - updated to latest gnark-crypto. kzg api refactor 2731 - updated to latest gnark-crypto 2732 - updated to latest gnark-crypto. plonk Setup now takes kzg SRS, and re-uses fft domain 2733 - updated to latest gnark-crypto 2734 - ran go:generate for bls24 after merging develop into sself 2735 - ran go:generate for bls24-315 plonk marshal 2736 - re-ran go:generate 2737 - **staticheck:** commented debugInfoUnsetVariable 2738 2739 ### Chore 2740 - cleaned plonk bn254, removed old version 2741 2742 ### Ci 2743 - added -mod=mod fix, maybe? 2744 - replace go test sum by go test, CI check 2745 2746 ### Clean 2747 - cosmetics in plonk.Verify 2748 2749 ### Cleanup 2750 - removed to_delete.go file 2751 2752 ### Docs 2753 - fix go report card link 2754 - prepare release notes for v0.5.0 2755 - fix go report card link 2756 - updated doc link and logo on README.md 2757 2758 ### Feat 2759 - plonk as-in-the-paper implem for bn254 2760 - LinearExpression implements Sort interface. replaced quickSort() by sort.Sort(...) 2761 - remove term.CoeffValue and use constant coeff ID for special values instead 2762 - addition of circuit to test determinism 2763 - update gnark-crypto[@feat](https://github.com/feat)/kzg/multi_points 2764 - addition of FiatShamir in std 2765 - updated go.mod 2766 - modified example/benchmark with setup and run options 2767 - updated go.sum, use of external hash function in plonk 2768 - plonk verifier uses kzg BatchVerifyMultiPoints 2769 - remove serialization test by default in assert helper 2770 - replaced individual ScalarMul by MultiExp in plonk.Verify 2771 - addition of unit test for cyclo square in std/../e12.go 2772 - add bls24-315 to gnark 2773 - added example for plonk (exponentiate circuit) 2774 - added NewCS and NewPublicData on plonk package, with io.ReaderFrom and io.WriterTo unimplemented interfaces 2775 - blind of a, b, c OK for bn254 2776 - added reference benchmarks for plonk 2777 - added NbG1 and NbG2 apis on groth16 Proving and Verifying keys closes [#116](https://github.com/consensys/gnark/issues/116) 2778 - call stack displayed when AssertIsEqual fails 2779 - gnarkd circuit data structure extension to support both groth16 and plonk 2780 - added PublicRaw marhsal methods, ignoring KZG for now 2781 - added WriteTo and ReadFrom to SparseR1CS objects 2782 - added Neg on frontend API, cleaned Neg in twistededwards 2783 - official implem of plonk, verifier in progress 2784 - moving to strongly typed kzg 2785 - **plonk:** code gen, started modifying backend interfaces 2786 - **plonk:** added convenient method to create a kzg SRS from a compiled constraint system 2787 - **plonk:** setup check srs size against fft domain cardinality 2788 - **plonk:** added VerifyingKey serialization 2789 - **plonk:** added VerifyingKey serialization with test 2790 - **plonk:** added ProvingKey serialization 2791 - **plonk:** modified folded commitment of h 2792 - **plonk:** blinded z, modified test circuits to have nbConstraints>8 2793 - **plonk:** code gen for proof blinding 2794 - **plonk:** added ProvingKey serialization test 2795 - **plonk:** added InitKZG methods on ProvingKey and VerifyingKey 2796 2797 ### Fix 2798 - fixed gnarkd tests for kzg srs 2799 - shuffleVariables in fuzz testing with bad offset 2800 - restore benchmark/main.go 2801 - don't close channels that are use in the select as they become always ready to receive 2802 - groth16 prove missing chan close in one path 2803 - groth16.Prove handles multiExp error returns 2804 - fixed conflicts 2805 - fixed conflicts 2806 - restored benchmark/main.go 2807 - avoid code gen for bw633 until feat/bw633 is merged 2808 - invalid gnark struct tag options return error at compile time fixes [#111](https://github.com/consensys/gnark/issues/111) 2809 - kzg srs size +3 2810 - r1cs compilation is deterministic, fixes [#90](https://github.com/consensys/gnark/issues/90) 2811 - fixes [#112](https://github.com/consensys/gnark/issues/112) 2812 - removed unused error variable 2813 - make go vet happy 2814 - use of doubling formula instead of add(x,x) fixes [#114](https://github.com/consensys/gnark/issues/114) 2815 - updated go.mod 2816 - go.mod points to gnark-crypto[@develop](https://github.com/develop), fixes [#96](https://github.com/consensys/gnark/issues/96) 2817 - SetupDummyCommitment calls with Proving and Verifying key in return 2818 - added BLS24_315 in plonk constructors 2819 - backend plonk bls24 process error 2820 - create cbor decoder with MaxArrayElements set to max value 2821 - regenerated code 2822 - **frontend:** restored isBoolean logic to avoid dupplicate constraints. remove dangling variable thing 2823 - **frontend:** set initial capacity for constraint system slices to 0 2824 - **gnarkd:** kzg srs generation in test cases with correct size 2825 - **plonk:** fixed error in ComputeH when nbConstraints+nbPublicInputs<6 2826 2827 ### Perf 2828 - start computeZ earlier 2829 - plonk prove remove most fft.BitReverse 2830 - replaced string concat in frontend with strings.Builder 2831 - remove clone in computeLinearizedPoly 2832 - minor optim 2833 - use batch inversion in plonk.computeZ 2834 - plonk.computeLinearizedPolynomial with less polynomial clones 2835 - improving parallelism in prover 2836 - minor change 2837 - make constraint slice initalCapacity an optional paremeter in compile 2838 - plonk frontend replace map by slice, avoid few allocs and useless slice copies 2839 - frontend.ConstraintSystem special values fast path for coefficients 2840 - plonk frontend fast path for -1, 0 and 1 as coeffs 2841 - reduced memory allocations in plonk frontend 2842 - evalIDCosets shiftEval done in parallel, better trace 2843 - shiftZ in parallel with other stuff 2844 - remove useless copy in computeH 2845 - sparseR1CS.Solve few times faster by avoiding Div at constraint solving 2846 - hunting memallocs - remove evaluid and uuid in evalConstraint 2847 - blinded polynomials re-use input polynomial memory 2848 - remove polynomial clone in foldedH computation 2849 - remove bitReverse in evalIDCosets 2850 - use ecc.CPUSemaphore in kzg.Commit to ensure pretty trace 2851 - remove one additional plynomoial clone 2852 - parralelize computeH 2853 - **experimental:** start too many go routines in Prover 2854 - **frontend:** rewrote linear expression reduce in place instead of multiple map allocs 2855 - **frontend:** minor adjustements 2856 - **frontend:** rewrote cs.ToBinary to avoid unecessary func calls 2857 - **plonk:** shiftEval done without copy or bitReverse 2858 - **plonk:** compute shifted Z element on the fly without allocating a new polynomial 2859 - **plonk:** partly parallel computeBlindedZ 2860 - **plonk:** when doing fft on domainH with coset, don't scale zero values 2861 - **plonk:** minor tweaks, removing un-needed bitreverse and mem allocs 2862 - **scs:** rewrote solve O 2863 - **scs:** sparse r1cs have fast path for special coeffs operations 2864 - **std:** adds E2/E12 square and cyclo square in E12 (used FinalExp) 2865 2866 ### Refactor 2867 - removed gnarkd and examples/benchmark 2868 - mimc uses Write(data) then Sum() instead of Sum(data) 2869 - Hash-->Sum in mimc gadget 2870 - added deriveRandomness utility func in plonk verifier 2871 - strongly typed KZG, Plonk test passing 2872 - renamed Groth16 protobuf service to ZKSnark 2873 - **groth16:** SizePublicWitness to NbPublicWitness 2874 2875 ### Style 2876 - cleaning plonk.prove 2877 - renamed GetCurveID() to CurveID() on groth16 objects 2878 - minor change 2879 - more cleaning in cs_to_r1cs_sparse.go 2880 - start clean up cs_to_r1cs_sparse.go 2881 - replaced very long suite of if else by switch 2882 - remove Bis suffixes in plonk prover 2883 - moved derivedrandomness 2884 - cleaning plonk APIs 2885 - go fmt 2886 - modified comment on reduce 2887 - **kzg:** factorized some methods in the prover 2888 - **plonk:** use close(chan) instead of send twice on it 2889 2890 ### Test 2891 - test for Fiat Shamir gadget 2892 - added reference frontend.Compile benchmarks 2893 - fix circuitID path 2894 - **gnarkd:** plonk end to end pass 2895 - **gnarkd:** gRPC test run in parallel w multiple curves 2896 2897 ### Pull Requests 2898 - Merge pull request [#126](https://github.com/consensys/gnark/issues/126) from ConsenSys/develop 2899 - Merge pull request [#124](https://github.com/consensys/gnark/issues/124) from ConsenSys/groth16-stats-pk-vk 2900 - Merge pull request [#113](https://github.com/consensys/gnark/issues/113) from ConsenSys/feat/gnarkd/plonk 2901 - Merge pull request [#117](https://github.com/consensys/gnark/issues/117) from ConsenSys/perf/recursive-proof 2902 - Merge pull request [#108](https://github.com/consensys/gnark/issues/108) from ConsenSys/feat/plonk/clean_verifier 2903 - Merge pull request [#104](https://github.com/consensys/gnark/issues/104) from ConsenSys/bls24-315 2904 - Merge pull request [#95](https://github.com/consensys/gnark/issues/95) from ConsenSys/fix/deterministic_r1cs 2905 2906 2907 <a name="v0.4.0"></a> 2908 ## [v0.4.0] - 2021-04-29 2909 ### Build 2910 - updated gnark-crypto in go.mod 2911 - updated to latest bavard and gnark-crypto 2912 - updated to latest gnark-crypto 2913 - moved solidity integration tests in github.com/consensys/gnark-tests 2914 - updated .gitignore 2915 - added .gitlint file 2916 2917 ### Ci 2918 - added integration fuzz test in backend/groth16/fuzz_test.go 2919 2920 ### Doc 2921 - fixed typo ([#63](https://github.com/consensys/gnark/issues/63)) in README.md 2922 2923 ### Docs 2924 - preparing v0.4.0 release with new README.md and CHANGELOG.md 2925 - added comments for the splitting of S in eddsa 2926 - updated package level godoc 2927 - fixed comments on wire ordering for sparse r1cs 2928 - **plonk:** fixed doc for computeH 2929 2930 ### Eddsa 2931 - bw761 blinding factor and private key size are consistant with the field size 2932 2933 ### Feat 2934 - added funcitons for proving PLONK's claim 1 (bn256), not tested 2935 - mock polynomial commitments for all curves + templates 2936 - added code gen for placeholder feature 2937 - added Fiat Shamir for plonk 2938 - added intefaces for polynomial commitments 2939 - updated go.mod (points to gnark-crypto[@hotfix](https://github.com/hotfix)/issue_36) 2940 - support for batch proofs opening at single point 2941 - **fft:** fft/fftInv now works on abitrary cosets (bounded by maxOrder) 2942 - **gnarkd:** exposing gnark APIs through RPCs ([#54](https://github.com/consensys/gnark/issues/54)) 2943 - **gnarkd:** added optional TTL in CreateProveJobRequest 2944 - **gnarkd:** added CancelProveJob method 2945 - **gnarkd:** added ListProveJob method 2946 - **plonk:** addition of placeholders to handle public inputs 2947 - **plonk:** proof that Z starts at 1 done, tests ok (bn256) 2948 - **plonk:** added commitments verification in plonk's verifier 2949 - **plonk:** plonk tests are now executed via generic code in assert 2950 - **plonk:** proof of permutation done (bn256), tests ok 2951 - **plonk:** templates for plonk setup/prove/verify 2952 - **plonk:** permutation proof part implemented, to be tested 2953 - **plonk:** claim 1 of plonk prover works correctly(bn256) 2954 - **plonk:** templates for testing prover (to be moved to backend/plonk) 2955 - **plonk:** addition of templates + code gen for computing Z 2956 - **plonk:** applying previous commit on all curves with code gen 2957 - **plonk:** code gen for the previous fix 2958 - **plonk:** addition of plonk generic code in backend/ 2959 - **plonk:** addition of the permutation in the setup 2960 - **plonk:** H is split as h1+X**m*h2+X**2m*h3 2961 - **plonk:** polynomial accumulating partial permutation OK (bn256) 2962 - **plonk cs:** adding functionality to convert a constraint system to PLONK constraints ([#56](https://github.com/consensys/gnark/issues/56)) 2963 2964 ### Fix 2965 - cs.Println doesn't trigger panic anymore 2966 - fixed Groth16 snark circuit according to previous commit 2967 - inverse and div in frontend had some variable ID offset issues ([#62](https://github.com/consensys/gnark/issues/62)) 2968 - fixed snark circuit for bls377 pairing 2969 - removed dead function (getOneWire) in cs.go 2970 - fixes [#88](https://github.com/consensys/gnark/issues/88) 2971 - go mod update + fix bad import path with gofuzz build tag 2972 - bn256 -> bn254 2973 - updated go.mod to latest gnark-crypto on develop 2974 - r1cs serialization test doesn't need to check logger io.Writer output 2975 - ensure that L.id=M[0].id and R.id=M[1].id in a sparse_r1c 2976 - added go.sum 2977 - removed unreachable code piece 2978 - typo in readme.md fixes [#60](https://github.com/consensys/gnark/issues/60) 2979 - **fft:** fixed the ordering of cosets factor according to DIF/DIT 2980 - **gnarkd:** ListProveJob test didn't account for other test adding jobs to the queue 2981 - **plonk:** removed useless multiplication by L in the prover 2982 - **plonk:** fixed size of permutation, it's now a power of 2 2983 - **plonk:** fixed formula for Li->Li+1 in verify ... (bn256) 2984 - **r1cs:** TestSerialization running sequentially 2985 - **r1cs:** moved bytes.Buffer in t.Run (TestSerialization) 2986 - **r1cs_sparse:** ensure that Solve never returns nil, err 2987 2988 ### Groth16 2989 - VerifyingKey data structure change to ensure compatibility with other impl and Solidity in Ethereum. Serialization format change. 2990 2991 ### Integration_test 2992 - added witness serialization tests 2993 2994 ### Refactor 2995 - gurvy -> gnark-crypto 2996 - use gnark-crypto polynomial and accumulator packages 2997 - bls381 -> bls12381 2998 - bls377 -> bls12377 2999 - templates for groth16 are in a dedicated folder 3000 - moved crypto/utils in frontend/, for now 3001 - bw761 -> bw6761 3002 - bn256 -> bn254, bls377 -> bls12-377, etc. following gnark-crypto v0.4.0 3003 - bn256 -> bn254 3004 - first step for gurvy -> gnark-crypto 3005 - removed the Curve field in the R part of eddsa signature 3006 - verification of openings return an error instead of bool 3007 - removed challenge for batch opening/verifying poly commit 3008 - claimed value is inside an opening proof 3009 - added method ClaimedValue on Proof interface 3010 - **fft:** nbCosets --> Depth, easier for interpreting cosets 3011 - **plonk:** lrozh (in the proof) are now in a single slice 3012 - **plonk:** challenges are built in init() until Fiat Shamir 3013 - **plonk:** suffix raw added to plonk API 3014 - **plonk:** setup, prove, verify take frontend.Circuit as witness 3015 - **plonk:** prove, verifiy now return error 3016 3017 ### Style 3018 - simplified findUnsolvedVariable in SparseR1CS 3019 - untrack to_delete_bn256.go (used for printing stuff) 3020 - removed comments of the previous fft in groth16 prove 3021 - **plonk:** removed comments (used for testing) in setup 3022 3023 ### Test 3024 - added frontend and backend fuzz.go, go-fuzz compatible format 3025 - added cs.Println must not panic base test 3026 3027 ### Pull Requests 3028 - Merge pull request [#94](https://github.com/consensys/gnark/issues/94) from ConsenSys/develop 3029 - Merge pull request [#93](https://github.com/consensys/gnark/issues/93) from ConsenSys/hotfix/fft_groth16 3030 - Merge pull request [#92](https://github.com/consensys/gnark/issues/92) from ConsenSys/feat/fiat_shamir 3031 - Merge pull request [#89](https://github.com/consensys/gnark/issues/89) from ConsenSys/fix/eddsa 3032 - Merge pull request [#86](https://github.com/consensys/gnark/issues/86) from ConsenSys/docs/godoc 3033 - Merge pull request [#65](https://github.com/consensys/gnark/issues/65) from ConsenSys/refactor/gnark-crypto 3034 - Merge pull request [#64](https://github.com/consensys/gnark/issues/64) from ConsenSys/feat/plonk_prover 3035 - Merge pull request [#58](https://github.com/consensys/gnark/issues/58) from ConsenSys/feat/fft_cosets 3036 - Merge pull request [#57](https://github.com/consensys/gnark/issues/57) from ConsenSys/feature/gnarkd 3037 - Merge pull request [#53](https://github.com/consensys/gnark/issues/53) from ConsenSys/serialization/witness 3038 - Merge pull request [#51](https://github.com/consensys/gnark/issues/51) from ConsenSys/eddsa_cleanup 3039 - Merge pull request [#46](https://github.com/consensys/gnark/issues/46) from ConsenSys/experimental/solidity 3040 - Merge pull request [#48](https://github.com/consensys/gnark/issues/48) from ConsenSys/issue_45 3041 3042 3043 <a name="v0.3.8"></a> 3044 ## [v0.3.8] - 2020-12-23 3045 3046 <a name="v0.3.7"></a> 3047 ## [v0.3.7] - 2020-12-22 3048 3049 <a name="v0.3.6"></a> 3050 ## [v0.3.6] - 2020-12-22 3051 ### Features 3052 - **profiling:** Adds a way to print the number of constraints in the circuit 3053 3054 ### Fix 3055 - **typo:** insertion -> assertion 3056 3057 ### R1cs 3058 - implemented serialization interfaces 3059 3060 ### Serialization 3061 - using gurvy.Encoder and gurvy.Decoder. Added benchmark and assert helpers 3062 - added proving key 3063 - added for fft domain 3064 - replaced some int by uint64 to avoid ambiguity in serialization protocols 3065 - gnark object implement io.ReaderFrom and io.WriterTo 3066 3067 ### Wip 3068 - updating to latest gurvy 3069 3070 ### Pull Requests 3071 - Merge pull request [#42](https://github.com/consensys/gnark/issues/42) from ConsenSys/linearexp 3072 - Merge pull request [#41](https://github.com/consensys/gnark/issues/41) from AlexandreBelling/feature/cs-nb-constraints 3073 - Merge pull request [#38](https://github.com/consensys/gnark/issues/38) from ConsenSys/hotfix/discard_secret 3074 3075 3076 <a name="v0.3.5"></a> 3077 ## [v0.3.5] - 2020-10-19 3078 3079 <a name="v0.3.4"></a> 3080 ## [v0.3.4] - 2020-10-19 3081 3082 <a name="v0.3.3"></a> 3083 ## [v0.3.3] - 2020-09-23 3084 3085 <a name="v0.3.1"></a> 3086 ## [v0.3.1] - 2020-09-22 3087 3088 <a name="v0.3.0"></a> 3089 ## [v0.3.0] - 2020-09-22 3090 3091 <a name="v0.3.0-alpha"></a> 3092 ## [v0.3.0-alpha] - 2020-09-15 3093 ### Backend 3094 - interface to big.Int added minimalist test 3095 - moved generated curve specific backends into internal to forbid library user to directly import it 3096 3097 ### Backends 3098 - restored bw761 groth16 code generation path 3099 3100 ### Circleci 3101 - added step to ensure no generated files are modified by hand 3102 - change cache key 3103 - new workflow with more insight on unit tests 3104 3105 ### Encoding 3106 - switch from gob to cbor 3107 3108 ### Frontend 3109 - remove Context object, mostly used as a curve.ID wrapper 3110 - added frontend.Compile benchmark for reference in further modifications 3111 - allocate slice capacity when known 3112 - added Circuit and CircuitVariable interfaces. Can now assign values with compiler check (no more strings). Rollup tests OK 3113 3114 ### Gnark 3115 - fixing few staticcheck warnings 3116 - input file is now json. accepts 0x hex and decimal repr for assignment to a circuit 3117 3118 ### Groth16 3119 - updated to latest gurvy and added go routines in prover workflow. WIP need to be benchmarked 3120 - reorganize Setup to use gurvy.BatchScalarMultiplication api 3121 - prover, removed appends in prover that resulted in array copies 3122 - added test for reference circuit (non short path) 3123 - restored reference circuit for benchmarking purposes 3124 - fix possible starvation issue in Prover -- there existed a world were go routine may wait for ever for the tokenn causing a timeout in tests 3125 3126 ### R1cs 3127 - added GetNbCoefficients and GetNbWires to interface 3128 - Solve takes typed arguments 3129 3130 ### Refactor 3131 - remove Gadget suffix from many structs 3132 - checkpoint 3133 3134 ### Wip 3135 - investigating millerloop result in snark circuit 3136 - frontend.NewConstraintSystem is now private. ToR1CS() is private. test circuits moved to internal. gadgets and test circuits use frontend.Compile() 3137 3138 ### Pull Requests 3139 - Merge pull request [#26](https://github.com/consensys/gnark/issues/26) from ConsenSys/gadget_cleanup 3140 - Merge pull request [#23](https://github.com/consensys/gnark/issues/23) from ConsenSys/tagless_refactor 3141 3142 3143 <a name="v0.2.1-alpha"></a> 3144 ## [v0.2.1-alpha] - 2020-06-18 3145 3146 <a name="v0.2.0-alpha"></a> 3147 ## [v0.2.0-alpha] - 2020-06-05 3148 ### Backend 3149 - cleaned asserts 3150 - generating backend/static/CURVE submodules from same template 3151 - remove curve generated code, keep only build tag version 3152 3153 ### Circleci 3154 - added missing goimports indirect dependency 3155 - run go generate to ensure repo consistency in CI 3156 - test full repo with each build tag 3157 3158 ### Cmd 3159 - removed wip export command for now 3160 3161 ### Examples 3162 - back at root of repo 3163 3164 ### Frontend 3165 - fixed division-by-constant constraint 3166 3167 ### Gnark 3168 - integration test now uses test circuits defined in internal/tests/circuits 3169 3170 ### Groth16 3171 - fix reference to large reference test circuit in groth16 3172 - remove assertion when checking number of inputs and fix missing curve in testdata path 3173 - add point check infinity in assert 3174 - VerifyingKey stores K in Affine, not Jacobian. Fixes [#18](https://github.com/consensys/gnark/issues/18) 3175 3176 ### Integration_test 3177 - be nice with circleci, do not add large circuit into integration test 3178 3179 ### Refactor 3180 - separated frontend and backend, code generate typed backend and tests for groth16. yes that's a big commit 3181 3182 ### Templates 3183 - minor code cleaning 3184 3185 ### WIP 3186 - using big.Int in frontend to avoid build tags 3187 3188 ### Pull Requests 3189 - Merge pull request [#22](https://github.com/consensys/gnark/issues/22) from ConsenSys/refactor 3190 - Merge pull request [#21](https://github.com/consensys/gnark/issues/21) from Mikerah/patch-1 3191 3192 3193 <a name="v0.1.0-alpha"></a> 3194 ## v0.1.0-alpha - 2020-03-06 3195 ### Pull Requests 3196 - Merge pull request [#11](https://github.com/consensys/gnark/issues/11) from nkeywal/exGadget 3197 - Merge pull request [#8](https://github.com/consensys/gnark/issues/8) from ConsenSys/internal-curve-tests 3198 - Merge pull request [#7](https://github.com/consensys/gnark/issues/7) from ConsenSys/develop Fixed [#6](https://github.com/consensys/gnark/issues/6) 3199 - Merge pull request [#5](https://github.com/consensys/gnark/issues/5) from ConsenSys/go1.14_deps 3200 3201 3202 [v0.11.0]: https://github.com/consensys/gnark/compare/v0.10.0...v0.11.0 3203 [v0.10.0]: https://github.com/consensys/gnark/compare/v0.9.1...v0.10.0 3204 [v0.9.1]: https://github.com/consensys/gnark/compare/v0.9.0...v0.9.1 3205 [v0.9.0]: https://github.com/consensys/gnark/compare/v0.9.0-alpha...v0.9.0 3206 [v0.9.0-alpha]: https://github.com/consensys/gnark/compare/v0.8.1...v0.9.0-alpha 3207 [v0.8.1]: https://github.com/consensys/gnark/compare/v0.8.0...v0.8.1 3208 [v0.8.0]: https://github.com/consensys/gnark/compare/v0.7.1...v0.8.0 3209 [v0.7.1]: https://github.com/consensys/gnark/compare/v0.6.5...v0.7.1 3210 [v0.6.5]: https://github.com/consensys/gnark/compare/v0.7.0...v0.6.5 3211 [v0.7.0]: https://github.com/consensys/gnark/compare/v0.6.4...v0.7.0 3212 [v0.6.4]: https://github.com/consensys/gnark/compare/v0.6.3...v0.6.4 3213 [v0.6.3]: https://github.com/consensys/gnark/compare/v0.6.2...v0.6.3 3214 [v0.6.2]: https://github.com/consensys/gnark/compare/v0.6.1...v0.6.2 3215 [v0.6.1]: https://github.com/consensys/gnark/compare/v0.6.0...v0.6.1 3216 [v0.6.0]: https://github.com/consensys/gnark/compare/v0.5.2...v0.6.0 3217 [v0.5.2]: https://github.com/consensys/gnark/compare/v0.5.1...v0.5.2 3218 [v0.5.1]: https://github.com/consensys/gnark/compare/v0.5.0...v0.5.1 3219 [v0.5.0]: https://github.com/consensys/gnark/compare/v0.4.0...v0.5.0 3220 [v0.4.0]: https://github.com/consensys/gnark/compare/v0.3.8...v0.4.0 3221 [v0.3.8]: https://github.com/consensys/gnark/compare/v0.3.7...v0.3.8 3222 [v0.3.7]: https://github.com/consensys/gnark/compare/v0.3.6...v0.3.7 3223 [v0.3.6]: https://github.com/consensys/gnark/compare/v0.3.5...v0.3.6 3224 [v0.3.5]: https://github.com/consensys/gnark/compare/v0.3.4...v0.3.5 3225 [v0.3.4]: https://github.com/consensys/gnark/compare/v0.3.3...v0.3.4 3226 [v0.3.3]: https://github.com/consensys/gnark/compare/v0.3.1...v0.3.3 3227 [v0.3.1]: https://github.com/consensys/gnark/compare/v0.3.0...v0.3.1 3228 [v0.3.0]: https://github.com/consensys/gnark/compare/v0.3.0-alpha...v0.3.0 3229 [v0.3.0-alpha]: https://github.com/consensys/gnark/compare/v0.2.1-alpha...v0.3.0-alpha 3230 [v0.2.1-alpha]: https://github.com/consensys/gnark/compare/v0.2.0-alpha...v0.2.1-alpha 3231 [v0.2.0-alpha]: https://github.com/consensys/gnark/compare/v0.1.0-alpha...v0.2.0-alpha