v1.2.0
What's Changed
Feat
- feat(cli) - expose all cli functions so they can be used in custom scripts by @ctrlc03 in #752
- feat(circuits) - shift from circom_helper to circom_tester by @ctrlc03 in #784
- feat(cross-platform-maci) - Allow MACI to run e2e on any architecture by @ctrlc03 in #817
- feat(typedoc) - add typedoc to the repo by @ctrlc03 in #755
- feat(state-tree-depth) - ensure stateTreeDepth is not hardcoded by @ctrlc03 in #777
- ci: nightly proving key generation workflow by @baumstern in #804
- feat(genLocalState) - debugging utility for log fetching and local maci state generation by @ctrlc03 in #758
- feat(commitments): store tally commitments to be used for verification by @ctrlc03 in #877
- Add verifyTallyResult, verifyPerVOSpentVoiceCredits, verifySpentVoiceCredits by @yuetloo in #835
- feat(cli): enable environmental variables by @kittybest in #996
- feat(contracts): return contract addresses when deploying the poll contract by @ctrlc03 in #1016
- feat(circuits): unify circuits compilation and zkey generation processes by @ctrlc03 in #1018
- feat(website): update ui-kit by @kittybest in #1033
- Feat/UI kit tweaks by @samajammin in #1041
- feat: optimize deployment and tally event by @0xmad in #1083
- feat(website): setup sidebar labels and position by @kittybest in #1067
- feat: make image zoomable by adding package by @kittybest in #1094
- feat(eas-gatekeeper): implement an EAS gatekeeper for MACI by @ctrlc03 in #1109
- feat(qv): add optional flag to use quadratic voting or not in MACI by @ctrlc03 in #1146
- feat(tally): remove ballotsTallied event and add view function by @ctrlc03 in #1148
- feat(cli): add relevant information in tally.json to simplify verify interface by @ctrlc03 in #1149
- feat(cli): add seed param for generate keypair command by @0xmad in #1199
- feat(cli): improve cli integration ux by @0xmad in #1212
- feat(cli): add get poll cli command by @0xmad in #1224
- feat(poll): add message batch submission by @ctrlc03 in #1226
Refactor (Code and Tests)
- Contract refactor by @chaosma in #599
- constraint updatesbcommitment in contracts by @chaosma in #661
- Use snarkjs API and remove the hardcoding of the snarkjs command line path by @yuetloo in #782
- feat(refactor) - refactor the crypto package by @ctrlc03 in #749
- feat(contracts) - add custom errors by @ctrlc03 in #764
- refactor(cli): print relevant values when comparing fails by @baumstern in #585
- Refactor package.json: Update circomlib Dependency and Remove gitHead Field by @baumstern in #831
- Restructure
maci-core
for enhanced discoverability by @baumstern in #846 - feat(domainobjs) - code and tests refactoring by @ctrlc03 in #767
- refactoring(cli && tests) - refactoring of the CLI package and integration tests by @ctrlc03 in #794
- refactor(core): remove unnecessary
accumulatorQueue
in offchain instance by @baumstern in #866 - refactor(core): cleanup the core package by @ctrlc03 in #907
- tests(key-change): add tests and docs related to MACI's key change by @ctrlc03 in #885
- refactor(contracts): add natspec across contracts and cleanup by @ctrlc03 in #898
- refactoring(circuits): refactor the circuit package to improve its efficiency by @ctrlc03 in #832
- refactor(contracts): refactor contracts code by @ctrlc03 in #913
- test(contracts): re-organize smart contract tests in separate files by @ctrlc03 in #897
- refactor(repo): remove redundant code from certain packages by @ctrlc03 in #920
- refactor(contracts): cleanup unused scripts and organize ts code by @ctrlc03 in #909
- refactor(core): refactor the process message functions and general cleanup by @ctrlc03 in #914
- test(ceremony): test ceremony artifacts and params by @ctrlc03 in #918
- test(core): process messages unit tests by @ctrlc03 in #924
- test(coverage): setup coverage for TS packages by @ctrlc03 in #932
- test(crypto): complete unit tests for the crypto package by @ctrlc03 in #933
- refactor(crypto): remove ffjavascript and implement utils functions locally by @ctrlc03 in #944
- test(contracts): refactor and add unit tests to the current suite by @ctrlc03 in #940
- refactor(zk-kit-poseidon): remove old circomlib dependencies in crypto by @ctrlc03 in #943
- feat(proofs): add preferred witness type in circuit's genProof function by @ctrlc03 in #925
- test(domainobjs): implement unit tests for the domainobjs package by @ctrlc03 in #934
- refactor(contracts): smart contracts optimizations by @ctrlc03 in #919
- refactor(crypto): improve package structure by @ctrlc03 in #935
- test(topup): implement test cases for the topup feature by @ctrlc03 in #952
- refactor(core): refactor the core package subsidy and tally functions by @ctrlc03 in #953
- test(core): test refactoring and implementation by @ctrlc03 in #954
- test(cli): reorganize e2e tests and add more tests for cli commands by @ctrlc03 in #956
- test(integration): ensure integration tests are using the correct user keys by @ctrlc03 in #957
- test(core): e2e test cases core maciState/Poll by @baumstern in #910
- test(circuits): refactor and add tests for the circom circuits by @ctrlc03 in #1004
- refactor(contracts): deploy MessageProcessor, Tally, and Subsidy contracts after deploy poll by @kittybest in #949
- refactor(contracts): optimize code by @ctrlc03 in #1008
- feat(circuits): remove circomlib fork in favour of latest and zk-kit by @ctrlc03 in #1010
- refactor(optimisedmt): remove dependency and implement locally by @ctrlc03 in #1031
- refactor(cli): use object args for cli commands by @ctrlc03 in #1048
- refactor(contracts): remove maxValues from Maci.deployPoll() and instead calculate by @ctrlc03 in #1089
- feat(cli): accept signer as parameter to cli commands by @ctrlc03 in #1127
- refactor(contracts): optimize utilities.padAndHashMessage by @ctrlc03 in #1151
- refactor(core): remove redundant code which could slow down processing by @ctrlc03 in #1168
- refactor(nonqv): optimize tally votes non qv circuit and contracts by @ctrlc03 in #1174
- refactor(contracts): add virtual to functions which could be overridden by @ctrlc03 in #1192
- refactor(contracts): add audit auggestions by @ctrlc03 in #1204
- refactor(contracts): revisit functions visibility and inheritance by @ctrlc03 in #1210
- refactor(contracts): add public to Tally.isTallied by @ctrlc03 in #1219
- refactor(crypto): modify genPrivKey to generate a random seed by @ctrlc03 in #1175
Fix
- Security audit 1 by @chaosma in #659
- security audits 2 by @chaosma in #646
- Fix: return new poll address by @bibitto in #725
- fix(ci) - remove unsupported node versions from workflows and speed things up by @ctrlc03 in #775
- fix(cli) - fix incosistencies on return codes by @ctrlc03 in #766
- fix(contracts) - add onlyOwner to deployPoll by @ctrlc03 in #765
- fix(cli) - fix wrong condition check in contracts deployment by @ctrlc03 in #763
- refactor: fix ESLint issues by @baumstern in #813
- fix(cli): ui and documentation fixes by @ctrlc03 in #876
- fix(cli): check that the subsidy vk is set by @ctrlc03 in #908
- fix(signups): ensure we account for the blank state leaf by @ctrlc03 in #948
- fix(test-cli): test fix by @ctrlc03 in #955
- fix(publish): ensure we commit unstaged files first by @ctrlc03 in #994
- fix(cli): remove files property from package.json by @0xmad in #1025
- fix(cli): add env initialization for hardhat conifg by @0xmad in #1027
- fix(circuits): replace execSync with execFileSync by @0xmad in #1029
- fix(publish): ensure we publish the correct files by @ctrlc03 in #1042
- fix(fetch): fix bugs related to logs fetching by @ctrlc03 in #1050
- fix(cli): prioritize contract addresses params by @ctrlc03 in #1049
- fix(publish): ensure test packages import exact version by @ctrlc03 in #1056
- fix(build): fix bug that prevented c witness from being compiled by @ctrlc03 in #1070
- fix(message-batch-index): remove redundant check by @ctrlc03 in #1072
- fix(cli): remove hardcoded gas limit from signup and publish by @ctrlc03 in #1087
- fix(cli): remove redundant local check for poll address by @ctrlc03 in #1088
- fix: dark mode search result by @kittybest in #1092
- fix(crypto): get rid of potential prototype polution by @0xmad in #1093
- fix(integrationTest): remove extra blank line by @kittybest in #1104
- fix(contracts): save numSignups after merging maciStateAq inside the Poll contract by @ctrlc03 in #1101
- fix(tests): fix ceremony params nightly workflow and convert to ts by @ctrlc03 in #1108
- fix(cli): give priority to gatekeeper and voice credit proxy args by @ctrlc03 in #1123
- fix(contracts): fix wrong tally processing check by @ctrlc03 in #1139
- fix(tests): remove wrong chai matcher from integrationTests by @ctrlc03 in #1193
- fix(circuits): enforce use of stateIndex from message by @ctrlc03 in #1170
- fix(circuits): ensure we account for correct num signups in messageValidator by @ctrlc03 in #1200
- fix(contracts): enforce msgType = 1 for vote messages at the contract level by @ctrlc03 in #1201
- fix(contracts): prevent user DoS the stateAq tree merging by @ctrlc03 in #1218
- fix(cli): run all the tests for package by @0xmad in #1222
- fix(topup): check valid new state leaf balance by @ctrlc03 in #1225
Chore
- chore(maci-cli): check hardhat config file by @baumstern in #667
- Support circom > v2.0.7 by @baumstern in #682
- ci: update the triggers to reflect latest branching strategy by @baumstern in #636
- Test case to show anyone can deploy poll by @yuetloo in #747
- Npm audit fix by @samajammin in #806
- deps(testing) - consolidate testing frameworks across the project by @ctrlc03 in #819
- Add clean script by @samajammin in #824
- chore: add lint-staged to pre-commit hook for automatic ESLint fix by @baumstern in #833
- chore: add .editorconfig and Prettier for code consistency by @baumstern in #834
- Add zkeys from 'download-zkeys' script to gitignore by @samajammin in #821
- chore: linter by @0xmad in #854
- chore: update ptauFiles URLs by @baumstern in #861
- fix(optimisedmt) - update package to the latest version and generate the correct d.ts file by @ctrlc03 in #875
- chore(contract): apply linter for deploy scripts and contracts by @0xmad in #873
- chore(domainobjs): apply linter rules and fixes by @0xmad in #882
- chore(core): publish a declaration file by @baumstern in #879
- chore(repo): add contributing guide, code of conduct, issue and pr templates by @ctrlc03 in #867
- chore(intergationTests): apply linter for integration tests package by @0xmad in #887
- chore(cz): update commitizen (cz) and add scripts around it by @ctrlc03 in #868
- chore(website): apply linter for website and remove unused packages by @0xmad in #888
- ci: update npm publish workflow by @baumstern in #889
- chore(circuits): add test file routes to circuit test commands by @kittybest in #895
- chore(repo): branch consolidation by @ctrlc03 in #899
- chore(circuits): integrate linter by @0xmad in #945
- chore(core): integrate linter by @0xmad in #946
- chore(cli): integrate linter by @0xmad in #950
- chore(contracts): enable linter by @0xmad in #951
- chore: linter unification by @0xmad in #958
- chore: add types check by @0xmad in #959
- chore: bundle size optimizations by @0xmad in #961
- chore: add dependabot and codeowners by @0xmad in #965
- chore: ignore dependabot commit messages for linting by @0xmad in #972
- chore(deps): update project dependencies and remove redundant ones by @ctrlc03 in #963
- chore(cli): optimize bundle size by @0xmad in #974
- chore(publish): fix publishing scripts to publish contracts with ceremony params by @ctrlc03 in #984
- chore(publishing): remove bash script for empty ballot roots contract by @ctrlc03 in #989
- chore: enable codeql and workflows cleanup by @0xmad in #1007
- chore: use pnpm instead of npx by @samajammin in #1014
- chore(contracts): add gas reporter to hardhat config by @ctrlc03 in #1017
- chore(cli): unify publish arg type by @ctrlc03 in #1058
- chore(poll): unify pollId type by @ctrlc03 in #1057
- chore: add slither github action by @0xmad in #1095
- chore(contract): add deploy tasks for maci by @0xmad in #1106
- chore(deps): update circomkit to latest version and add console logs by @ctrlc03 in #1107
- chore(contract): add contract verification task by @0xmad in #1122
- chore(core): add quiet flag to process messages to log errors by @ctrlc03 in #1138
- chore(contract): add deploy script for eas gatekeeper by @0xmad in #1142
- chore(contracts): deploy poll by @0xmad in #1166
- chore(contracts): add merge signups and messages task by @0xmad in #1167
- chore(contracts): add proof generation for task coordinator by @0xmad in #1172
- chore(cli): prepare cli package for web apps by @0xmad in #1188
- chore(cli): support install for web apps by @0xmad in #1190
- chore(circuits): remove todo messages by @ctrlc03 in #1205
- chore(contracts): export deployContractsWithLinkedLibraries by @ctrlc03 in #1229
Docs
- Update README.md of
circuits
package with build instructions by @baumstern in #690 - Revamp documentation using Docusaurus by @samajammin in #826
- fix: errors in 02_contract.md by @stanbar in #520
- Feat/order v0 docs by @samajammin in #841
- chore(docs) - add properly formatted PSE logo for blog images by @ctrlc03 in #848
- Add "Overview" docs page by @samajammin in #864
- feat: update features on homepage by @samajammin in #853
- docs: add 1.0 spec by @baumstern in #837
- fix: update GH repo links to v1.1.1 tag by @samajammin in #880
- chore: update blog slugs to kebab case by @samajammin in #881
- docs(core): add a section which describes how the local process messaging and tallying is achieved by @ctrlc03 in #849
- docs(core): add Typedoc comments by @baumstern in #883
- Feat/readme update by @samajammin in #900
- Fix/pr template by @samajammin in #901
- Feat/add versioning doc by @samajammin in #894
- docs(contracts): setup solidity docgen and configure it to work on docusaurus by @ctrlc03 in #870
- feat: add roadmap webpage by @samajammin in #860
- Chore/trim website roadmap by @samajammin in #911
- chore(website/versioned_docs/version-v1.x): typo fix by @fakefraud in #893
- docs: fix markdown syntax in README.md by @baumstern in #915
- docs(typedoc): Typedoc Indexing by @kittybest in #896
- fix: update broken GH links by @samajammin in #936
- chore(website): cut down /roadmap length by @samajammin in #939
- Feat/add website metadata by @samajammin in #902
- docs(testing): revisit testing docs and add more detailed info by @ctrlc03 in #960
- fixed header in release post by @crisgarner in #993
- Feat/update testing docs by @samajammin in #1015
- Fix/testing doc by @samajammin in #1013
- chore(cli): change maci-cli script run instructions by @0xmad in #1028
- refactor(docs): update documents according to code refactoring by @kittybest in #942
- docs(cli): clarify circuits params usage by @0xmad in #1032
- Feat/update intro by @samajammin in #1047
- feat: add new post on roadmap updates by @samajammin in #964
- docs(circuits): fix wrong circuit param description by @ctrlc03 in #1059
- docs(integration): clarify integraration docs by @0xmad in #1061
- docs: clarify installation instructions in readme by @samajammin in #1062
- Move contribution docs to website by @samajammin in #1064
- feat(website): update ui based on feedback by @kittybest in #1052
- docs: add licence link to README by @guerrierindien in #1069
- docs(contracts): add documentation for deployment workflow by @0xmad in #1132
- docs: fix word repetition by @neel-ds in #1141
- docs(non-qv): update docs to reflect the integration of non-quadratic voting by @ctrlc03 in #1147
- docs(cli): update cli docs to reflect latest changes by @ctrlc03 in #1177
- docs(contracts): clarify EASGatekeeper description by @samajammin in #1189
- Docs/homepage copy by @samajammin in #1221
- docs: add Feb 2024 PSE audit report by @samajammin in #1241
- docs: update overview.md by @samajammin in #1240
- fix: fix typos by @rex4539 in #1245
- docs(docs): update installation docs and cli walkthrough by @ctrlc03 in #1246
- Docs/add workflow by @samajammin in #1223
- Docs/add purpose by @samajammin in #1228
New Contributors
- @bibitto made their first contribution in #725
- @yuetloo made their first contribution in #747
- @samajammin made their first contribution in #806
- @stanbar made their first contribution in #520
- @kittybest made their first contribution in #895
- @fakefraud made their first contribution in #893
- @crisgarner made their first contribution in #993
- @guerrierindien made their first contribution in #1069
- @neel-ds made their first contribution in #1141
- @rex4539 made their first contribution in #1245
Full Changelog: v1.1.1...v1.2.0