Skip to main content
Version: v2.0_alpha

Minimal Anti Collusion Infrastructure (MACI) v2.0.0-alpha / Poll

Class: Poll

A representation of the Poll contract.

Implements

  • IPoll

Constructors

new Poll()

new Poll(pollEndTimestamp, coordinatorKeypair, treeDepths, batchSizes, maxValues, maciStateRef): Poll

Constructs a new Poll object.

Parameters

pollEndTimestamp: bigint

The Unix timestamp at which the poll ends.

coordinatorKeypair: Keypair

The keypair of the coordinator.

treeDepths: TreeDepths

The depths of the trees used in the poll.

batchSizes: BatchSizes

The sizes of the batches used in the poll.

maxValues: MaxValues

The maximum values the MACI circuits can accept.

maciStateRef: MaciState

The reference to the MACI state.

Returns

Poll

Defined in

Poll.ts:132

Properties

actualStateTreeDepth

actualStateTreeDepth: number

Defined in

Poll.ts:66


ballotTree?

optional ballotTree: IncrementalQuinTree

Defined in

Poll.ts:72


ballots

ballots: Ballot[] = []

Defined in

Poll.ts:70


batchSizes

batchSizes: BatchSizes

Defined in

Poll.ts:58


commands

commands: PCommand[] = []

Defined in

Poll.ts:78


coordinatorKeypair

coordinatorKeypair: Keypair

Defined in

Poll.ts:54


currentMessageBatchIndex?

optional currentMessageBatchIndex: number

Defined in

Poll.ts:91


emptyBallot

emptyBallot: Ballot

Defined in

Poll.ts:116


emptyBallotHash?

optional emptyBallotHash: bigint

Defined in

Poll.ts:118


encPubKeys

encPubKeys: PubKey[] = []

Defined in

Poll.ts:80


maciStateRef

maciStateRef: MaciState

Defined in

Poll.ts:93


maxValues

maxValues: MaxValues

Defined in

Poll.ts:60


messageTree

messageTree: IncrementalQuinTree

Defined in

Poll.ts:76


messages

messages: Message[] = []

Defined in

Poll.ts:74


numBatchesProcessed

numBatchesProcessed: number = 0

Defined in

Poll.ts:89


numBatchesTallied

numBatchesTallied: number = 0

Defined in

Poll.ts:110


perVOSpentVoiceCredits

perVOSpentVoiceCredits: bigint[] = []

Defined in

Poll.ts:108


pollEndTimestamp

pollEndTimestamp: bigint

Defined in

Poll.ts:68


pollId

pollId: bigint

Defined in

Poll.ts:95


preVOSpentVoiceCreditsRootSalts

preVOSpentVoiceCreditsRootSalts: Record<string | number, bigint> = {}

Defined in

Poll.ts:101


resultRootSalts

resultRootSalts: Record<string | number, bigint> = {}

Defined in

Poll.ts:99


sbSalts

sbSalts: Record<string | number, bigint> = {}

Defined in

Poll.ts:97


spentVoiceCreditSubtotalSalts

spentVoiceCreditSubtotalSalts: Record<string | number, bigint> = {}

Defined in

Poll.ts:103


stateCopied

stateCopied: boolean = false

Defined in

Poll.ts:82


stateLeaves

stateLeaves: StateLeaf[]

Defined in

Poll.ts:84


stateTree?

optional stateTree: IncrementalQuinTree

Defined in

Poll.ts:86


stateTreeDepth

stateTreeDepth: number

Defined in

Poll.ts:63


tallyResult

tallyResult: bigint[] = []

Defined in

Poll.ts:106


totalSpentVoiceCredits

totalSpentVoiceCredits: bigint

Defined in

Poll.ts:112


treeDepths

treeDepths: TreeDepths

Defined in

Poll.ts:56

Methods

copy()

copy(): Poll

Create a deep copy of the Poll object.

Returns

Poll

A new instance of the Poll object with the same properties.

Implementation of

IPoll.copy

Defined in

Poll.ts:1182


equals()

equals(p): boolean

Check if the Poll object is equal to another Poll object.

Parameters

p: Poll

The Poll object to compare.

Returns

boolean

True if the two Poll objects are equal, false otherwise.

Implementation of

IPoll.equals

Defined in

Poll.ts:1256


getNumSignups()

getNumSignups(): bigint

Get the number of signups

Returns

bigint

The number of signups

Defined in

Poll.ts:1367


hasUnprocessedMessages()

hasUnprocessedMessages(): boolean

This method checks if there are any unprocessed messages in the Poll instance.

Returns

boolean

Returns true if the number of processed batches is less than the total number of batches, false otherwise.

Implementation of

IPoll.hasUnprocessedMessages

Defined in

Poll.ts:370


hasUntalliedBallots()

hasUntalliedBallots(): boolean

Checks whether there are any untallied ballots.

Returns

boolean

Whether there are any untallied ballots

Implementation of

IPoll.hasUntalliedBallots

Defined in

Poll.ts:801


processAllMessages()

processAllMessages(): object

Process all messages. This function does not update the ballots or state leaves; rather, it copies and then updates them. This makes it possible to test the result of multiple processMessage() invocations.

Returns

object

The state leaves and ballots of the poll

ballots

ballots: Ballot[]

stateLeaves

stateLeaves: StateLeaf[]

Implementation of

IPoll.processAllMessages

Defined in

Poll.ts:785


processMessage()

processMessage(message, encPubKey, qv): IProcessMessagesOutput

Process one message.

Parameters

message: Message

The message to process.

encPubKey: PubKey

The public key associated with the encryption private key.

qv: boolean = true

Returns

IProcessMessagesOutput

A number of variables which will be used in the zk-SNARK circuit.

Defined in

Poll.ts:213


processMessages()

processMessages(pollId, qv, quiet): IProcessMessagesCircuitInputs

Process _batchSize messages starting from the saved index. This function will process messages even if the number of messages is not an exact multiple of _batchSize. e.g. if there are 10 messages, index is 8, and _batchSize is 4, this function will only process the last two messages in this.messages, and finally update the zeroth state leaf. Note that this function will only process as many state leaves as there are ballots to prevent accidental inclusion of a new user after this poll has concluded.

Parameters

pollId: bigint

The ID of the poll associated with the messages to process

qv: boolean = true

quiet: boolean = true

Whether to log errors or not

Returns

IProcessMessagesCircuitInputs

stringified circuit inputs

Implementation of

IPoll.processMessages

Defined in

Poll.ts:396


publishMessage()

publishMessage(message, encPubKey): void

Inserts a Message and the corresponding public key used to generate the ECDH shared key which was used to encrypt said message.

Parameters

message: Message

The message to insert

encPubKey: PubKey

The public key used to encrypt the message

Returns

void

Implementation of

IPoll.publishMessage

Defined in

Poll.ts:332


setCoordinatorKeypair()

setCoordinatorKeypair(serializedPrivateKey): void

Set the coordinator's keypair

Parameters

serializedPrivateKey: string

the serialized private key

Returns

void

Implementation of

IPoll.setCoordinatorKeypair

Defined in

Poll.ts:1351


setNumSignups()

setNumSignups(numSignups): void

Set the number of signups to match the ones from the contract

Parameters

numSignups: bigint

the number of signups

Returns

void

Defined in

Poll.ts:1359


tallyVotes()

tallyVotes(): ITallyCircuitInputs

This method tallies a ballots and updates the tally results.

Returns

ITallyCircuitInputs

the circuit inputs for the TallyVotes circuit.

Implementation of

IPoll.tallyVotes

Defined in

Poll.ts:807


tallyVotesNonQv()

tallyVotesNonQv(): ITallyCircuitInputs

Returns

ITallyCircuitInputs

Defined in

Poll.ts:982


toJSON()

toJSON(): IJsonPoll

Serialize the Poll object to a JSON object

Returns

IJsonPoll

a JSON object

Implementation of

IPoll.toJSON

Defined in

Poll.ts:1292


updatePoll()

updatePoll(numSignups): void

Update a Poll with data from MaciState. This is the step where we copy the state from the MaciState instance, and set the number of signups we have so far.

Parameters

numSignups: bigint

Returns

void

Defined in

Poll.ts:170


fromJSON()

static fromJSON(json, maciState): Poll

Deserialize a json object into a Poll instance

Parameters

json: IJsonPoll

the json object to deserialize

maciState: MaciState

the reference to the MaciState Class

Returns

Poll

a new Poll instance

Defined in

Poll.ts:1316