Group
Defined in: lib/provable/group.ts:16
An element of a Group.
Constructors
new Group()
new Group(__namedParameters: {
x: string | number | bigint | FieldVar | Field;
y: string | number | bigint | FieldVar | Field;
}): Group
Defined in: lib/provable/group.ts:46
Coerces anything group-like to a Group.
Parameters
__namedParameters
x
string
| number
| bigint
| FieldVar
| Field
y
string
| number
| bigint
| FieldVar
| Field
Returns
Properties
x
x: Field;
Defined in: lib/provable/group.ts:17
y
y: Field;
Defined in: lib/provable/group.ts:18
Accessors
generator
Get Signature
get static generator(): Group
Defined in: lib/provable/group.ts:23
The generator g
of the Group.
Returns
zero
Get Signature
get static zero(): Group
Defined in: lib/provable/group.ts:39
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
Methods
add()
add(g: Group): Group
Defined in: lib/provable/group.ts:89
Adds this Group element to another Group element.
let g1 = Group({ x: -1, y: 2})
let g2 = g1.add(g1)
Parameters
g
Returns
addNonZero()
addNonZero(g2: Group, allowZeroOutput: boolean): Group
Defined in: lib/provable/group.ts:128
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
allowZeroOutput
boolean
= false
Returns
assertEquals()
assertEquals(g: Group, message?: string): void
Defined in: lib/provable/group.ts:189
Assert that this Group element equals another Group element. Throws an error if the assertion fails.
g1.assertEquals(g2);
Parameters
g
message?
string
Returns
void
equals()
equals(g: Group): Bool
Defined in: lib/provable/group.ts:205
Check if this Group element equals another Group element. Returns a Bool.
g1.equals(g1); // Bool(true)
Parameters
g
Returns
isZero()
isZero(): Bool
Defined in: lib/provable/group.ts:76
Checks if this element is the zero
element {x: 0, y: 0}
.
Returns
neg()
neg(): Group
Defined in: lib/provable/group.ts:154
Negates this Group. Under the hood, it simply negates the y
coordinate and leaves the x
coordinate as is.
Returns
scale()
scale(s: number | bigint | Field | Scalar): Group
Defined in: lib/provable/group.ts:168
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
sub()
sub(g: Group): Group
Defined in: lib/provable/group.ts:147
Subtracts another Group element from this one.
Parameters
g
Returns
toFields()
toFields(): Field[]
Defined in: lib/provable/group.ts:240
Part of the Provable interface.
Returns an array containing this Group element as an array of Field elements.
Returns
Field
[]
toJSON()
toJSON(): {
x: string;
y: string;
}
Defined in: lib/provable/group.ts:225
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;
check()
static check(g: Group): unknown
Defined in: lib/provable/group.ts:317
Checks that a Group element is constraint properly by checking that the element is on the curve.
Parameters
g
Returns
unknown
empty()
static empty(): Group
Defined in: lib/provable/group.ts:341
Returns
from()
static from(x: string | number | bigint | FieldVar | Field, y: string | number | bigint | FieldVar | Field): Group
Defined in: lib/provable/group.ts:247
Coerces two x and y coordinates into a Group element.
Parameters
x
string
| number
| bigint
| FieldVar
| Field
y
string
| number
| bigint
| FieldVar
| Field
Returns
fromFields()
static fromFields(__namedParameters: Field[]): Group
Defined in: lib/provable/group.ts:277
Part of the Provable interface.
Deserializes a Group element from a list of field elements.
Parameters
__namedParameters
Field
[]
Returns
fromJSON()
static fromJSON(__namedParameters: {
x: string | number | bigint | FieldVar | Field;
y: string | number | bigint | FieldVar | Field;
}): Group
Defined in: lib/provable/group.ts:304
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
x
string
| number
| bigint
| FieldVar
| Field
y
string
| number
| bigint
| FieldVar
| Field
Returns
fromValue()
static fromValue(g:
| Group
| {
x: number | bigint | Field;
y: number | bigint | Field;
}): Group
Defined in: lib/provable/group.ts:216
Parameters
g
Group
| {
x
: number
| bigint
| Field
;
y
: number
| bigint
| Field
;
}
Returns
sizeInFields()
static sizeInFields(): number
Defined in: lib/provable/group.ts:286
Part of the Provable interface.
Returns 2.
Returns
number
toAuxiliary()
static toAuxiliary(g?: Group): never[]
Defined in: lib/provable/group.ts:268
Part of the Provable interface.
Returns an empty array.
Parameters
g?
Returns
never
[]
toFields()
static toFields(g: Group): Field[]
Defined in: lib/provable/group.ts:259
Part of the Provable interface.
Returns an array containing a Group element as an array of Field elements.
Parameters
g
Returns
Field
[]
toInput()
static toInput(x: Group): {
fields: Field[];
}
Defined in: lib/provable/group.ts:335
Parameters
x
Returns
{
fields: Field[];
}
fields
fields: Field[];
toJSON()
static toJSON(g: Group): {
x: string;
y: string;
}
Defined in: lib/provable/group.ts:295
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
Returns
{
x: string;
y: string;
}
x
x: string;
y
y: string;
toValue()
static toValue(__namedParameters: Group): {
x: bigint;
y: bigint;
}
Defined in: lib/provable/group.ts:212
Parameters
__namedParameters
Returns
{
x: bigint;
y: bigint;
}
x
x: bigint;
y
y: bigint;