Skip to main content

Group

An element of a Group.

Constructors​

new Group()​

new Group(__namedParameters: {
"x": | string
| number
| bigint
| FieldVar
| Field;
"y": | string
| number
| bigint
| FieldVar
| Field;
}): Group

Coerces anything group-like to a Group.

Parameters​

• __namedParameters

• __namedParameters.x: | string | number | bigint | FieldVar | Field

• __namedParameters.y: | string | number | bigint | FieldVar | Field

Returns​

Group

Source​

lib/provable/group.ts:50

Properties​

x​

x: Field;

Source​

lib/provable/group.ts:21


y​

y: Field;

Source​

lib/provable/group.ts:22

Accessors​

generator​

get static generator(): Group

The generator g of the Group.

Returns​

Group

Source​

lib/provable/group.ts:27


zero​

get static zero(): Group

Unique representation of the zero element of the Group (the identity element of addition in this Group).

Note: The zero element is represented as (0, 0).

// g + -g = 0
g.add(g.neg()).assertEquals(zero);
// g + 0 = g
g.add(zero).assertEquals(g);

Returns​

Group

Source​

lib/provable/group.ts:43

Methods​

add()​

add(g: Group): Group

Adds this Group element to another Group element.

let g1 = Group({ x: -1, y: 2})
let g2 = g1.add(g1)

Parameters​

• g: Group

Returns​

Group

Source​

lib/provable/group.ts:97


addNonZero()​

addNonZero(g2: Group, allowZeroOutput: boolean): Group

Lower-level variant of add which doesn't handle the case where one of the operands is zero, and asserts that the output is non-zero.

Optionally, zero outputs can be allowed by setting allowZeroOutput to true.

Warning: If one of the inputs is zero, the result will be garbage and the proof useless. This case has to be prevented or handled separately by the caller of this method.

Parameters​

• g2: Group

• allowZeroOutput: boolean= false

Returns​

Group

Source​

lib/provable/group.ts:136


assertEquals()​

assertEquals(g: Group, message?: string): void

Assert that this Group element equals another Group element. Throws an error if the assertion fails.

g1.assertEquals(g2);

Parameters​

• g: Group

• message?: string

Returns​

void

Source​

lib/provable/group.ts:200


equals()​

equals(g: Group): Bool

Check if this Group element equals another Group element. Returns a Bool.

g1.equals(g1); // Bool(true)

Parameters​

• g: Group

Returns​

Bool

Source​

lib/provable/group.ts:216


isZero()​

isZero(): Bool

Checks if this element is the zero element {x: 0, y: 0}.

Returns​

Bool

Source​

lib/provable/group.ts:84


neg()​

neg(): Group

Negates this Group. Under the hood, it simply negates the y coordinate and leaves the x coordinate as is.

Returns​

Group

Source​

lib/provable/group.ts:165


scale()​

scale(s: number | bigint | Field | Scalar): Group

Elliptic curve scalar multiplication. Scales the Group element n-times by itself, where n is the Scalar.

let s = Scalar(5);
let 5g = g.scale(s);

Parameters​

• s: number | bigint | Field | Scalar

Returns​

Group

Source​

lib/provable/group.ts:179


sub()​

sub(g: Group): Group

Subtracts another Group element from this one.

Parameters​

• g: Group

Returns​

Group

Source​

lib/provable/group.ts:158


toFields()​

toFields(): Field[]

Part of the Provable interface.

Returns an array containing this Group element as an array of Field elements.

Returns​

Field[]

Source​

lib/provable/group.ts:253


toJSON()​

toJSON(): {
"x": string;
"y": string;
}

Serializes this Group element to a JSON object.

This operation does NOT affect the circuit and can't be used to prove anything about the representation of the element.

Returns​

{
"x": string;
"y": string;
}
x​
x: string;
y​
y: string;

Source​

lib/provable/group.ts:238


check()​

static check(g: Group): unknown

Checks that a Group element is constraint properly by checking that the element is on the curve.

Parameters​

• g: Group

Returns​

unknown

Source​

lib/provable/group.ts:330


empty()​

static empty(): Group

Returns​

Group

Source​

lib/provable/group.ts:356


from()​

static from(x: 
| string
| number
| bigint
| FieldVar
| Field, y:
| string
| number
| bigint
| FieldVar
| Field): Group

Coerces two x and y coordinates into a Group element.

Parameters​

• x: | string | number | bigint | FieldVar | Field

• y: | string | number | bigint | FieldVar | Field

Returns​

Group

Source​

lib/provable/group.ts:260


fromFields()​

static fromFields(__namedParameters: Field[]): Group

Part of the Provable interface.

Deserializes a Group element from a list of field elements.

Parameters​

• __namedParameters: Field[]

Returns​

Group

Source​

lib/provable/group.ts:290


fromJSON()​

static fromJSON(__namedParameters: {
"x": | string
| number
| bigint
| FieldVar
| Field;
"y": | string
| number
| bigint
| FieldVar
| Field;
}): Group

Deserializes a JSON-like structure to a Group element.

This operation does NOT affect the circuit and can't be used to prove anything about the representation of the element.

Parameters​

• __namedParameters

• __namedParameters.x: | string | number | bigint | FieldVar | Field

• __namedParameters.y: | string | number | bigint | FieldVar | Field

Returns​

Group

Source​

lib/provable/group.ts:317


fromValue()​

static fromValue(g: Group | {
"x": number | bigint | Field;
"y": number | bigint | Field;
}): Group

Parameters​

• g: Group | { "x": number | bigint | Field; "y": number | bigint | Field; }

Returns​

Group

Source​

lib/provable/group.ts:227


sizeInFields()​

static sizeInFields(): number

Part of the Provable interface.

Returns 2.

Returns​

number

Source​

lib/provable/group.ts:299


toAuxiliary()​

static toAuxiliary(g?: Group): never[]

Part of the Provable interface.

Returns an empty array.

Parameters​

• g?: Group

Returns​

never[]

Source​

lib/provable/group.ts:281


toFields()​

static toFields(g: Group): Field[]

Part of the Provable interface.

Returns an array containing a Group element as an array of Field elements.

Parameters​

• g: Group

Returns​

Field[]

Source​

lib/provable/group.ts:272


toInput()​

static toInput(x: Group): {
"fields": Field[];
}

Parameters​

• x: Group

Returns​

{
"fields": Field[];
}
fields​
fields: Field[];

Source​

lib/provable/group.ts:350


toJSON()​

static toJSON(g: Group): {
"x": string;
"y": string;
}

Serializes a Group element to a JSON object.

This operation does NOT affect the circuit and can't be used to prove anything about the representation of the element.

Parameters​

• g: Group

Returns​

{
"x": string;
"y": string;
}
x​
x: string;
y​
y: string;

Source​

lib/provable/group.ts:308


toValue()​

static toValue(__namedParameters: Group): {
"x": bigint;
"y": bigint;
}

Parameters​

• __namedParameters: Group

Returns​

{
"x": bigint;
"y": bigint;
}
x​
x: bigint;
y​
y: bigint;

Source​

lib/provable/group.ts:223