MootVote is an anonymous bribery-resistant voting platform, powered by zk-SNARKs and Solana.
For things to work, replace Poseidon with PoseidonHasher in
node_modules/.pnpm/circomlib@2.0.5/node_modules/circomlib/circuits/smt/smthash_poseidon.circom
and remove ../poseidon.circom import. Then:
pnpm installpnpm circomkit compile Vote && pnpm circomkit setup Vote
pnpm circomkit compile Tally && pnpm circomkit setup Tally
pnpm circomkit compile Relay && pnpm circomkit setup RelayExport verifying key to put in programs/mootvote/src/vk.rs and
programs/zk-relayer/src/vk.rs:
pnpm exportVkanchor testor with the indexer:
anchor build
solana-test-validator \
--reset \
--warp-slot 32 \
--deactivate-feature 9LZdXeKGeBV6hRLdxS1rHbHoEUsKqesCC2ZAPTPKJAbK \
--bpf-program target/deploy/mootvote-keypair.json target/deploy/mootvote.so \
--bpf-program target/deploy/zk_relayer-keypair.json target/deploy/zk_relayer.so
cargo run --package mootvote-indexer -- --config indexer/config.yml
anchor test --skip-local-validator --skip-deploymkdir build/Relay/Relay_cpp/cpp_dat
cp build/Relay/Relay_cpp/Relay.* build/Relay/Relay_cpp/cpp_dat/
cd relayer
cargo build --releaseThere is an HMR-compatible nginx configuration at nginx/dev/nginx.conf
ready to be put to /etc/nginx/nginx.conf. Then launch nginx and the services:
cd frontend
pnpm devcd indexer
cargo run -- --config config.ymlcd census-service
cargo run -- --config config.ymlcd relayer
RELAYER_SOLANA_KEYPAIR=YOURKEYPAIRBASE58 cargo run -- --config config.ymlAnd proceed to http://127.0.0.1.
RUSTFLAGS="-Lnative=target/release/build/rust-rapidsnark-*/out/rapidsnark/x86_64/" cargo build --release
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:target/release/build/zk-relayer-backend-*/out/witnesscalc/package/lib/:target/release/build/rust-rapidsnark-*/out/rapidsnark/x86_64/" RELAYER_SOLANA_KEYPAIR=YOURKEYPAIRBASE58 target/release/zk-relayer-backend --config config.yml