@aztec/foundation 0.14.2 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/abi/decoder.js +3 -3
- package/dest/abi/encoder.d.ts +1 -1
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +3 -3
- package/dest/abi/function_selector.d.ts +2 -1
- package/dest/abi/function_selector.d.ts.map +1 -1
- package/dest/abi/function_selector.js +6 -5
- package/dest/aztec-address/index.d.ts +10 -108
- package/dest/aztec-address/index.d.ts.map +1 -1
- package/dest/aztec-address/index.js +18 -139
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +7 -4
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +7 -4
- package/dest/crypto/index.d.ts +1 -0
- package/dest/crypto/index.d.ts.map +1 -1
- package/dest/crypto/index.js +2 -1
- package/dest/crypto/pedersen/index.d.ts +1 -9
- package/dest/crypto/pedersen/index.d.ts.map +1 -1
- package/dest/crypto/pedersen/index.js +2 -298
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts +12 -0
- package/dest/crypto/pedersen/pedersen.elliptic.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.elliptic.js +575 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts +10 -0
- package/dest/crypto/pedersen/pedersen.noble.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.noble.js +560 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +16 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -0
- package/dest/crypto/pedersen/pedersen.wasm.js +38 -0
- package/dest/crypto/random/index.d.ts.map +1 -1
- package/dest/crypto/random/index.js +5 -3
- package/dest/crypto/sha256/index.d.ts +0 -8
- package/dest/crypto/sha256/index.d.ts.map +1 -1
- package/dest/crypto/sha256/index.js +1 -12
- package/dest/fields/fields.d.ts +69 -160
- package/dest/fields/fields.d.ts.map +1 -1
- package/dest/fields/fields.js +142 -185
- package/dest/fields/index.d.ts +0 -1
- package/dest/fields/index.d.ts.map +1 -1
- package/dest/fields/index.js +1 -2
- package/dest/fields/point.d.ts.map +1 -1
- package/dest/fields/point.js +5 -4
- package/dest/json-rpc/class_converter.d.ts.map +1 -1
- package/dest/json-rpc/class_converter.js +7 -5
- package/dest/json-rpc/client/json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/json_rpc_client.js +3 -2
- package/dest/log/console.d.ts +1 -1
- package/dest/log/console.d.ts.map +1 -1
- package/dest/log/debug.d.ts +1 -1
- package/dest/log/debug.d.ts.map +1 -1
- package/dest/log/index.d.ts +1 -4
- package/dest/log/index.d.ts.map +1 -1
- package/dest/log/index.js +2 -1
- package/dest/log/log_fn.d.ts +5 -0
- package/dest/log/log_fn.d.ts.map +1 -0
- package/dest/log/log_fn.js +2 -0
- package/dest/log/logger.d.ts +1 -1
- package/dest/log/logger.d.ts.map +1 -1
- package/dest/log/logger.js +7 -4
- package/dest/serialize/buffer_reader.d.ts +0 -16
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +1 -21
- package/dest/serialize/free_funcs.d.ts +6 -0
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +11 -1
- package/dest/timer/timer.d.ts +4 -0
- package/dest/timer/timer.d.ts.map +1 -1
- package/dest/timer/timer.js +10 -4
- package/dest/transport/interface/transferable.d.ts +1 -1
- package/dest/transport/interface/transferable.d.ts.map +1 -1
- package/dest/transport/interface/transferable.js +5 -3
- package/dest/wasm/empty_wasi_sdk.d.ts +1 -1
- package/dest/wasm/wasm_module.d.ts.map +1 -1
- package/dest/wasm/wasm_module.js +4 -3
- package/package.json +8 -3
- package/src/abi/decoder.ts +2 -2
- package/src/abi/encoder.ts +3 -2
- package/src/abi/function_selector.ts +5 -4
- package/src/aztec-address/index.ts +17 -149
- package/src/bigint-buffer/index.ts +9 -3
- package/src/collection/array.ts +9 -3
- package/src/crypto/index.ts +1 -0
- package/src/crypto/pedersen/index.ts +1 -309
- package/src/crypto/pedersen/pedersen.elliptic.ts +584 -0
- package/src/crypto/pedersen/pedersen.noble.ts +573 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +46 -0
- package/src/crypto/random/index.ts +6 -2
- package/src/crypto/sha256/index.ts +0 -13
- package/src/fields/fields.ts +197 -197
- package/src/fields/index.ts +0 -1
- package/src/fields/point.ts +5 -3
- package/src/json-rpc/class_converter.ts +8 -4
- package/src/json-rpc/client/json_rpc_client.ts +3 -1
- package/src/log/console.ts +1 -1
- package/src/log/debug.ts +1 -1
- package/src/log/index.ts +1 -6
- package/src/log/log_fn.ts +5 -0
- package/src/log/logger.ts +10 -4
- package/src/serialize/buffer_reader.ts +0 -22
- package/src/serialize/free_funcs.ts +11 -0
- package/src/timer/timer.ts +10 -3
- package/src/transport/interface/transferable.ts +7 -3
- package/src/wasm/wasm_module.ts +3 -1
- package/dest/fields/grumpkin_scalar.d.ts +0 -96
- package/dest/fields/grumpkin_scalar.d.ts.map +0 -1
- package/dest/fields/grumpkin_scalar.js +0 -125
- package/src/fields/grumpkin_scalar.ts +0 -138
|
@@ -1,162 +1,30 @@
|
|
|
1
|
-
import { toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
|
|
2
1
|
import { Fr } from '../fields/index.js';
|
|
3
|
-
import { BufferReader } from '../serialize/buffer_reader.js';
|
|
4
2
|
|
|
5
3
|
/**
|
|
6
|
-
* AztecAddress represents a 32-byte address in the Aztec Protocol.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* AztecAddress represents a 32-byte address in the Aztec Protocol.
|
|
5
|
+
* It provides methods to create, manipulate, and compare addresses.
|
|
6
|
+
* The maximum value of an address is determined by the field modulus and all instances of AztecAddress.
|
|
7
|
+
* It should have a value less than or equal to this max value.
|
|
8
|
+
* This class also provides helper functions to convert addresses from strings, buffers, and other formats.
|
|
10
9
|
*/
|
|
11
|
-
export class AztecAddress {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
static MAX_VALUE = AztecAddress.MODULUS - 1n;
|
|
16
|
-
|
|
17
|
-
constructor(
|
|
18
|
-
/**
|
|
19
|
-
* The buffer field.
|
|
20
|
-
*/
|
|
21
|
-
public readonly buffer: Buffer,
|
|
22
|
-
) {
|
|
23
|
-
const value = toBigIntBE(buffer);
|
|
24
|
-
if (value > AztecAddress.MAX_VALUE) {
|
|
25
|
-
throw new Error(`AztecAddress out of range ${value}.`);
|
|
10
|
+
export class AztecAddress extends Fr {
|
|
11
|
+
constructor(buffer: Buffer) {
|
|
12
|
+
if (buffer.length !== 32) {
|
|
13
|
+
throw new Error(`Invalid length ${buffer.length}.`);
|
|
26
14
|
}
|
|
15
|
+
super(buffer);
|
|
27
16
|
}
|
|
28
17
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* within a valid range and then converting it into a Buffer of a fixed size in bytes.
|
|
32
|
-
*
|
|
33
|
-
* @returns A new AztecAddress instance with a random value.
|
|
34
|
-
*/
|
|
35
|
-
static random() {
|
|
36
|
-
return new AztecAddress(toBufferBE(Fr.random().value, AztecAddress.SIZE_IN_BYTES));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Creates an AztecAddress instance from a given buffer or BufferReader.
|
|
41
|
-
* If the input is a Buffer, it wraps it in a BufferReader before processing.
|
|
42
|
-
* Throws an error if the input length is not equal to the expected size.
|
|
43
|
-
*
|
|
44
|
-
* @param buffer - The input buffer or BufferReader containing the address data.
|
|
45
|
-
* @returns - A new AztecAddress instance with the extracted address data.
|
|
46
|
-
*/
|
|
47
|
-
static fromBuffer(buffer: Buffer | BufferReader) {
|
|
48
|
-
const reader = BufferReader.asReader(buffer);
|
|
49
|
-
return new this(reader.readBytes(this.SIZE_IN_BYTES));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Create an AztecAddress instance from a hex-encoded string.
|
|
54
|
-
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
55
|
-
* Throws an error if the input length is invalid or address value is out of range.
|
|
56
|
-
*
|
|
57
|
-
* @param address - The hex-encoded string representing the Aztec address.
|
|
58
|
-
* @returns An AztecAddress instance.
|
|
59
|
-
*/
|
|
60
|
-
static fromString(address: string) {
|
|
61
|
-
const buf = Buffer.from(address.replace(/^0x/i, ''), 'hex');
|
|
62
|
-
if (buf.length !== AztecAddress.SIZE_IN_BYTES) {
|
|
63
|
-
throw new Error(`Invalid length ${buf.length}.`);
|
|
64
|
-
}
|
|
65
|
-
return new AztecAddress(buf);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Creates an AztecAddress from a bigint.
|
|
70
|
-
* The provided value must be within the range of a field.
|
|
71
|
-
* @param address - The bigint representation of the address.
|
|
72
|
-
* @returns An AztecAddress instance.
|
|
73
|
-
*/
|
|
74
|
-
static fromBigInt(address: bigint) {
|
|
75
|
-
return new AztecAddress(toBufferBE(address, AztecAddress.SIZE_IN_BYTES));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Converts the AztecAddress instance into a Buffer.
|
|
80
|
-
* This method should be used when encoding the address for storage, transmission or serialization purposes.
|
|
81
|
-
*
|
|
82
|
-
* @returns A Buffer representation of the AztecAddress instance.
|
|
83
|
-
*/
|
|
84
|
-
toBuffer() {
|
|
85
|
-
return this.buffer;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Convert the AztecAddress to a hexadecimal string representation, with a "0x" prefix.
|
|
90
|
-
* The resulting string will have a length of 66 characters (including the prefix).
|
|
91
|
-
*
|
|
92
|
-
* @returns A hexadecimal string representation of the AztecAddress.
|
|
93
|
-
*/
|
|
94
|
-
toString(): `0x${string}` {
|
|
95
|
-
return `0x${this.buffer.toString('hex')}`;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Returns a shortened string representation of the AztecAddress, displaying only the first 10 characters and last 4 characters.
|
|
100
|
-
* This is useful for human-readable displays where the full address is not necessary.
|
|
101
|
-
*
|
|
102
|
-
* @returns A shortened string representation of the address.
|
|
103
|
-
*/
|
|
104
|
-
toShortString() {
|
|
105
|
-
const str = this.toString();
|
|
106
|
-
return `${str.slice(0, 10)}...${str.slice(-4)}`;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Returns this address from a Field element.
|
|
111
|
-
* @param field - The Field element to convert.
|
|
112
|
-
* @returns An Address Object from a Field element with the same value.
|
|
113
|
-
*/
|
|
114
|
-
static fromField(field: Fr): AztecAddress {
|
|
115
|
-
return new AztecAddress(toBufferBE(field.value, AztecAddress.SIZE_IN_BYTES));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Returns this address as a field element.
|
|
120
|
-
* @returns A field element with the same value as the address.
|
|
121
|
-
*/
|
|
122
|
-
toField() {
|
|
123
|
-
return Fr.fromBuffer(this.toBuffer());
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Returns this address as a bigint. Useful for creating maps indexed by addresses.
|
|
128
|
-
* @returns A bigint with the same value as the address.
|
|
129
|
-
*/
|
|
130
|
-
toBigInt() {
|
|
131
|
-
return toBigIntBE(this.buffer);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Determines if this AztecAddress instance is equal to the given AztecAddress instance.
|
|
136
|
-
* Equality is based on the content of their respective buffers.
|
|
137
|
-
*
|
|
138
|
-
* @param other - The AztecAddress instance to compare against.
|
|
139
|
-
* @returns True if the buffers of both instances are equal, false otherwise.
|
|
140
|
-
*/
|
|
141
|
-
equals(other: AztecAddress) {
|
|
142
|
-
return this.buffer.equals(other.buffer);
|
|
18
|
+
static fromField(fr: Fr) {
|
|
19
|
+
return new AztecAddress(fr.toBuffer());
|
|
143
20
|
}
|
|
144
21
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
*
|
|
148
|
-
* @returns Returns true if the AztecAddress is equal to the zero address, otherwise returns false.
|
|
149
|
-
*/
|
|
150
|
-
isZero() {
|
|
151
|
-
return this.equals(AztecAddress.ZERO);
|
|
22
|
+
static fromBigInt(value: bigint) {
|
|
23
|
+
return AztecAddress.fromField(new Fr(value));
|
|
152
24
|
}
|
|
153
25
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
* @returns A hex string representing the address.
|
|
158
|
-
*/
|
|
159
|
-
toFriendlyJSON() {
|
|
160
|
-
return this.toString();
|
|
26
|
+
static fromString(buf: string) {
|
|
27
|
+
const buffer = Buffer.from(buf.replace(/^0x/i, ''), 'hex');
|
|
28
|
+
return new AztecAddress(buffer);
|
|
161
29
|
}
|
|
162
30
|
}
|
|
@@ -33,7 +33,9 @@ export function toBigIntBE(buf: Buffer): bigint {
|
|
|
33
33
|
* @returns A little-endian buffer representation of num.
|
|
34
34
|
*/
|
|
35
35
|
export function toBufferLE(num: bigint, width: number): Buffer {
|
|
36
|
-
if (num < BigInt(0))
|
|
36
|
+
if (num < BigInt(0)) {
|
|
37
|
+
throw new Error(`Cannot convert negative bigint ${num.toString()} to buffer with toBufferLE.`);
|
|
38
|
+
}
|
|
37
39
|
const hex = num.toString(16);
|
|
38
40
|
const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');
|
|
39
41
|
buffer.reverse();
|
|
@@ -47,10 +49,14 @@ export function toBufferLE(num: bigint, width: number): Buffer {
|
|
|
47
49
|
* @returns A big-endian buffer representation of num.
|
|
48
50
|
*/
|
|
49
51
|
export function toBufferBE(num: bigint, width: number): Buffer {
|
|
50
|
-
if (num < BigInt(0))
|
|
52
|
+
if (num < BigInt(0)) {
|
|
53
|
+
throw new Error(`Cannot convert negative bigint ${num.toString()} to buffer with toBufferBE.`);
|
|
54
|
+
}
|
|
51
55
|
const hex = num.toString(16);
|
|
52
56
|
const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');
|
|
53
|
-
if (buffer.length > width)
|
|
57
|
+
if (buffer.length > width) {
|
|
58
|
+
throw new Error(`Number ${num.toString(16)} does not fit in ${width}`);
|
|
59
|
+
}
|
|
54
60
|
return buffer;
|
|
55
61
|
}
|
|
56
62
|
|
package/src/collection/array.ts
CHANGED
|
@@ -8,7 +8,9 @@ import { Tuple } from '../serialize/types.js';
|
|
|
8
8
|
* @returns A new padded array.
|
|
9
9
|
*/
|
|
10
10
|
export function padArrayEnd<T, N extends number>(arr: T[], elem: T, length: N): Tuple<T, N> {
|
|
11
|
-
if (arr.length > length)
|
|
11
|
+
if (arr.length > length) {
|
|
12
|
+
throw new Error(`Array size exceeds target length`);
|
|
13
|
+
}
|
|
12
14
|
// Since typescript cannot always deduce that something is a tuple, we cast
|
|
13
15
|
return [...arr, ...Array(length - arr.length).fill(elem)] as Tuple<T, N>;
|
|
14
16
|
}
|
|
@@ -21,7 +23,9 @@ export function padArrayEnd<T, N extends number>(arr: T[], elem: T, length: N):
|
|
|
21
23
|
* @returns A new padded array.
|
|
22
24
|
*/
|
|
23
25
|
export function padArrayStart<T, N extends number>(arr: T[], elem: T, length: N): Tuple<T, N> {
|
|
24
|
-
if (arr.length > length)
|
|
26
|
+
if (arr.length > length) {
|
|
27
|
+
throw new Error(`Array size exceeds target length`);
|
|
28
|
+
}
|
|
25
29
|
// Since typescript cannot always deduce that something is a tuple, we cast
|
|
26
30
|
return [...Array(length - arr.length).fill(elem), ...arr] as Tuple<T, N>;
|
|
27
31
|
}
|
|
@@ -33,7 +37,9 @@ export function padArrayStart<T, N extends number>(arr: T[], elem: T, length: N)
|
|
|
33
37
|
*/
|
|
34
38
|
export function isArrayEmpty<T>(arr: T[], isEmpty: (item: T) => boolean): boolean {
|
|
35
39
|
for (const item of arr) {
|
|
36
|
-
if (!isEmpty(item))
|
|
40
|
+
if (!isEmpty(item)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
37
43
|
}
|
|
38
44
|
return true;
|
|
39
45
|
}
|
package/src/crypto/index.ts
CHANGED
|
@@ -1,309 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { Field } from '@noble/curves/abstract/modular';
|
|
3
|
-
import { weierstrassPoints } from '@noble/curves/abstract/weierstrass';
|
|
4
|
-
|
|
5
|
-
import { toBigIntBE, toBufferBE } from '../../bigint-buffer/index.js';
|
|
6
|
-
|
|
7
|
-
const grumpkin = weierstrassPoints({
|
|
8
|
-
a: 0n,
|
|
9
|
-
b: 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593effffff0n,
|
|
10
|
-
Fp: Field(0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n),
|
|
11
|
-
n: 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47n,
|
|
12
|
-
h: 1n,
|
|
13
|
-
Gx: 1n,
|
|
14
|
-
Gy: 0x0000000000000002cf135e7506a45d632d270d45f1181294833fc48d823f272cn,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
const defaultGenerators = [
|
|
18
|
-
[
|
|
19
|
-
0x083e7911d835097629f0067531fc15cafd79a89beecb39903f69572c636f4a5an,
|
|
20
|
-
0x1a7f5efaad7f315c25a918f30cc8d7333fccab7ad7c90f14de81bcc528f9935dn,
|
|
21
|
-
],
|
|
22
|
-
[
|
|
23
|
-
0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402n,
|
|
24
|
-
0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126n,
|
|
25
|
-
],
|
|
26
|
-
[
|
|
27
|
-
0x1c44f2a5207c81c28a8321a5815ce8b1311024bbed131819bbdaf5a2ada84748n,
|
|
28
|
-
0x03aaee36e6422a1d0191632ac6599ae9eba5ac2c17a8c920aa3caf8b89c5f8a8n,
|
|
29
|
-
],
|
|
30
|
-
[
|
|
31
|
-
0x26d8b1160c6821a30c65f6cb47124afe01c29f4338f44d4a12c9fccf22fb6fb2n,
|
|
32
|
-
0x05c70c3b9c0d25a4c100e3a27bf3cc375f8af8cdd9498ec4089a823d7464caffn,
|
|
33
|
-
],
|
|
34
|
-
[
|
|
35
|
-
0x20ed9c6a1d27271c4498bfce0578d59db1adbeaa8734f7facc097b9b994fcf6en,
|
|
36
|
-
0x29cd7d370938b358c62c4a00f73a0d10aba7e5aaa04704a0713f891ebeb92371n,
|
|
37
|
-
],
|
|
38
|
-
[
|
|
39
|
-
0x0224a8abc6c8b8d50373d64cd2a1ab1567bf372b3b1f7b861d7f01257052d383n,
|
|
40
|
-
0x2358629b90eafb299d6650a311e79914b0215eb0a790810b26da5a826726d711n,
|
|
41
|
-
],
|
|
42
|
-
[
|
|
43
|
-
0x0f106f6d46bc904a5290542490b2f238775ff3c445b2f8f704c466655f460a2an,
|
|
44
|
-
0x29ab84d472f1d33f42fe09c47b8f7710f01920d6155250126731e486877bcf27n,
|
|
45
|
-
],
|
|
46
|
-
[
|
|
47
|
-
0x0298f2e42249f0519c8a8abd91567ebe016e480f219b8c19461d6a595cc33696n,
|
|
48
|
-
0x035bec4b8520a4ece27bd5aafabee3dfe1390d7439c419a8c55aceb207aac83bn,
|
|
49
|
-
],
|
|
50
|
-
[
|
|
51
|
-
0x2c9628479de4181ea77e7b0913ccf41d2a74155b1d9c82eaa220c218781f6f3bn,
|
|
52
|
-
0x278f86b8fd95520b5da23bee1a5e354dc5dcb0cb43d6b76e628ddbffb101d776n,
|
|
53
|
-
],
|
|
54
|
-
[
|
|
55
|
-
0x0be1916f382e3532aa53a766fe74b1a983784caab90290aea7bf616bc371fb41n,
|
|
56
|
-
0x0f65545005e896f14249956344faf9addd762b7573a487b58f805a361d920a20n,
|
|
57
|
-
],
|
|
58
|
-
[
|
|
59
|
-
0x29ff8437ae5bec89981441b23036a22b7fd5bee9eff0e83c0dd5b87bfb5bd60en,
|
|
60
|
-
0x1fd247352b77e2676b22db23cf7cd482474f543e3480b5a39c42f839a306be10n,
|
|
61
|
-
],
|
|
62
|
-
[
|
|
63
|
-
0x2f3bd4e98f8c8458cd58888749f0f5e582a43565767398e08e50e94b9b19a4d9n,
|
|
64
|
-
0x1f534906d1aa8b4ba74ad9e3f85ae3f8295e51eaafd15b5d116801b96360205bn,
|
|
65
|
-
],
|
|
66
|
-
[
|
|
67
|
-
0x27759098f425b76447c2c52728576803a1ac5de37bba875ac47cdcff539ab931n,
|
|
68
|
-
0x0aa47ee64d12d856cfb81b595c1d60ceecb693f0fdae644746ff333e39f61db7n,
|
|
69
|
-
],
|
|
70
|
-
[
|
|
71
|
-
0x015ca8d68616fde86c9108e3db04f588e0f308e60d367e963b7d460fe9a65e6cn,
|
|
72
|
-
0x2cf918009dda942ac9d59903cd2d0294d8738f938b1394170d892a027d0f347bn,
|
|
73
|
-
],
|
|
74
|
-
[
|
|
75
|
-
0x0d1783d5b256765515f3c9988df9f1ba7e6f5fb0248c8971fbc503ffd5187714n,
|
|
76
|
-
0x2ebb434ff4857fc3621f3bc3c6b8002b17d02d9c204e75f19b8f0b99ea68402cn,
|
|
77
|
-
],
|
|
78
|
-
[
|
|
79
|
-
0x300f20942e37abb19520f931f7bf7c6bbac93e4461a7789677f986e344d1f5e5n,
|
|
80
|
-
0x1172a6b674c66bb037109fbb4d93d4ca8054bb9dda08839a6189eb578511116dn,
|
|
81
|
-
],
|
|
82
|
-
[
|
|
83
|
-
0x13a6b381a663aa8a757dd386a3a8947d456874a356f52f8af1a3d84ba1067eaan,
|
|
84
|
-
0x224854000fa9c70e873fb14ad7c0d01dcf6df5f30261333d6b63c78a7da5a348n,
|
|
85
|
-
],
|
|
86
|
-
[
|
|
87
|
-
0x2b37dc5eb4c3f8cba62f0085ec131053eae6181a3e73a82e7d79764a023394ccn,
|
|
88
|
-
0x27c817c1376228a3a9f5ac6caed57857a3baa580a0c1b70a17f75a6ab7e2377cn,
|
|
89
|
-
],
|
|
90
|
-
[
|
|
91
|
-
0x26ae1cc453dab3f2cf4810cc3fb8f71257383333aa4f3ace8eb69c8ba4fa5da1n,
|
|
92
|
-
0x28bfbf80541bde37e9db113ae1eb049cf163ff4ea9654d61f42a95bc2e0b17bdn,
|
|
93
|
-
],
|
|
94
|
-
[
|
|
95
|
-
0x0e29626ab6be74417d08b28c8f8ebf02fd701e28d1d47b1961e716e735e02d12n,
|
|
96
|
-
0x119f55d6bffb6bba81779eaf98f310c5661d85397b094ffbddbb41fb264b0876n,
|
|
97
|
-
],
|
|
98
|
-
[
|
|
99
|
-
0x055cda53e781f3eedd760ba2c48c6d36d2a061544c3d33e76100bd4c65e89748n,
|
|
100
|
-
0x28391e899d6407e40294faa5e5561ab472e43ea5d54c15343b9a47cb7a80ed09n,
|
|
101
|
-
],
|
|
102
|
-
[
|
|
103
|
-
0x203c402369e8b2bc2c3827bc82a278d32c51dc9ab95e55ce1566e8b625b7bce7n,
|
|
104
|
-
0x2bf25525d4a62f1252355559dd496b68ba4d6ea65f4b669bb3da73c42455f0a3n,
|
|
105
|
-
],
|
|
106
|
-
[
|
|
107
|
-
0x2468739cedeabea49dbc46c2356bd5cf341aa4574272ba53a40d8049e5ee949fn,
|
|
108
|
-
0x0e8b73bcac6b2ccffaa2e50fce992db11a0b46dcdb8ad4b8325393f903a2543an,
|
|
109
|
-
],
|
|
110
|
-
[
|
|
111
|
-
0x242d8ad05dc6e2a8a6fd636f48eec881e05ee8d2a58e2653173f4954ec867654n,
|
|
112
|
-
0x0afe0d7aa588a3dcf791f11fcdf54c1d07cfc805c5ae0b02101faafab9cb55f0n,
|
|
113
|
-
],
|
|
114
|
-
[
|
|
115
|
-
0x05c378d0596af9f9a2471be52b7ad0112d48ef355c372088eb0db86e42887e14n,
|
|
116
|
-
0x1ba1f1adb66e67bc88c1b3eafe95b202812803a8b71ca62de9ed06c8b9f3cff3n,
|
|
117
|
-
],
|
|
118
|
-
[
|
|
119
|
-
0x04e5c213eebfffcdb42b6c371e52f0d598646cf0ca2a353b4b99889074c5a2bcn,
|
|
120
|
-
0x0ae6442bc73b0f2b2d45829fd8fa321ab6b5eecdd3988a39f0c5850544de5082n,
|
|
121
|
-
],
|
|
122
|
-
[
|
|
123
|
-
0x2c96765650bd7c3bee01114b9097b036e20d5c774afe2ba7d5d6099f498f47fdn,
|
|
124
|
-
0x0879c9cc5e7eea97f1f9193e1fd08b8d0390320197dee299af1eb67f92c506a3n,
|
|
125
|
-
],
|
|
126
|
-
[
|
|
127
|
-
0x2113980404df880af7d25a27aec16e61c770619912435b618914da7fa1a88385n,
|
|
128
|
-
0x106827183994d8da15037851748b05392620516277bf0000f8b38e97f5db602an,
|
|
129
|
-
],
|
|
130
|
-
[
|
|
131
|
-
0x13b4c5f15cc69af871b91e862db8b0044834c5e8da5a287d0794342bb97ffca6n,
|
|
132
|
-
0x17941f13343835b572e18d37ab3897f80e0461f9b72ab61da61927fc980a6bd2n,
|
|
133
|
-
],
|
|
134
|
-
[
|
|
135
|
-
0x085c0f69b19e05986883dcc9d53334bb6799968688935d938cebd4b4455f9187n,
|
|
136
|
-
0x242b8a5ab074d09e26427b1b6633a79a82ba41d64c4d658017f3186d6926721bn,
|
|
137
|
-
],
|
|
138
|
-
[
|
|
139
|
-
0x1bb111daaf71e632a4c9244a362bdde16a5efc5e7c7dda42b20f3290c2776d2cn,
|
|
140
|
-
0x2b4506bf741b2dc59f71f7036716cac04b6f808b4ca1469eb2fd7bccff5882c0n,
|
|
141
|
-
],
|
|
142
|
-
[
|
|
143
|
-
0x1a76ba8ca6b8e2c65915521b175da98137dfcaf0b5faff1019f37afce77c99ean,
|
|
144
|
-
0x1894c8c79e69e52a495bf6fe467aa4f5bdbe606490d6803df325a075c5b0079an,
|
|
145
|
-
],
|
|
146
|
-
[
|
|
147
|
-
0x2fea40a9bfb252ba7e192be641a4051381982719b77d567caee2657f36b701abn,
|
|
148
|
-
0x1e80d5ea79b50a722e65ce274b8ba2a133de94b757ef71b452183ee958c620e1n,
|
|
149
|
-
],
|
|
150
|
-
[
|
|
151
|
-
0x217c100e6cd64b68e91fe26e90eda02eaa505859201253bd5e550e0bb8f0f29an,
|
|
152
|
-
0x12a5c4fc942353f962bc5b97f36b9a326d5dbb6c505266d2a016415d8da0be65n,
|
|
153
|
-
],
|
|
154
|
-
[
|
|
155
|
-
0x2f50fc293e4529108595329b6e7b0110c0db563927bd57a169e81884535660f9n,
|
|
156
|
-
0x03547f619f9c30a761963381fe31f031ecd5b393d2281455a66e01aff0896338n,
|
|
157
|
-
],
|
|
158
|
-
[
|
|
159
|
-
0x06e0f1aab04c530ed9e9584b7c06cb40d6dbd1752313b1bf8498accb8227e743n,
|
|
160
|
-
0x2b47e83f03e635a9c20eb0d6412955dec1578a197c7d51f648550623ac5b3baen,
|
|
161
|
-
],
|
|
162
|
-
[
|
|
163
|
-
0x1dee7c6f5d7527d26da506eec28cc3b71acf9a8e694567749dc5e6b073748632n,
|
|
164
|
-
0x235955a911e3744859c1db3996aa1f0f64424f67c2ef1c8fcc8c767af5749068n,
|
|
165
|
-
],
|
|
166
|
-
[
|
|
167
|
-
0x1e5aa70095a858d1c4153691e91c19f01a883f422efc19ec766c86bc416ceb2an,
|
|
168
|
-
0x0f1e06c820067d8d0af14cf87633c1bd761d65bc5b3889a17bae7d70d2b19f5dn,
|
|
169
|
-
],
|
|
170
|
-
[
|
|
171
|
-
0x2f4d8f60344443350f226f19c4b01e2198f6b475b0291dd2e0c3981e3797a5e0n,
|
|
172
|
-
0x1aaab92caf692c5fb89e6eab983f26ebe009463c1ddece0a650508994cb84a82n,
|
|
173
|
-
],
|
|
174
|
-
[
|
|
175
|
-
0x06e0aba4044a552343f7ba02f234dafe4ccca7fd552342a8493ce544758df012n,
|
|
176
|
-
0x243269273e7c7ee7a50288f282cb6a7169ec2aac03d2ff7b40463638ad5722d5n,
|
|
177
|
-
],
|
|
178
|
-
[
|
|
179
|
-
0x1aecf2ef53262227e12a9ca29ae7f14be031c03488a7604a03cdc77115f26136n,
|
|
180
|
-
0x0753180b7d445c215d55dbfd6ebfb1c6aabd690ac92fd76cea5144ef3c9a8b3fn,
|
|
181
|
-
],
|
|
182
|
-
[
|
|
183
|
-
0x207d50d783c727a979303bc8f50538ad75e5f856180d4f3dc2c7ee186916cef8n,
|
|
184
|
-
0x20155253cd087a980aad326564240cca45a72c888e69395e4d8f5ca3d2b96e0an,
|
|
185
|
-
],
|
|
186
|
-
[
|
|
187
|
-
0x21db09b3c2c299f1b0be7a8f3031fd283cd5f1efca0a468b7ea9a0f170e81fc7n,
|
|
188
|
-
0x21b50f8107353afc7a1656040c9888ee393608420d88c2a07f34293fb609a26dn,
|
|
189
|
-
],
|
|
190
|
-
[
|
|
191
|
-
0x02190016f4cc44935d100bc7b7dae46cea5922261e9889112cc815fafd5c45ccn,
|
|
192
|
-
0x01dfaacfa00ddb9133042d9833d1201172f69a456f0c9483d0b58e5f01b571fdn,
|
|
193
|
-
],
|
|
194
|
-
[
|
|
195
|
-
0x04e67573df0c1591ec51d2f60b74f1964abeef3e201084425a55cd71ffe0b4f8n,
|
|
196
|
-
0x1f0285b2ede69aff961919827312afad0753c112cab001cb28ff6c2c27f277c6n,
|
|
197
|
-
],
|
|
198
|
-
[
|
|
199
|
-
0x092450548d189dfe4e852370c17343aeef92ac3a8fbdeb8fdd244f87d3af03cdn,
|
|
200
|
-
0x23e3c53d9265d6debfdb40988a908e64673b2f87b1fe2a08b56c6a3fcf84f5d1n,
|
|
201
|
-
],
|
|
202
|
-
[
|
|
203
|
-
0x2935be388ee1365bf6a9cc6fd25d130607835dbf7926c5cafed690b9072cd316n,
|
|
204
|
-
0x059edfbc50a9699e29b975a2fc3bfe7855997e708ce82fa30ed19cc91850f6ccn,
|
|
205
|
-
],
|
|
206
|
-
[
|
|
207
|
-
0x21cc891713fb8570152149a9fbb23410d7c42dece266bc6093650e46111a465cn,
|
|
208
|
-
0x248f486105ee09f447e7e0ff522b5ff1db5f64522f2bbbb28e7a07595cff3e79n,
|
|
209
|
-
],
|
|
210
|
-
[
|
|
211
|
-
0x147f06fa12cbb8d1c98f9c06d57899e20d9651bb8da104ad5168c9be10d4419fn,
|
|
212
|
-
0x2766f677196fb611814f5d7af22aa8555c3c65b572151576b116df5b9f05857dn,
|
|
213
|
-
],
|
|
214
|
-
[
|
|
215
|
-
0x0143beefa7f0b8fb72262a3c3d1502a36d8b4cb35befbb37dba3a70ffe2571c7n,
|
|
216
|
-
0x1808ba6988bbb8585b77765760fb2afccdfe4946702043a46b8d461c7d211b11n,
|
|
217
|
-
],
|
|
218
|
-
[
|
|
219
|
-
0x1ac3c1edb1eddd9c5011f88769fac4050aa8820de1f84fcda7e400f87028ba3an,
|
|
220
|
-
0x050cbb4da87ecd3f0c84d6252e76e19b3678b955c603f35abdcee3b988a57fa4n,
|
|
221
|
-
],
|
|
222
|
-
[
|
|
223
|
-
0x05a7092c674d8f44add477edf7369dc7bcb9da4d1b903fd58dd8bd4d166de73en,
|
|
224
|
-
0x182545ce8ba6fa781823673d50fc62c7d1bb5f3515da6e5c2bdfd7248f311e1bn,
|
|
225
|
-
],
|
|
226
|
-
[
|
|
227
|
-
0x0154a12dbf3fd3ae8957fe154f378630c12306eb55425d9732e0ae2b56ca0306n,
|
|
228
|
-
0x140688ffb0de33c9625e323a13e9df6fb37c841b34c4b18b7e19d51792d393ccn,
|
|
229
|
-
],
|
|
230
|
-
[
|
|
231
|
-
0x2fcdf4e4b421286df484fdd08725ffe53728759508f74f0d87e65bd932af28d4n,
|
|
232
|
-
0x25f57213413f9f0982573c4a6640efe32b612c6c8f0b027425260c4629d38b21n,
|
|
233
|
-
],
|
|
234
|
-
[
|
|
235
|
-
0x203ed9a7ff1ef21910003e658dbff87a3e10da7782de00af71995c233587961dn,
|
|
236
|
-
0x0c7ae4445018e5d451f197d7881b1b95fb66574c26ff6967a37c1eab5f907a08n,
|
|
237
|
-
],
|
|
238
|
-
[
|
|
239
|
-
0x131abdc8d6c6319aeee7e8b186ace3c07d140eb4037b21285b2260cd7bf310f7n,
|
|
240
|
-
0x2371e4c2b73ce0af013b30ee9f434584742cdd7e91f1d842c1a6a95bd12d915dn,
|
|
241
|
-
],
|
|
242
|
-
[
|
|
243
|
-
0x124029864085263e79448fdeef91ee2ea5a4952637646b02f132c1ac917edbdan,
|
|
244
|
-
0x29d11c62ccfca5d8328e5171466137e6cfd19d56bdc3bbc4633a0aed34a90e69n,
|
|
245
|
-
],
|
|
246
|
-
[
|
|
247
|
-
0x1ded46fcf96cba70ac0cb4ca58348c90041b257232e476acd236b45271413fben,
|
|
248
|
-
0x26d04c6660ab9693743bf5c5fcf13047860dfeed3dd903e6ff6fe917fddf73fbn,
|
|
249
|
-
],
|
|
250
|
-
[
|
|
251
|
-
0x2b31b48b7313f6a5c3f1f59fe9ad3d4b8900d873056af1691d143208eb5c8790n,
|
|
252
|
-
0x27cec87606fe5f9562a3d0b1fef90da3e8d17721c668c342b681468a501deff3n,
|
|
253
|
-
],
|
|
254
|
-
[
|
|
255
|
-
0x22080b093f3b3c98f9afc52b80594dcf51a714e77c40c3a08513897d73a70806n,
|
|
256
|
-
0x1cbcacedf498eaebd03b602c4908c165c50ba184230c7c52244c9a5d0e9759ebn,
|
|
257
|
-
],
|
|
258
|
-
[
|
|
259
|
-
0x0560b3857af53bc7262482310593e316543551ee57417583161bfce9d12a4d40n,
|
|
260
|
-
0x2c91b186a9740d4b9f49c8889878381833cc5b5fe29e6e83affa2916e2008988n,
|
|
261
|
-
],
|
|
262
|
-
[
|
|
263
|
-
0x2cf006347b380b6e0eb766ebdd1d24dc1eed9a43c206ee58e9457303d509c308n,
|
|
264
|
-
0x03d11688f54726466399ddce8523148453cd1b6cad3cd414ee6e2af66a6b6addn,
|
|
265
|
-
],
|
|
266
|
-
[
|
|
267
|
-
0x2e5c7e4d9a6069892bac121490fee89df1c238c7738c9f3ab599d6b4cc2ff491n,
|
|
268
|
-
0x0f3c26f5de9ad898d4a4b1a08d1e87fd5cf4362f9796fb8715c60d431902cd54n,
|
|
269
|
-
],
|
|
270
|
-
[
|
|
271
|
-
0x15298a52895eb8c9399509dc1f0ef68a90afc29084d3a0cec6956c8420819b5cn,
|
|
272
|
-
0x2dc0ccd80f1bbbdf364f5b912a961332d9f5db54763745b64e0d85e33faf87c7n,
|
|
273
|
-
],
|
|
274
|
-
].map(([x, y]) => new grumpkin.ProjectivePoint(x, y, 1n));
|
|
275
|
-
|
|
276
|
-
const lengthGenerator = new grumpkin.ProjectivePoint(
|
|
277
|
-
0x2df8b940e5890e4e1377e05373fae69a1d754f6935e6a780b666947431f2cdcdn,
|
|
278
|
-
0x2ecd88d15967bc53b885912e0d16866154acb6aac2d3f85e27ca7eefb2c19083n,
|
|
279
|
-
1n,
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
const pointAtInfinity = lengthGenerator.subtract(lengthGenerator);
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Create a pedersen commitment (point) from an array of input fields.
|
|
286
|
-
*/
|
|
287
|
-
function pedersenCommitInternal(input: Buffer[], generatorOffset = 0) {
|
|
288
|
-
if (generatorOffset + input.length > defaultGenerators.length) {
|
|
289
|
-
throw new Error('Pedersen commit overflowed default generators.');
|
|
290
|
-
}
|
|
291
|
-
const generators = defaultGenerators.slice(generatorOffset, generatorOffset + input.length);
|
|
292
|
-
return generators.reduce((a, g, i) => a.add(g.multiply(toBigIntBE(input[i]))), pointAtInfinity);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Create a pedersen commitment (point) from an array of input fields.
|
|
297
|
-
*/
|
|
298
|
-
export function pedersenCommit(input: Buffer[], generatorOffset = 0) {
|
|
299
|
-
const result = pedersenCommitInternal(input, generatorOffset);
|
|
300
|
-
return [toBufferBE(result.x, 32), toBufferBE(result.y, 32)];
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Create a pedersen hash (field) from an array of input fields.
|
|
305
|
-
*/
|
|
306
|
-
export function pedersenHashWithHashIndex(input: Buffer[], index = 0) {
|
|
307
|
-
const result = lengthGenerator.multiply(BigInt(input.length));
|
|
308
|
-
return toBufferBE(result.add(pedersenCommitInternal(input, index)).x, 32);
|
|
309
|
-
}
|
|
1
|
+
export * from './pedersen.wasm.js';
|