Skip to content

Commit

Permalink
Merge pull request #2190 from privacy-scaling-explorations/refactor/d…
Browse files Browse the repository at this point in the history
…eploy-maci

refactor: deploy maci command
  • Loading branch information
0xmad authored Mar 5, 2025
2 parents f082b76 + 3eb6915 commit 98a6b11
Show file tree
Hide file tree
Showing 33 changed files with 1,041 additions and 683 deletions.
58 changes: 27 additions & 31 deletions apps/relayer/tests/deploy.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
import hardhat from "hardhat";
import { deploy } from "maci-cli";
import { deployPoseidonContracts } from "maci-contracts";
import { Keypair } from "maci-domainobjs";
import {
EMode,
Expand All @@ -9,9 +7,13 @@ import {
setVerifyingKeys,
signup,
joinPoll,
deployMaci,
deployPoll,
deployVkRegistryContract,
ContractStorage,
deployFreeForAllSignUpGatekeeper,
deployVerifier,
deployConstantInitialVoiceCreditProxy,
} from "maci-sdk";

import {
Expand Down Expand Up @@ -102,30 +104,25 @@ export class TestDeploy {
signer,
});

const { PoseidonT3Contract, PoseidonT4Contract, PoseidonT5Contract, PoseidonT6Contract } =
await deployPoseidonContracts(signer, {});

const poseidonAddrs = await Promise.all([
PoseidonT3Contract.getAddress(),
PoseidonT4Contract.getAddress(),
PoseidonT5Contract.getAddress(),
PoseidonT6Contract.getAddress(),
]).then(([poseidonT3, poseidonT4, poseidonT5, poseidonT6]) => ({
poseidonT3,
poseidonT4,
poseidonT5,
poseidonT6,
}));

const maciAddresses = await deploy({
const signupGatekeeper = await deployFreeForAllSignUpGatekeeper(signer, true);
const signupGatekeeperContractAddress = await signupGatekeeper.getAddress();

const maciAddresses = await deployMaci({
stateTreeDepth: 10,
poseidonT3Address: poseidonAddrs.poseidonT3,
poseidonT4Address: poseidonAddrs.poseidonT4,
poseidonT5Address: poseidonAddrs.poseidonT5,
poseidonT6Address: poseidonAddrs.poseidonT6,
signer,
signupGatekeeperAddress: signupGatekeeperContractAddress,
});

const initialVoiceCreditProxy = await deployConstantInitialVoiceCreditProxy(
DEFAULT_INITIAL_VOICE_CREDITS,
signer,
true,
);
const initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();

const verifier = await deployVerifier(signer, true);
const verifierContractAddress = await verifier.getAddress();

const startDate = Math.floor(Date.now() / 1000) + 30;

await deployPoll({
Expand All @@ -138,24 +135,23 @@ export class TestDeploy {
mode: EMode.NON_QV,
relayers: [await signer.getAddress()],
signer,
verifierContractAddress: maciAddresses.verifierAddress,
maciAddress: maciAddresses.maciAddress,
gatekeeperContractAddress: maciAddresses.signUpGatekeeperAddress,
initialVoiceCreditProxyContractAddress: maciAddresses.initialVoiceCreditProxyAddress,
verifierContractAddress,
maciAddress: maciAddresses.maciContractAddress,
gatekeeperContractAddress: signupGatekeeperContractAddress,
initialVoiceCreditProxyContractAddress,
voteOptions: DEFAULT_VOTE_OPTIONS,
vkRegistryContractAddress: vkRegistry,
initialVoiceCredits: DEFAULT_INITIAL_VOICE_CREDITS,
});

await signup({
maciAddress: maciAddresses.maciAddress,
maciAddress: maciAddresses.maciContractAddress,
maciPubKey: user.pubKey.serialize(),
sgData: DEFAULT_SG_DATA,
signer,
});

const { pollStateIndex, timestamp, voiceCredits } = await joinPoll({
maciAddress: maciAddresses.maciAddress,
maciAddress: maciAddresses.maciContractAddress,
pollId: 0n,
privateKey: user.privKey.serialize(),
stateIndex: 1n,
Expand All @@ -171,13 +167,13 @@ export class TestDeploy {

const maciState = await genMaciStateFromContract({
provider: signer.provider,
address: maciAddresses.maciAddress,
address: maciAddresses.maciContractAddress,
coordinatorKeypair,
pollId: 0n,
});

this.contractsData.maciState = maciState;
this.contractsData.maciContractAddress = maciAddresses.maciAddress;
this.contractsData.maciContractAddress = maciAddresses.maciContractAddress;
this.contractsData.stateLeafIndex = Number(pollStateIndex);
this.contractsData.timestamp = Number(timestamp);
this.contractsData.voiceCredits = Number(voiceCredits);
Expand Down
16 changes: 11 additions & 5 deletions apps/relayer/ts/messageBatch/messageBatch.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ export class MessageBatchService {
poll: message.poll,
data: message.data,
hash: message.hash,
maciContractAddress: message.maciContractAddress,
maciAddress: message.maciContractAddress,
publicKey: PubKey.deserialize(message.publicKey).asArray().map(String),
}));

Expand All @@ -91,9 +91,9 @@ export class MessageBatchService {
throw error;
});

const [{ maciAddress, pollId }] = uniqBy(
allMessages.map(({ maciContractAddress, poll }) => ({
maciAddress: maciContractAddress,
const [{ maciContractAddress, pollId }] = uniqBy(
allMessages.map(({ maciAddress, poll }) => ({
maciContractAddress: maciAddress,
pollId: poll,
})),
"maciContractAddress",
Expand All @@ -103,7 +103,13 @@ export class MessageBatchService {
const signer = await getDefaultSigner();

const bytes32IpfsHash = await this.ipfsService.cidToBytes32(ipfsHash);
await relayMessages({ maciAddress, pollId, ipfsHash: bytes32IpfsHash, messages: allMessages, signer });
await relayMessages({
maciAddress: maciContractAddress,
pollId,
ipfsHash: bytes32IpfsHash,
messages: allMessages,
signer,
});

return messageBatches;
}
Expand Down
Loading

0 comments on commit 98a6b11

Please sign in to comment.