Skip to main content
Version: v1.3_alpha

IPoll

Poll interface

numSignUpsAndMessages

function numSignUpsAndMessages() external view returns (uint256 numSignups, uint256 numMsgs)

The number of messages which have been processed and the number of signups

Return Values

NameTypeDescription
numSignupsuint256The number of signups
numMsgsuint256The number of messages sent by voters

topup

function topup(uint256 stateIndex, uint256 amount) external

Allows to publish a Topup message

Parameters

NameTypeDescription
stateIndexuint256The index of user in the state queue
amountuint256The amount of credits to topup

publishMessage

function publishMessage(struct DomainObjs.Message _message, struct DomainObjs.PubKey _encPubKey) external

Allows anyone to publish a message (an encrypted command and signature). This function also enqueues the message.

Parameters

NameTypeDescription
_messagestruct DomainObjs.MessageThe message to publish
_encPubKeystruct DomainObjs.PubKeyAn epheremal public key which can be combined with the coordinator's private key to generate an ECDH shared key with which to encrypt the message.

mergeMaciStateAq

function mergeMaciStateAq(uint256 _pollId) external

The second step of merging the MACI state AccQueue. This allows the ProcessMessages circuit to access the latest state tree and ballots via currentSbCommitment.

Parameters

NameTypeDescription
_pollIduint256The ID of the active Poll

mergeMessageAqSubRoots

function mergeMessageAqSubRoots(uint256 _numSrQueueOps) external

The first step in merging the message AccQueue so that the ProcessMessages circuit can access the message root.

Parameters

NameTypeDescription
_numSrQueueOpsuint256The number of subroot queue operations to perform

mergeMessageAq

function mergeMessageAq() external

The second step in merging the message AccQueue so that the ProcessMessages circuit can access the message root.

getDeployTimeAndDuration

function getDeployTimeAndDuration() external view returns (uint256 _deployTime, uint256 _duration)

Returns the Poll's deploy time and duration

Return Values

NameTypeDescription
_deployTimeuint256The deployment timestamp
_durationuint256The duration of the poll

stateAqMerged

function stateAqMerged() external view returns (bool)

Get the result of whether the MACI contract's stateAq has been merged by this contract

Return Values

NameTypeDescription
[0]boolWhether the MACI contract's stateAq has been merged by this contract

treeDepths

function treeDepths() external view returns (uint8 intStateTreeDepth, uint8 messageTreeSubDepth, uint8 messageTreeDepth, uint8 voteOptionTreeDepth)

Get the depths of the merkle trees

Return Values

NameTypeDescription
intStateTreeDepthuint8The depth of the state tree
messageTreeSubDepthuint8The subdepth of the message tree
messageTreeDepthuint8The depth of the message tree
voteOptionTreeDepthuint8The subdepth of the vote option tree

maxValues

function maxValues() external view returns (uint256 maxMessages, uint256 maxVoteOptions)

Get the max values for the poll

Return Values

NameTypeDescription
maxMessagesuint256The maximum number of messages
maxVoteOptionsuint256The maximum number of vote options

extContracts

function extContracts() external view returns (contract IMACI maci, contract AccQueue messageAq, contract TopupCredit topupCredit)

Get the external contracts

Return Values

NameTypeDescription
macicontract IMACIThe IMACI contract
messageAqcontract AccQueueThe AccQueue contract
topupCreditcontract TopupCreditThe TopupCredit contract

coordinatorPubKeyHash

function coordinatorPubKeyHash() external view returns (uint256 _coordinatorPubKeyHash)

Get the hash of coordinator's public key

Return Values

NameTypeDescription
_coordinatorPubKeyHashuint256the hash of coordinator's public key

currentSbCommitment

function currentSbCommitment() external view returns (uint256)

Get the commitment to the state leaves and the ballots. This is hash3(stateRoot, ballotRoot, salt). Its initial value should be hash(maciStateRootSnapshot, emptyBallotRoot, 0) Each successful invocation of processMessages() should use a different salt to update this value, so that an external observer cannot tell in the case that none of the messages are valid.

Return Values

NameTypeDescription
[0]uint256The commitment to the state leaves and the ballots

actualStateTreeDepth

function actualStateTreeDepth() external view returns (uint8)

Get the dynamic depth of the state tree at the time of poll finalization (based on the number of leaves inserted)