Minimal Anti Collusion Infrastructure (MACI) v2.0.0-alpha / PCommand
Class: PCommand
Notice
Unencrypted data whose fields include the user's public key, vote etc. This represents a Vote command.
Constructors
new PCommand()
new PCommand(
stateIndex
,newPubKey
,voteOptionIndex
,newVoteWeight
,nonce
,pollId
,salt
):PCommand
Create a new PCommand
Parameters
• stateIndex: bigint
the state index of the user
• newPubKey: PubKey
the new public key of the user
• voteOptionIndex: bigint
the index of the vote option
• newVoteWeight: bigint
the new vote weight of the user
• nonce: bigint
the nonce of the message
• pollId: bigint
the poll ID
• salt: bigint
= ...
the salt of the message
Returns
Defined in
commands/PCommand.ts:57
Properties
newPubKey
newPubKey:
PubKey
Defined in
commands/PCommand.ts:35
newVoteWeight
newVoteWeight:
bigint
Defined in
commands/PCommand.ts:39
nonce
nonce:
bigint
Defined in
commands/PCommand.ts:41
pollId
pollId:
bigint
Defined in
commands/PCommand.ts:43
salt
salt:
bigint
Defined in
commands/PCommand.ts:45
stateIndex
stateIndex:
bigint
Defined in
commands/PCommand.ts:33
voteOptionIndex
voteOptionIndex:
bigint
Defined in
commands/PCommand.ts:37
Methods
asArray()
asArray():
bigint
[]
Returns
bigint
[]
bigint[] - the command as an array
Notice
Returns this Command as an array. Note that 5 of the Command's fields are packed into a single 250-bit value. This allows Messages to be smaller and thereby save gas when the user publishes a message.
Defined in
commands/PCommand.ts:103
asCircuitInputs()
asCircuitInputs():
bigint
[]
Returns
bigint
[]
Defined in
commands/PCommand.ts:119
copy()
copy<
T
>():T
Create a deep clone of this PCommand
Type Parameters
• T extends PCommand
Returns
T
a copy of the PCommand
Defined in
commands/PCommand.ts:86
encrypt()
encrypt(
signature
,sharedKey
):Message
Parameters
• signature: Signature
<SnarkBigNumber
>
• sharedKey: EcdhSharedKey
Returns
Notice
Encrypts this command along with a signature to produce a Message. To save gas, we can constrain the following values to 50 bits and pack them into a 250-bit value: 0. state index 3. vote option index 4. new vote weight 5. nonce 6. poll ID
Defined in
commands/PCommand.ts:158
equals()
equals(
command
):boolean
Parameters
• command: PCommand
Returns
boolean
Defined in
commands/PCommand.ts:124
hash()
hash():
bigint
Returns
bigint
Defined in
commands/PCommand.ts:133
sign()
sign(
privKey
):Signature
<SnarkBigNumber
>
Parameters
• privKey: PrivKey
Returns
Signature
<SnarkBigNumber
>
Notice
Signs this command and returns a Signature.
Defined in
commands/PCommand.ts:138
toJSON()
toJSON():
IJsonPCommand
Serialize into a JSON object
Returns
Defined in
commands/PCommand.ts:224
verifySignature()
verifySignature(
signature
,pubKey
):boolean
Parameters
• signature: Signature
<SnarkBigNumber
>
• pubKey: PubKey
Returns
boolean
Notice
Returns true if the given signature is a correct signature of this command and signed by the private key associated with the given public key.
Defined in
commands/PCommand.ts:145
decrypt()
static
decrypt(message
,sharedKey
,force
):IDecryptMessage
Decrypts a Message to produce a Command.
Parameters
• message: Message
the message to decrypt
• sharedKey: EcdhSharedKey
the shared key to use for decryption
• force: boolean
= false
whether to force decryption or not
Returns
IDecryptMessage
Dev
You can force decrypt the message by setting force
to true.
This is useful in case you don't want an invalid message to throw an error.
Defined in
commands/PCommand.ts:178
fromJSON()
static
fromJSON(json
):PCommand
Deserialize into a PCommand instance
Parameters
• json: IJsonPCommand
Returns
a PCommand instance
Defined in
commands/PCommand.ts:241