Poll
A representation of the Poll contract.
Implements
IPoll
Table of contents
Constructors
Properties
- ballotTree
- ballots
- batchSizes
- commands
- coordinatorKeypair
- currentMessageBatchIndex
- emptyBallot
- emptyBallotHash
- encPubKeys
- maciStateRef
- maxValues
- messageTree
- messages
- numBatchesProcessed
- numBatchesTallied
- numSignups
- perVOSpentVoiceCredits
- pollEndTimestamp
- pollId
- preVOSpentVoiceCreditsRootSalts
- resultRootSalts
- sbSalts
- spentVoiceCreditSubtotalSalts
- stateCopied
- stateLeaves
- stateTree
- stateTreeDepth
- tallyResult
- totalSpentVoiceCredits
- treeDepths
Methods
- copy
- equals
- genPerVOSpentVoiceCreditsCommitment
- genProcessMessagesCircuitInputsPartial
- genSpentVoiceCreditSubtotalCommitment
- getNumSignups
- hasUnprocessedMessages
- hasUntalliedBallots
- processAllMessages
- processMessage
- processMessages
- publishMessage
- setCoordinatorKeypair
- setNumSignups
- tallyVotes
- tallyVotesNonQv
- toJSON
- topupMessage
- updatePoll
- fromJSON
Constructors
constructor
• new Poll(pollEndTimestamp
, coordinatorKeypair
, treeDepths
, batchSizes
, maxValues
, maciStateRef
): Poll
Constructs a new Poll object.
Parameters
Name | Type | Description |
---|---|---|
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
Defined in
Poll.ts:132
Properties
ballotTree
• Optional
ballotTree: IncrementalQuinTree
Defined in
Poll.ts:72
ballots
• ballots: Ballot
[] = []
Defined in
Poll.ts:70
batchSizes
• batchSizes: BatchSizes
Defined in
Poll.ts:61
commands
• commands: ICommand
[] = []
Defined in
Poll.ts:78
coordinatorKeypair
• coordinatorKeypair: Keypair
Defined in
Poll.ts:57
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:63
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
numSignups
• Private
numSignups: bigint
Defined in
Poll.ts:121
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:66
tallyResult
• tallyResult: bigint
[] = []
Defined in
Poll.ts:106
totalSpentVoiceCredits
• totalSpentVoiceCredits: bigint
Defined in
Poll.ts:112
treeDepths
• treeDepths: TreeDepths
Defined in
Poll.ts:59
Methods
copy
▸ copy(): Poll
Create a deep copy of the Poll object.
Returns
A new instance of the Poll object with the same properties.
Implementation of
IPoll.copy
Defined in
Poll.ts:1263
equals
▸ equals(p
): boolean
Check if the Poll object is equal to another Poll object.
Parameters
Name | Type | Description |
---|---|---|
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:1337
genPerVOSpentVoiceCreditsCommitment
▸ genPerVOSpentVoiceCreditsCommitment(salt
, numBallotsToCount
, useQuadraticVoting?
): bigint
This method generates a commitment to the spent voice credits per vote option.
This is the hash of the Merkle root of the spent voice credits per vote option and a salt, computed as Poseidon([root, _salt]).
Parameters
Name | Type | Default value | Description |
---|---|---|---|
salt | bigint | undefined | The salt used in the hash function. |
numBallotsToCount | number | undefined | The number of ballots to count for the calculation. |
useQuadraticVoting | boolean | true | Whether to use quadratic voting or not. Default is true. |
Returns
bigint
Returns the hash of the Merkle root of the spent voice credits per vote option and a salt, computed as Poseidon([root, _salt]).
Defined in
Poll.ts:1237
genProcessMessagesCircuitInputsPartial
▸ genProcessMessagesCircuitInputsPartial(index
): CircuitInputs
Generates partial circuit inputs for processing a batch of messages
Parameters
Name | Type | Description |
---|---|---|
index | number | The index of the partial batch. |
Returns
stringified partial circuit inputs
Defined in
Poll.ts:761
genSpentVoiceCreditSubtotalCommitment
▸ genSpentVoiceCreditSubtotalCommitment(salt
, numBallotsToCount
, useQuadraticVoting?
): bigint
This method generates a commitment to the total spent voice credits.
This is the hash of the total spent voice credits and a salt, computed as Poseidon([totalCredits, _salt]).
Parameters
Name | Type | Default value | Description |
---|---|---|---|
salt | bigint | undefined | The salt used in the hash function. |
numBallotsToCount | number | undefined | The number of ballots to count for the calculation. |
useQuadraticVoting | boolean | true | Whether to use quadratic voting or not. Default is true. |
Returns
bigint
Returns the hash of the total spent voice credits and a salt, computed as Poseidon([totalCredits, _salt]).
Defined in
Poll.ts:1209
getNumSignups
▸ getNumSignups(): bigint
Get the number of signups
Returns
bigint
The number of signups
Defined in
Poll.ts:1462
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:396
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:882
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
Name | Type |
---|---|
ballots | Ballot [] |
stateLeaves | StateLeaf [] |
Implementation of
IPoll.processAllMessages
Defined in
Poll.ts:866
processMessage
▸ processMessage(message
, encPubKey
, qv?
): IProcessMessagesOutput
Process one message.
Parameters
Name | Type | Default value | Description |
---|---|---|---|
message | Message | undefined | The message to process. |
encPubKey | PubKey | undefined | 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:210
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
Name | Type | Default value | Description |
---|---|---|---|
pollId | bigint | undefined | The ID of the poll associated with the messages to process |
qv | boolean | true | - |
quiet | boolean | true | Whether to log errors or not |
Returns
stringified circuit inputs
Implementation of
IPoll.processMessages
Defined in
Poll.ts:422
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
Name | Type | Description |
---|---|---|
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:357
setCoordinatorKeypair
▸ setCoordinatorKeypair(serializedPrivateKey
): void
Set the coordinator's keypair
Parameters
Name | Type | Description |
---|---|---|
serializedPrivateKey | string | the serialized private key |
Returns
void
Implementation of
IPoll.setCoordinatorKeypair
Defined in
Poll.ts:1446
setNumSignups
▸ setNumSignups(numSignups
): void
Set the number of signups to match the ones from the contract
Parameters
Name | Type | Description |
---|---|---|
numSignups | bigint | the number of signups |
Returns
void
Defined in
Poll.ts:1454
tallyVotes
▸ tallyVotes(): ITallyCircuitInputs
This method tallies a ballots and updates the tally results.
Returns
the circuit inputs for the TallyVotes circuit.
Implementation of
IPoll.tallyVotes
Defined in
Poll.ts:888
tallyVotesNonQv
▸ tallyVotesNonQv(): ITallyCircuitInputs
Returns
Defined in
Poll.ts:1063
toJSON
▸ toJSON(): IJsonPoll
Serialize the Poll object to a JSON object
Returns
IJsonPoll
a JSON object
Implementation of
IPoll.toJSON
Defined in
Poll.ts:1373
topupMessage
▸ topupMessage(message
): void
Top up the voice credit balance of a user.
Parameters
Name | Type | Description |
---|---|---|
message | Message | The message to top up the voice credit balance |
Returns
void
Implementation of
IPoll.topupMessage
Defined in
Poll.ts:327
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
Name | Type |
---|---|
numSignups | bigint |
Returns
void
Defined in
Poll.ts:169
fromJSON
▸ fromJSON(json
, maciState
): Poll
Deserialize a json object into a Poll instance
Parameters
Name | Type | Description |
---|---|---|
json | IJsonPoll | the json object to deserialize |
maciState | MaciState | the reference to the MaciState Class |
Returns
a new Poll instance
Defined in
Poll.ts:1397