@aztec/bb.js 3.0.0-nightly.20251115 → 3.0.0-nightly.20251119
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/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/barretenberg/backend.d.ts +9 -23
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +24 -84
- package/dest/browser/barretenberg/index.d.ts +1 -3
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +15 -24
- package/dest/browser/{bigint-array/index.d.ts → barretenberg/testing/bigint-buffer.d.ts} +1 -1
- package/dest/browser/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/browser/barretenberg/testing/bigint-buffer.js +37 -0
- package/dest/browser/barretenberg/testing/fields.d.ts +16 -0
- package/dest/browser/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/browser/barretenberg/testing/fields.js +48 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/bb_backends/browser/platform.d.ts +4 -0
- package/dest/browser/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/browser/bb_backends/browser/platform.js +10 -0
- package/dest/browser/bb_backends/index.d.ts +8 -5
- package/dest/browser/bb_backends/index.d.ts.map +1 -1
- package/dest/browser/bb_backends/index.js +5 -5
- package/dest/browser/index.d.ts +1 -0
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +2 -1
- package/dest/node/barretenberg/backend.d.ts +9 -23
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +24 -84
- package/dest/node/barretenberg/blake2s.test.js +2 -2
- package/dest/node/barretenberg/index.d.ts +1 -3
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +15 -24
- package/dest/node/barretenberg/pedersen.test.js +2 -2
- package/dest/node/barretenberg/poseidon.bench.test.js +27 -68
- package/dest/node/barretenberg/poseidon.test.js +2 -2
- package/dest/node/{bigint-array/index.d.ts → barretenberg/testing/bigint-buffer.d.ts} +1 -1
- package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
- package/dest/node/barretenberg/testing/fields.d.ts +16 -0
- package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/node/barretenberg/testing/fields.js +48 -0
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/bb_backends/browser/platform.d.ts +4 -0
- package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/node/bb_backends/browser/platform.js +10 -0
- package/dest/node/bb_backends/index.d.ts +8 -5
- package/dest/node/bb_backends/index.d.ts.map +1 -1
- package/dest/node/bb_backends/index.js +5 -5
- package/dest/node/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.js +12 -4
- package/dest/node/bb_backends/node/native_shm.d.ts +2 -1
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm.js +50 -15
- package/dest/node/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_socket.js +28 -19
- package/dest/node/index.d.ts +1 -0
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -1
- package/dest/node-cjs/barretenberg/backend.d.ts +9 -23
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +30 -90
- package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
- package/dest/node-cjs/barretenberg/index.d.ts +1 -3
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +15 -24
- package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
- package/dest/node-cjs/barretenberg/poseidon.bench.test.js +36 -77
- package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
- package/dest/node-cjs/{bigint-array/index.d.ts → barretenberg/testing/bigint-buffer.d.ts} +1 -1
- package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
- package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
- package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/testing/fields.js +52 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
- package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
- package/dest/node-cjs/bb_backends/index.d.ts +8 -5
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/index.js +5 -5
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.js +12 -4
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +2 -1
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.js +50 -15
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.js +28 -19
- package/dest/node-cjs/index.d.ts +1 -0
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +4 -2
- package/package.json +1 -1
- package/src/barretenberg/backend.ts +19 -97
- package/src/barretenberg/blake2s.test.ts +1 -1
- package/src/barretenberg/index.ts +14 -24
- package/src/barretenberg/pedersen.test.ts +1 -1
- package/src/barretenberg/poseidon.bench.test.ts +109 -156
- package/src/barretenberg/poseidon.test.ts +1 -1
- package/src/{types → barretenberg/testing}/fields.ts +12 -26
- package/src/bb_backends/browser/platform.ts +11 -0
- package/src/bb_backends/index.ts +8 -5
- package/src/bb_backends/node/index.ts +23 -3
- package/src/bb_backends/node/native_shm.ts +51 -14
- package/src/bb_backends/node/native_socket.ts +31 -17
- package/src/index.ts +2 -0
- package/dest/browser/bigint-array/index.d.ts.map +0 -1
- package/dest/browser/bigint-array/index.js +0 -37
- package/dest/browser/serialize/index.d.ts +0 -2
- package/dest/browser/serialize/index.d.ts.map +0 -1
- package/dest/browser/serialize/index.js +0 -2
- package/dest/browser/serialize/serialize.d.ts +0 -18
- package/dest/browser/serialize/serialize.d.ts.map +0 -1
- package/dest/browser/serialize/serialize.js +0 -72
- package/dest/browser/types/fields.d.ts +0 -23
- package/dest/browser/types/fields.d.ts.map +0 -1
- package/dest/browser/types/fields.js +0 -61
- package/dest/browser/types/index.d.ts +0 -3
- package/dest/browser/types/index.d.ts.map +0 -1
- package/dest/browser/types/index.js +0 -3
- package/dest/browser/types/point.d.ts +0 -18
- package/dest/browser/types/point.d.ts.map +0 -1
- package/dest/browser/types/point.js +0 -28
- package/dest/node/bigint-array/index.d.ts.map +0 -1
- package/dest/node/bigint-array/index.js +0 -37
- package/dest/node/serialize/index.d.ts +0 -2
- package/dest/node/serialize/index.d.ts.map +0 -1
- package/dest/node/serialize/index.js +0 -2
- package/dest/node/serialize/serialize.d.ts +0 -18
- package/dest/node/serialize/serialize.d.ts.map +0 -1
- package/dest/node/serialize/serialize.js +0 -72
- package/dest/node/types/fields.d.ts +0 -23
- package/dest/node/types/fields.d.ts.map +0 -1
- package/dest/node/types/fields.js +0 -61
- package/dest/node/types/index.d.ts +0 -3
- package/dest/node/types/index.d.ts.map +0 -1
- package/dest/node/types/index.js +0 -3
- package/dest/node/types/point.d.ts +0 -18
- package/dest/node/types/point.d.ts.map +0 -1
- package/dest/node/types/point.js +0 -28
- package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
- package/dest/node-cjs/bigint-array/index.js +0 -43
- package/dest/node-cjs/serialize/index.d.ts +0 -2
- package/dest/node-cjs/serialize/index.d.ts.map +0 -1
- package/dest/node-cjs/serialize/index.js +0 -5
- package/dest/node-cjs/serialize/serialize.d.ts +0 -18
- package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
- package/dest/node-cjs/serialize/serialize.js +0 -82
- package/dest/node-cjs/types/fields.d.ts +0 -23
- package/dest/node-cjs/types/fields.d.ts.map +0 -1
- package/dest/node-cjs/types/fields.js +0 -65
- package/dest/node-cjs/types/index.d.ts +0 -3
- package/dest/node-cjs/types/index.d.ts.map +0 -1
- package/dest/node-cjs/types/index.js +0 -6
- package/dest/node-cjs/types/point.d.ts +0 -18
- package/dest/node-cjs/types/point.d.ts.map +0 -1
- package/dest/node-cjs/types/point.js +0 -32
- package/src/serialize/index.ts +0 -1
- package/src/serialize/serialize.ts +0 -75
- package/src/types/index.ts +0 -2
- package/src/types/point.ts +0 -32
- /package/src/{bigint-array/index.ts → barretenberg/testing/bigint-buffer.ts} +0 -0
|
@@ -5,6 +5,7 @@ import * as os from 'os';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { IMsgpackBackendAsync } from '../interface.js';
|
|
7
7
|
import { findPackageRoot } from './platform.js';
|
|
8
|
+
import readline from 'readline';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Asynchronous native backend that communicates with bb binary via Unix Domain Socket.
|
|
@@ -40,7 +41,7 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
40
41
|
private responseBuffer: Buffer | null = null;
|
|
41
42
|
private responseBytesRead: number = 0;
|
|
42
43
|
|
|
43
|
-
constructor(bbBinaryPath: string, threads?: number) {
|
|
44
|
+
constructor(bbBinaryPath: string, threads?: number, logger?: (msg: string) => void) {
|
|
44
45
|
// Create a unique socket path in temp directory
|
|
45
46
|
this.socketPath = path.join(os.tmpdir(), `bb-${process.pid}-${Date.now()}.sock`);
|
|
46
47
|
|
|
@@ -57,18 +58,28 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
57
58
|
connectionReject = reject;
|
|
58
59
|
});
|
|
59
60
|
|
|
60
|
-
//
|
|
61
|
-
const
|
|
61
|
+
// If threads not set use num cpu cores, max 32.
|
|
62
|
+
const hwc = threads ? threads.toString() : Math.min(32, os.cpus.length).toString();
|
|
63
|
+
const env = { ...process.env, HARDWARE_CONCURRENCY: '1' };
|
|
62
64
|
|
|
63
65
|
// Spawn bb process - it will create the socket server
|
|
64
|
-
const args = [
|
|
65
|
-
this.process = spawn(
|
|
66
|
-
stdio: ['ignore', 'ignore', 'ignore'],
|
|
66
|
+
const args = ['msgpack', 'run', '--input', this.socketPath];
|
|
67
|
+
this.process = spawn(bbBinaryPath, args, {
|
|
68
|
+
stdio: ['ignore', logger ? 'pipe' : 'ignore', logger ? 'pipe' : 'ignore'],
|
|
67
69
|
env,
|
|
68
70
|
});
|
|
69
|
-
|
|
71
|
+
|
|
72
|
+
// Disconnect from event loop so process can exit without waiting for bb
|
|
73
|
+
// The bb process has parent death monitoring (prctl on Linux, kqueue on macOS)
|
|
74
|
+
// so it will automatically exit when Node.js exits
|
|
70
75
|
this.process.unref();
|
|
71
76
|
|
|
77
|
+
if (logger) {
|
|
78
|
+
logger("Logger attached to bb process. DON'T FORGET TO DESTROY THE BACKEND to allow Node.js to exit.");
|
|
79
|
+
readline.createInterface({ input: this.process.stdout! }).on('line', logger);
|
|
80
|
+
readline.createInterface({ input: this.process.stderr! }).on('line', logger);
|
|
81
|
+
}
|
|
82
|
+
|
|
72
83
|
this.process.on('error', err => {
|
|
73
84
|
if (connectionReject) {
|
|
74
85
|
connectionReject(new Error(`Native backend process error: ${err.message}`));
|
|
@@ -157,7 +168,7 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
157
168
|
|
|
158
169
|
// Set up event handlers
|
|
159
170
|
this.socket.once('connect', () => {
|
|
160
|
-
|
|
171
|
+
// Socket starts referenced - will be unreferenced when no callbacks pending
|
|
161
172
|
|
|
162
173
|
// Clear connection timeout on successful connection
|
|
163
174
|
if (this.connectionTimeout) {
|
|
@@ -232,6 +243,11 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
232
243
|
console.warn('Received response but no pending callback');
|
|
233
244
|
}
|
|
234
245
|
|
|
246
|
+
// If no more pending callbacks, unref socket to allow process to exit
|
|
247
|
+
if (this.pendingCallbacks.length === 0 && this.socket) {
|
|
248
|
+
this.socket.unref();
|
|
249
|
+
}
|
|
250
|
+
|
|
235
251
|
// Reset state for next message
|
|
236
252
|
this.readingLength = true;
|
|
237
253
|
this.lengthBytesRead = 0;
|
|
@@ -252,6 +268,11 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
252
268
|
}
|
|
253
269
|
|
|
254
270
|
return new Promise((resolve, reject) => {
|
|
271
|
+
// If this is the first pending callback, ref the socket to keep event loop alive
|
|
272
|
+
if (this.pendingCallbacks.length === 0) {
|
|
273
|
+
this.socket!.ref();
|
|
274
|
+
}
|
|
275
|
+
|
|
255
276
|
// Enqueue this promise's callbacks (FIFO order)
|
|
256
277
|
this.pendingCallbacks.push({ resolve, reject });
|
|
257
278
|
|
|
@@ -298,15 +319,8 @@ export class BarretenbergNativeSocketAsyncBackend implements IMsgpackBackendAsyn
|
|
|
298
319
|
}
|
|
299
320
|
|
|
300
321
|
async destroy(): Promise<void> {
|
|
301
|
-
// Cleanup first (closes socket, unrefs everything)
|
|
302
322
|
this.cleanup();
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
// Process is unref'd so won't block event loop - just kill and return
|
|
306
|
-
try {
|
|
307
|
-
this.process.kill('SIGTERM');
|
|
308
|
-
} catch (e) {
|
|
309
|
-
// Already dead
|
|
310
|
-
}
|
|
323
|
+
this.process.kill('SIGTERM');
|
|
324
|
+
this.process.removeAllListeners();
|
|
311
325
|
}
|
|
312
326
|
}
|
package/src/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bigint-array/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,MAAM,CAYvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,UAAU,CAE/E"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert a 32-byte BE Buffer to a BigInt.
|
|
3
|
-
*/
|
|
4
|
-
export function buffer32BytesToBigIntBE(buf) {
|
|
5
|
-
return ((buf.readBigUInt64BE(0) << 192n) +
|
|
6
|
-
(buf.readBigUInt64BE(8) << 128n) +
|
|
7
|
-
(buf.readBigUInt64BE(16) << 64n) +
|
|
8
|
-
buf.readBigUInt64BE(24));
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Convert a BE Uint8Array to a BigInt.
|
|
12
|
-
*/
|
|
13
|
-
export function uint8ArrayToBigIntBE(bytes) {
|
|
14
|
-
const buffer = Buffer.from(bytes);
|
|
15
|
-
return buffer32BytesToBigIntBE(buffer);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Convert a BigInt to a 32-byte BE Buffer.
|
|
19
|
-
*/
|
|
20
|
-
export function bigIntToBufferBE(value, byteLength = 32) {
|
|
21
|
-
if (byteLength != 32) {
|
|
22
|
-
throw new Error(`Only 32 bytes supported for conversion from bigint to buffer, attempted byte length: ${byteLength}`);
|
|
23
|
-
}
|
|
24
|
-
const buf = Buffer.alloc(byteLength);
|
|
25
|
-
buf.writeBigUInt64BE(value >> 192n, 0);
|
|
26
|
-
buf.writeBigUInt64BE((value >> 128n) & 0xffffffffffffffffn, 8);
|
|
27
|
-
buf.writeBigUInt64BE((value >> 64n) & 0xffffffffffffffffn, 16);
|
|
28
|
-
buf.writeBigUInt64BE(value & 0xffffffffffffffffn, 24);
|
|
29
|
-
return buf;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Convert a BigInt to a 32-byte BE Uint8Array.
|
|
33
|
-
*/
|
|
34
|
-
export function bigIntToUint8ArrayBE(value, byteLength = 32) {
|
|
35
|
-
return new Uint8Array(bigIntToBufferBE(value, byteLength));
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmlnaW50LWFycmF5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQVc7SUFDakQsT0FBTyxDQUNMLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDaEMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNoQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBaUI7SUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsVUFBVSxHQUFHLEVBQUU7SUFDN0QsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FDYix3RkFBd0YsVUFBVSxFQUFFLENBQ3JHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYSxFQUFFLFVBQVUsR0FBRyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialize/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare function boolToBuffer(b: boolean): Uint8Array<ArrayBuffer>;
|
|
2
|
-
export declare function numToUInt32BE(n: number, bufferSize?: number): Uint8Array<ArrayBuffer>;
|
|
3
|
-
export declare function numToInt32BE(n: number, bufferSize?: number): Uint8Array<ArrayBuffer>;
|
|
4
|
-
export declare function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
5
|
-
export declare function serializeBufferToVector(buf: Uint8Array): Uint8Array<ArrayBuffer>;
|
|
6
|
-
export declare function serializeBigInt(n: bigint, width?: number): Uint8Array<ArrayBuffer>;
|
|
7
|
-
export declare function serializeBufferArrayToVector(arr: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
8
|
-
/** A type that can be written to a buffer. */
|
|
9
|
-
export type Bufferable = boolean | Uint8Array | number | string | {
|
|
10
|
-
toBuffer: () => Uint8Array;
|
|
11
|
-
} | Bufferable[];
|
|
12
|
-
/**
|
|
13
|
-
* Serializes a list of objects contiguously for calling into wasm.
|
|
14
|
-
* @param objs - Objects to serialize.
|
|
15
|
-
* @returns A buffer list with the concatenation of all fields.
|
|
16
|
-
*/
|
|
17
|
-
export declare function serializeBufferable(obj: Bufferable): Uint8Array;
|
|
18
|
-
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/serialize/serialize.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,2BAItC;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAI,2BAItD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAI,2BAIrD;AAED,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,EAAE,2BAStE;AAGD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,2BAEtD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,2BAMpD;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,UAAU,EAAE,2BAE7D;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;CAAE,GAAG,UAAU,EAAE,CAAC;AAEhH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAgB/D"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// For serializing bool.
|
|
2
|
-
export function boolToBuffer(b) {
|
|
3
|
-
const buf = new Uint8Array(1);
|
|
4
|
-
buf[0] = b ? 1 : 0;
|
|
5
|
-
return buf;
|
|
6
|
-
}
|
|
7
|
-
// For serializing numbers to 32 bit big-endian form.
|
|
8
|
-
export function numToUInt32BE(n, bufferSize = 4) {
|
|
9
|
-
const buf = new Uint8Array(bufferSize);
|
|
10
|
-
new DataView(buf.buffer).setUint32(buf.byteLength - 4, n, false);
|
|
11
|
-
return buf;
|
|
12
|
-
}
|
|
13
|
-
// For serializing signed numbers to 32 bit big-endian form.
|
|
14
|
-
export function numToInt32BE(n, bufferSize = 4) {
|
|
15
|
-
const buf = new Uint8Array(bufferSize);
|
|
16
|
-
new DataView(buf.buffer).setInt32(buf.byteLength - 4, n, false);
|
|
17
|
-
return buf;
|
|
18
|
-
}
|
|
19
|
-
export function concatenateUint8Arrays(arrayOfUint8Arrays) {
|
|
20
|
-
const totalLength = arrayOfUint8Arrays.reduce((prev, curr) => prev + curr.length, 0);
|
|
21
|
-
const result = new Uint8Array(totalLength);
|
|
22
|
-
let length = 0;
|
|
23
|
-
for (const array of arrayOfUint8Arrays) {
|
|
24
|
-
result.set(array, length);
|
|
25
|
-
length += array.length;
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
// For serializing a buffer as a vector.
|
|
30
|
-
export function serializeBufferToVector(buf) {
|
|
31
|
-
return concatenateUint8Arrays([numToInt32BE(buf.length), buf]);
|
|
32
|
-
}
|
|
33
|
-
export function serializeBigInt(n, width = 32) {
|
|
34
|
-
const buf = new Uint8Array(width);
|
|
35
|
-
for (let i = 0; i < width; i++) {
|
|
36
|
-
buf[width - i - 1] = Number((n >> BigInt(i * 8)) & 0xffn);
|
|
37
|
-
}
|
|
38
|
-
return buf;
|
|
39
|
-
}
|
|
40
|
-
// For serializing an array of fixed length elements.
|
|
41
|
-
export function serializeBufferArrayToVector(arr) {
|
|
42
|
-
return concatenateUint8Arrays([numToUInt32BE(arr.length), ...arr.flat()]);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Serializes a list of objects contiguously for calling into wasm.
|
|
46
|
-
* @param objs - Objects to serialize.
|
|
47
|
-
* @returns A buffer list with the concatenation of all fields.
|
|
48
|
-
*/
|
|
49
|
-
export function serializeBufferable(obj) {
|
|
50
|
-
if (Array.isArray(obj)) {
|
|
51
|
-
return serializeBufferArrayToVector(obj.map(serializeBufferable));
|
|
52
|
-
}
|
|
53
|
-
else if (obj instanceof Uint8Array) {
|
|
54
|
-
return serializeBufferToVector(obj);
|
|
55
|
-
}
|
|
56
|
-
else if (typeof obj === 'boolean') {
|
|
57
|
-
return boolToBuffer(obj);
|
|
58
|
-
}
|
|
59
|
-
else if (typeof obj === 'number') {
|
|
60
|
-
return numToUInt32BE(obj);
|
|
61
|
-
}
|
|
62
|
-
else if (typeof obj === 'bigint') {
|
|
63
|
-
return serializeBigInt(obj);
|
|
64
|
-
}
|
|
65
|
-
else if (typeof obj === 'string') {
|
|
66
|
-
return serializeBufferToVector(new TextEncoder().encode(obj));
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
return obj.toBuffer();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZS9zZXJpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVTtJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFTLEVBQUUsVUFBVSxHQUFHLENBQUM7SUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDO0lBQ3BELE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxrQkFBZ0M7SUFDckUsTUFBTSxXQUFXLEdBQUcsa0JB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
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal Fr field class for tests.
|
|
3
|
-
* @dev This minimal implementation is provided for testing barretenberg directly.
|
|
4
|
-
* Projects using bb.js should create their own field abstraction using the curve constants
|
|
5
|
-
* exported from the barretenberg binary (see CurveConstants generation).
|
|
6
|
-
*/
|
|
7
|
-
export declare class Fr {
|
|
8
|
-
static ZERO: Fr;
|
|
9
|
-
static MODULUS: bigint;
|
|
10
|
-
static MAX_VALUE: bigint;
|
|
11
|
-
static SIZE_IN_BYTES: number;
|
|
12
|
-
value: Uint8Array;
|
|
13
|
-
constructor(value: Uint8Array | Buffer | bigint);
|
|
14
|
-
static random(): Fr;
|
|
15
|
-
static fromBuffer(buffer: Uint8Array | Buffer): Fr;
|
|
16
|
-
static fromBufferReduce(buffer: Uint8Array | Buffer): Fr;
|
|
17
|
-
static fromString(str: string): Fr;
|
|
18
|
-
toBuffer(): Uint8Array<ArrayBufferLike>;
|
|
19
|
-
toString(): string;
|
|
20
|
-
equals(rhs: Fr): boolean;
|
|
21
|
-
isZero(): boolean;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/types/fields.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,qBAAa,EAAE;IACb,MAAM,CAAC,IAAI,KAAc;IACzB,MAAM,CAAC,OAAO,SAAuE;IACrF,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,aAAa,SAAM;IAC1B,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM;IAiB/C,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAO7C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAOnD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,EAAE;IAId,MAAM;CAGP"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
var _a;
|
|
2
|
-
import { randomBytes } from '../random/index.js';
|
|
3
|
-
import { buffer32BytesToBigIntBE, uint8ArrayToBigIntBE, bigIntToUint8ArrayBE, } from '../bigint-array/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Internal Fr field class for tests.
|
|
6
|
-
* @dev This minimal implementation is provided for testing barretenberg directly.
|
|
7
|
-
* Projects using bb.js should create their own field abstraction using the curve constants
|
|
8
|
-
* exported from the barretenberg binary (see CurveConstants generation).
|
|
9
|
-
*/
|
|
10
|
-
export class Fr {
|
|
11
|
-
constructor(value) {
|
|
12
|
-
// We convert buffer value to bigint to be able to check it fits within modulus
|
|
13
|
-
const valueBigInt = typeof value === 'bigint'
|
|
14
|
-
? value
|
|
15
|
-
: value instanceof Buffer
|
|
16
|
-
? buffer32BytesToBigIntBE(value)
|
|
17
|
-
: uint8ArrayToBigIntBE(value);
|
|
18
|
-
if (valueBigInt > _a.MAX_VALUE) {
|
|
19
|
-
throw new Error(`Value 0x${valueBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
20
|
-
}
|
|
21
|
-
this.value =
|
|
22
|
-
typeof value === 'bigint' ? bigIntToUint8ArrayBE(value) : value instanceof Buffer ? new Uint8Array(value) : value;
|
|
23
|
-
}
|
|
24
|
-
static random() {
|
|
25
|
-
const r = uint8ArrayToBigIntBE(randomBytes(64)) % _a.MODULUS;
|
|
26
|
-
return new this(r);
|
|
27
|
-
}
|
|
28
|
-
static fromBuffer(buffer) {
|
|
29
|
-
if (buffer.length !== this.SIZE_IN_BYTES) {
|
|
30
|
-
throw new Error(`Expected ${this.SIZE_IN_BYTES} bytes, got ${buffer.length}`);
|
|
31
|
-
}
|
|
32
|
-
return new this(buffer);
|
|
33
|
-
}
|
|
34
|
-
static fromBufferReduce(buffer) {
|
|
35
|
-
if (buffer.length !== this.SIZE_IN_BYTES) {
|
|
36
|
-
throw new Error(`Expected ${this.SIZE_IN_BYTES} bytes, got ${buffer.length}`);
|
|
37
|
-
}
|
|
38
|
-
return new this(uint8ArrayToBigIntBE(buffer instanceof Buffer ? new Uint8Array(buffer) : buffer) % _a.MODULUS);
|
|
39
|
-
}
|
|
40
|
-
static fromString(str) {
|
|
41
|
-
return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
|
|
42
|
-
}
|
|
43
|
-
toBuffer() {
|
|
44
|
-
return this.value;
|
|
45
|
-
}
|
|
46
|
-
toString() {
|
|
47
|
-
return '0x' + this.toBuffer().reduce((accumulator, byte) => accumulator + byte.toString(16).padStart(2, '0'), '');
|
|
48
|
-
}
|
|
49
|
-
equals(rhs) {
|
|
50
|
-
return this.value.every((v, i) => v === rhs.value[i]);
|
|
51
|
-
}
|
|
52
|
-
isZero() {
|
|
53
|
-
return this.value.every(v => v === 0);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
_a = Fr;
|
|
57
|
-
Fr.ZERO = new _a(0n);
|
|
58
|
-
Fr.MODULUS = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;
|
|
59
|
-
Fr.MAX_VALUE = _a.MODULUS - 1n;
|
|
60
|
-
Fr.SIZE_IN_BYTES = 32;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLEVBQUU7SUFPYixZQUFZLEtBQW1DO1FBQzdDLCtFQUErRTtRQUMvRSxNQUFNLFdBQVcsR0FDZixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNO2dCQUN2QixDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSztZQUNSLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDdEgsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsTUFBTSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUM3RCxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQTJCO1FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxhQUFhLGVBQWUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUEyQjtRQUNqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsYUFBYSxlQUFlLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLENBQUM7UUFDRCxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OztBQTVETSxPQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEFBQWIsQ0FBYztBQUNsQixVQUFPLEdBQUcsbUVBQW1FLEFBQXRFLENBQXVFO0FBQzlFLFlBQVMsR0FBRyxFQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQUFBcEIsQ0FBcUI7QUFDOUIsZ0JBQWEsR0FBRyxFQUFFLEFBQUwsQ0FBTSJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './fields.js';
|
|
2
|
-
export * from './point.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Fr } from './fields.js';
|
|
2
|
-
/**
|
|
3
|
-
* Internal Point class for tests.
|
|
4
|
-
* @dev This minimal implementation is provided for testing barretenberg directly.
|
|
5
|
-
* Projects using bb.js should create their own point abstraction using the curve point
|
|
6
|
-
* types and operations exported from the barretenberg API.
|
|
7
|
-
*/
|
|
8
|
-
export declare class Point {
|
|
9
|
-
readonly x: Fr;
|
|
10
|
-
readonly y: Fr;
|
|
11
|
-
static SIZE_IN_BYTES: number;
|
|
12
|
-
static EMPTY: Point;
|
|
13
|
-
constructor(x: Fr, y: Fr);
|
|
14
|
-
static fromBuffer(buffer: Uint8Array): Point;
|
|
15
|
-
toBuffer(): Buffer<ArrayBuffer>;
|
|
16
|
-
equals(rhs: Point): boolean;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=point.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"point.d.ts","sourceRoot":"","sources":["../../../src/types/point.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC;;;;;GAKG;AACH,qBAAa,KAAK;aAKE,CAAC,EAAE,EAAE;aACL,CAAC,EAAE,EAAE;IALvB,MAAM,CAAC,aAAa,SAAM;IAC1B,MAAM,CAAC,KAAK,QAA+B;gBAGzB,CAAC,EAAE,EAAE,EACL,CAAC,EAAE,EAAE;IAGvB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU;IAOpC,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,KAAK;CAGlB"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Fr } from './fields.js';
|
|
2
|
-
/**
|
|
3
|
-
* Internal Point class for tests.
|
|
4
|
-
* @dev This minimal implementation is provided for testing barretenberg directly.
|
|
5
|
-
* Projects using bb.js should create their own point abstraction using the curve point
|
|
6
|
-
* types and operations exported from the barretenberg API.
|
|
7
|
-
*/
|
|
8
|
-
export class Point {
|
|
9
|
-
constructor(x, y) {
|
|
10
|
-
this.x = x;
|
|
11
|
-
this.y = y;
|
|
12
|
-
}
|
|
13
|
-
static fromBuffer(buffer) {
|
|
14
|
-
if (buffer.length !== this.SIZE_IN_BYTES) {
|
|
15
|
-
throw new Error(`Expected ${this.SIZE_IN_BYTES} bytes, got ${buffer.length}`);
|
|
16
|
-
}
|
|
17
|
-
return new this(Fr.fromBuffer(buffer.subarray(0, 32)), Fr.fromBuffer(buffer.subarray(32, 64)));
|
|
18
|
-
}
|
|
19
|
-
toBuffer() {
|
|
20
|
-
return Buffer.concat([this.x.toBuffer(), this.y.toBuffer()]);
|
|
21
|
-
}
|
|
22
|
-
equals(rhs) {
|
|
23
|
-
return this.x.equals(rhs.x) && this.y.equals(rhs.y);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
Point.SIZE_IN_BYTES = 64;
|
|
27
|
-
Point.EMPTY = new Point(Fr.ZERO, Fr.ZERO);
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqQzs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBSWhCLFlBQ2tCLENBQUssRUFDTCxDQUFLO1FBREwsTUFBQyxHQUFELENBQUMsQ0FBSTtRQUNMLE1BQUMsR0FBRCxDQUFDLENBQUk7SUFDcEIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBa0I7UUFDbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLGFBQWEsZUFBZSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOztBQXJCTSxtQkFBYSxHQUFHLEVBQUUsQ0FBQztBQUNuQixXQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bigint-array/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,MAAM,CAYvE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,UAAU,CAE/E"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert a 32-byte BE Buffer to a BigInt.
|
|
3
|
-
*/
|
|
4
|
-
export function buffer32BytesToBigIntBE(buf) {
|
|
5
|
-
return ((buf.readBigUInt64BE(0) << 192n) +
|
|
6
|
-
(buf.readBigUInt64BE(8) << 128n) +
|
|
7
|
-
(buf.readBigUInt64BE(16) << 64n) +
|
|
8
|
-
buf.readBigUInt64BE(24));
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Convert a BE Uint8Array to a BigInt.
|
|
12
|
-
*/
|
|
13
|
-
export function uint8ArrayToBigIntBE(bytes) {
|
|
14
|
-
const buffer = Buffer.from(bytes);
|
|
15
|
-
return buffer32BytesToBigIntBE(buffer);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Convert a BigInt to a 32-byte BE Buffer.
|
|
19
|
-
*/
|
|
20
|
-
export function bigIntToBufferBE(value, byteLength = 32) {
|
|
21
|
-
if (byteLength != 32) {
|
|
22
|
-
throw new Error(`Only 32 bytes supported for conversion from bigint to buffer, attempted byte length: ${byteLength}`);
|
|
23
|
-
}
|
|
24
|
-
const buf = Buffer.alloc(byteLength);
|
|
25
|
-
buf.writeBigUInt64BE(value >> 192n, 0);
|
|
26
|
-
buf.writeBigUInt64BE((value >> 128n) & 0xffffffffffffffffn, 8);
|
|
27
|
-
buf.writeBigUInt64BE((value >> 64n) & 0xffffffffffffffffn, 16);
|
|
28
|
-
buf.writeBigUInt64BE(value & 0xffffffffffffffffn, 24);
|
|
29
|
-
return buf;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Convert a BigInt to a 32-byte BE Uint8Array.
|
|
33
|
-
*/
|
|
34
|
-
export function bigIntToUint8ArrayBE(value, byteLength = 32) {
|
|
35
|
-
return new Uint8Array(bigIntToBufferBE(value, byteLength));
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmlnaW50LWFycmF5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQVc7SUFDakQsT0FBTyxDQUNMLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDaEMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNoQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBaUI7SUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsVUFBVSxHQUFHLEVBQUU7SUFDN0QsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FDYix3RkFBd0YsVUFBVSxFQUFFLENBQ3JHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYSxFQUFFLFVBQVUsR0FBRyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialize/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare function boolToBuffer(b: boolean): Uint8Array<ArrayBuffer>;
|
|
2
|
-
export declare function numToUInt32BE(n: number, bufferSize?: number): Uint8Array<ArrayBuffer>;
|
|
3
|
-
export declare function numToInt32BE(n: number, bufferSize?: number): Uint8Array<ArrayBuffer>;
|
|
4
|
-
export declare function concatenateUint8Arrays(arrayOfUint8Arrays: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
5
|
-
export declare function serializeBufferToVector(buf: Uint8Array): Uint8Array<ArrayBuffer>;
|
|
6
|
-
export declare function serializeBigInt(n: bigint, width?: number): Uint8Array<ArrayBuffer>;
|
|
7
|
-
export declare function serializeBufferArrayToVector(arr: Uint8Array[]): Uint8Array<ArrayBuffer>;
|
|
8
|
-
/** A type that can be written to a buffer. */
|
|
9
|
-
export type Bufferable = boolean | Uint8Array | number | string | {
|
|
10
|
-
toBuffer: () => Uint8Array;
|
|
11
|
-
} | Bufferable[];
|
|
12
|
-
/**
|
|
13
|
-
* Serializes a list of objects contiguously for calling into wasm.
|
|
14
|
-
* @param objs - Objects to serialize.
|
|
15
|
-
* @returns A buffer list with the concatenation of all fields.
|
|
16
|
-
*/
|
|
17
|
-
export declare function serializeBufferable(obj: Bufferable): Uint8Array;
|
|
18
|
-
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/serialize/serialize.ts"],"names":[],"mappings":"AACA,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,2BAItC;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAI,2BAItD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,SAAI,2BAIrD;AAED,wBAAgB,sBAAsB,CAAC,kBAAkB,EAAE,UAAU,EAAE,2BAStE;AAGD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,2BAEtD;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,2BAMpD;AAGD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,UAAU,EAAE,2BAE7D;AAED,8CAA8C;AAC9C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;CAAE,GAAG,UAAU,EAAE,CAAC;AAEhH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAgB/D"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// For serializing bool.
|
|
2
|
-
export function boolToBuffer(b) {
|
|
3
|
-
const buf = new Uint8Array(1);
|
|
4
|
-
buf[0] = b ? 1 : 0;
|
|
5
|
-
return buf;
|
|
6
|
-
}
|
|
7
|
-
// For serializing numbers to 32 bit big-endian form.
|
|
8
|
-
export function numToUInt32BE(n, bufferSize = 4) {
|
|
9
|
-
const buf = new Uint8Array(bufferSize);
|
|
10
|
-
new DataView(buf.buffer).setUint32(buf.byteLength - 4, n, false);
|
|
11
|
-
return buf;
|
|
12
|
-
}
|
|
13
|
-
// For serializing signed numbers to 32 bit big-endian form.
|
|
14
|
-
export function numToInt32BE(n, bufferSize = 4) {
|
|
15
|
-
const buf = new Uint8Array(bufferSize);
|
|
16
|
-
new DataView(buf.buffer).setInt32(buf.byteLength - 4, n, false);
|
|
17
|
-
return buf;
|
|
18
|
-
}
|
|
19
|
-
export function concatenateUint8Arrays(arrayOfUint8Arrays) {
|
|
20
|
-
const totalLength = arrayOfUint8Arrays.reduce((prev, curr) => prev + curr.length, 0);
|
|
21
|
-
const result = new Uint8Array(totalLength);
|
|
22
|
-
let length = 0;
|
|
23
|
-
for (const array of arrayOfUint8Arrays) {
|
|
24
|
-
result.set(array, length);
|
|
25
|
-
length += array.length;
|
|
26
|
-
}
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
// For serializing a buffer as a vector.
|
|
30
|
-
export function serializeBufferToVector(buf) {
|
|
31
|
-
return concatenateUint8Arrays([numToInt32BE(buf.length), buf]);
|
|
32
|
-
}
|
|
33
|
-
export function serializeBigInt(n, width = 32) {
|
|
34
|
-
const buf = new Uint8Array(width);
|
|
35
|
-
for (let i = 0; i < width; i++) {
|
|
36
|
-
buf[width - i - 1] = Number((n >> BigInt(i * 8)) & 0xffn);
|
|
37
|
-
}
|
|
38
|
-
return buf;
|
|
39
|
-
}
|
|
40
|
-
// For serializing an array of fixed length elements.
|
|
41
|
-
export function serializeBufferArrayToVector(arr) {
|
|
42
|
-
return concatenateUint8Arrays([numToUInt32BE(arr.length), ...arr.flat()]);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Serializes a list of objects contiguously for calling into wasm.
|
|
46
|
-
* @param objs - Objects to serialize.
|
|
47
|
-
* @returns A buffer list with the concatenation of all fields.
|
|
48
|
-
*/
|
|
49
|
-
export function serializeBufferable(obj) {
|
|
50
|
-
if (Array.isArray(obj)) {
|
|
51
|
-
return serializeBufferArrayToVector(obj.map(serializeBufferable));
|
|
52
|
-
}
|
|
53
|
-
else if (obj instanceof Uint8Array) {
|
|
54
|
-
return serializeBufferToVector(obj);
|
|
55
|
-
}
|
|
56
|
-
else if (typeof obj === 'boolean') {
|
|
57
|
-
return boolToBuffer(obj);
|
|
58
|
-
}
|
|
59
|
-
else if (typeof obj === 'number') {
|
|
60
|
-
return numToUInt32BE(obj);
|
|
61
|
-
}
|
|
62
|
-
else if (typeof obj === 'bigint') {
|
|
63
|
-
return serializeBigInt(obj);
|
|
64
|
-
}
|
|
65
|
-
else if (typeof obj === 'string') {
|
|
66
|
-
return serializeBufferToVector(new TextEncoder().encode(obj));
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
return obj.toBuffer();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZS9zZXJpYWxpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBVTtJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxDQUFTLEVBQUUsVUFBVSxHQUFHLENBQUM7SUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDO0lBQ3BELE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxrQkFBZ0M7SUFDckUsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckYsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsd0NBQXdDO0FBQ3hDLE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxHQUFlO0lBQ3JELE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsQ0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxxREFBcUQ7QUFDckQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEdBQWlCO0lBQzVELE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBS0Q7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFlO0lBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sNEJBQTRCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztTQUFNLElBQUksR0FBRyxZQUFZLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDcEMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztTQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDeEIsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal Fr field class for tests.
|
|
3
|
-
* @dev This minimal implementation is provided for testing barretenberg directly.
|
|
4
|
-
* Projects using bb.js should create their own field abstraction using the curve constants
|
|
5
|
-
* exported from the barretenberg binary (see CurveConstants generation).
|
|
6
|
-
*/
|
|
7
|
-
export declare class Fr {
|
|
8
|
-
static ZERO: Fr;
|
|
9
|
-
static MODULUS: bigint;
|
|
10
|
-
static MAX_VALUE: bigint;
|
|
11
|
-
static SIZE_IN_BYTES: number;
|
|
12
|
-
value: Uint8Array;
|
|
13
|
-
constructor(value: Uint8Array | Buffer | bigint);
|
|
14
|
-
static random(): Fr;
|
|
15
|
-
static fromBuffer(buffer: Uint8Array | Buffer): Fr;
|
|
16
|
-
static fromBufferReduce(buffer: Uint8Array | Buffer): Fr;
|
|
17
|
-
static fromString(str: string): Fr;
|
|
18
|
-
toBuffer(): Uint8Array<ArrayBufferLike>;
|
|
19
|
-
toString(): string;
|
|
20
|
-
equals(rhs: Fr): boolean;
|
|
21
|
-
isZero(): boolean;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/types/fields.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,qBAAa,EAAE;IACb,MAAM,CAAC,IAAI,KAAc;IACzB,MAAM,CAAC,OAAO,SAAuE;IACrF,MAAM,CAAC,SAAS,SAAqB;IACrC,MAAM,CAAC,aAAa,SAAM;IAC1B,KAAK,EAAE,UAAU,CAAC;gBAEN,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM;IAiB/C,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAO7C,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;IAOnD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM;IAI7B,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,EAAE;IAId,MAAM;CAGP"}
|