Skip to main content
Version: v2.x

Minimal Anti Collusion Infrastructure (MACI) v2.2.0 / 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

PCommand

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

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

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

IJsonPCommand

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

PCommand

a PCommand instance

Defined in

commands/PCommand.ts:241