MessageProcessor
MessageProcessor is used to process messages published by signup users. It will process message by batch due to large size of messages. After it finishes processing, the sbCommitment will be used for Tally and Subsidy contracts.
NoMoreMessages
error NoMoreMessages()
custom errors
StateNotMerged
error StateNotMerged()
MessageAqNotMerged
error MessageAqNotMerged()
InvalidProcessMessageProof
error InvalidProcessMessageProof()
MaxVoteOptionsTooLarge
error MaxVoteOptionsTooLarge()
NumSignUpsTooLarge
error NumSignUpsTooLarge()
CurrentMessageBatchIndexTooLarge
error CurrentMessageBatchIndexTooLarge()
BatchEndIndexTooLarge
error BatchEndIndexTooLarge()
CircuitPublicInputs
Circuit public inputs
struct CircuitPublicInputs {
uint256 maxVoteOptions;
uint256 numSignUps;
uint256 index;
uint256 messageBatchSize;
uint256 batchEndIndex;
uint256 coordinatorPubKeyHash;
uint256 messageRoot;
uint256 currentSbCommitment;
uint256 newSbCommitment;
uint256 pollEndTimestamp;
uint256 actualStateTreeDepth;
}
TREE_ARITY
uint256 TREE_ARITY
processingComplete
bool processingComplete
Get the result of whether there are unprocessed messages left
Return Values
Name | Type | Description |
---|
numBatchesProcessed
uint256 numBatchesProcessed
The number of batches processed
currentMessageBatchIndex
uint256 currentMessageBatchIndex
The current message batch index. When the coordinator runs processMessages(), this action relates to messages currentMessageBatchIndex to currentMessageBatchIndex + messageBatchSize.
sbCommitment
uint256 sbCommitment
Get the commitment to the state and ballot roots
Return Values
Name | Type | Description |
---|
poll
contract IPoll poll
verifier
contract IVerifier verifier
vkRegistry
contract IVkRegistry vkRegistry
mode
enum DomainObjs.Mode mode
constructor
constructor(address _verifier, address _vkRegistry, address _poll, address _mpOwner, enum DomainObjs.Mode _mode) public payable
Create a new instance
Parameters
Name | Type | Description |
---|---|---|
_verifier | address | The Verifier contract address |
_vkRegistry | address | The VkRegistry contract address |
_poll | address | The Poll contract address |
_mpOwner | address | The owner of the MessageProcessor contract |
_mode | enum DomainObjs.Mode | Voting mode |
processMessages
function processMessages(struct MessageProcessor.CircuitPublicInputs _publicCircuitInputs, uint256[8] _proof) external
Update the Poll's currentSbCommitment if the proof is valid.
Parameters
Name | Type | Description |
---|---|---|
_publicCircuitInputs | struct MessageProcessor.CircuitPublicInputs | The public circuit inputs |
_proof | uint256[8] | The zk-SNARK proof |
verifyProcessProof
function verifyProcessProof(struct MessageProcessor.CircuitPublicInputs circuitPublicInputs, uint256[8] _proof) internal view returns (bool isValid)
Verify the proof for processMessage
used to update the sbCommitment
Parameters
Name | Type | Description |
---|---|---|
circuitPublicInputs | struct MessageProcessor.CircuitPublicInputs | The circuit public inputs |
_proof | uint256[8] | The zk-SNARK proof |
Return Values
Name | Type | Description |
---|---|---|
isValid | bool | Whether the proof is valid |
updateMessageProcessingData
function updateMessageProcessingData(uint256 _newSbCommitment, uint256 _currentMessageBatchIndex, bool _processingComplete) internal
update message processing state variables
Parameters
Name | Type | Description |
---|---|---|
_newSbCommitment | uint256 | sbCommitment to be updated |
_currentMessageBatchIndex | uint256 | currentMessageBatchIndex to be updated |
_processingComplete | bool | update flag that indicate processing is finished or not |