Please refer to the original ethresear.ch post for a high-level view.
Documentation for developers and integrators can be found here: https://maci.pse.dev/
We welcome contributions to this project. Please join our Telegram group to discuss.
Below you can find a list of the packages included in this repository.
package | npm | tests |
---|---|---|
maci-circuits | ||
maci-cli | ||
maci-common | ||
maci-contracts | ||
maci-core | ||
maci-crypto | ||
maci-domainobjs | ||
maci-integrationTests | ||
maci-server |
This repository is organised as Lerna submodules. Each submodule contains its own unit tests.
audit
: Documentation surrounding the audit performed on v1crypto
: low-level cryptographic operations.circuits
: zk-SNARK circuits.contracts
: Solidity contracts and deployment code.domainobjs
: Classes which represent high-level domain objects particular to this project.core
: Business logic functions for message processing, vote tallying, and circuit input generation throughMaciState
, a state machine abstraction.cli
: A command-line interface with which one can deploy and interact with an instance of MACI.integrationTests
: Integration tests which use the command-line interface to perform end-to-end tests.
Please refer to the testing documentation for more information.
Run docker build -t maci .
to build all stages.
To run a specific build step docker build --target circuits -t maci .
Note: a cached version of builder
job must be on your system prior as it relies on existing artifacts
CI pipeline ensures that we have automated tests that constantly validate. For more information about pipeline workflows, see https://github.com/privacy-scaling-explorations/maci/wiki/MACI-CI-pipeline.