Skip to main content
Version: v2.x

Minimal Anti Collusion Infrastructure (MACI) / PCommand

Class: PCommand

Defined in: commands/PCommand.ts:32

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

Defined in: commands/PCommand.ts:57

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

PCommand

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[]

Defined in: commands/PCommand.ts:103

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.


asCircuitInputs()

asCircuitInputs(): bigint[]

Defined in: commands/PCommand.ts:119

Returns

bigint[]


copy()

copy<T>(): T

Defined in: commands/PCommand.ts:86

Create a deep clone of this PCommand

Type Parameters

T extends PCommand

Returns

T

a copy of the PCommand


encrypt()

encrypt(signature, sharedKey): Message

Defined in: commands/PCommand.ts:158

Parameters

signature

Signature

sharedKey

EcdhSharedKey

Returns

Message

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


equals()

equals(command): boolean

Defined in: commands/PCommand.ts:124

Parameters

command

PCommand

Returns

boolean


hash()

hash(): bigint

Defined in: commands/PCommand.ts:133

Returns

bigint


sign()

sign(privKey): Signature

Defined in: commands/PCommand.ts:138

Parameters

privKey

PrivKey

Returns

Signature

Notice

Signs this command and returns a Signature.


toJSON()

toJSON(): IJsonPCommand

Defined in: commands/PCommand.ts:224

Serialize into a JSON object

Returns

IJsonPCommand


verifySignature()

verifySignature(signature, pubKey): boolean

Defined in: commands/PCommand.ts:145

Parameters

signature

Signature

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.


decrypt()

static decrypt(message, sharedKey, force): IDecryptMessage

Defined in: commands/PCommand.ts:178

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.


fromJSON()

static fromJSON(json): PCommand

Defined in: commands/PCommand.ts:241

Deserialize into a PCommand instance

Parameters

json

IJsonPCommand

Returns

PCommand

a PCommand instance