@aztec/bb.js 0.72.1 → 0.73.0
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/browser/barretenberg/index.d.ts +4 -9
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg-threads.wasm.gz +0 -0
- package/dest/browser/barretenberg.wasm.gz +0 -0
- package/dest/browser/barretenberg_api/index.d.ts +1 -0
- package/dest/browser/barretenberg_api/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/index.d.ts +2 -2
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/browser/index.d.ts +1 -1
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +12803 -13152
- package/dest/node/barretenberg/blake2s.test.js +2 -2
- package/dest/node/barretenberg/index.d.ts +4 -9
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +10 -35
- package/dest/node/barretenberg/pedersen.test.js +2 -2
- package/dest/node/barretenberg/poseidon.test.js +2 -2
- package/dest/node/barretenberg_api/index.d.ts +1 -0
- package/dest/node/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node/barretenberg_api/index.js +8 -1
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +20 -6
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/node/index.js +2 -2
- package/dest/node/barretenberg_wasm/index.d.ts +2 -2
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/index.js +5 -5
- package/dest/node/index.d.ts +1 -1
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -2
- package/dest/node-cjs/barretenberg/blake2s.test.js +2 -2
- package/dest/node-cjs/barretenberg/index.d.ts +4 -9
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +11 -36
- package/dest/node-cjs/barretenberg/pedersen.test.js +2 -2
- package/dest/node-cjs/barretenberg/poseidon.test.js +2 -2
- package/dest/node-cjs/barretenberg_api/index.d.ts +1 -0
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_api/index.js +8 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +20 -6
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
- package/dest/node-cjs/barretenberg_wasm/index.d.ts +2 -2
- package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/index.js +5 -5
- package/dest/node-cjs/index.d.ts +1 -1
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +2 -3
- package/package.json +1 -1
- package/src/barretenberg/blake2s.test.ts +1 -1
- package/src/barretenberg/index.ts +13 -40
- package/src/barretenberg/pedersen.test.ts +1 -1
- package/src/barretenberg/poseidon.test.ts +1 -1
- package/src/barretenberg_api/index.ts +12 -0
- package/src/barretenberg_wasm/fetch_code/browser/index.ts +18 -5
- package/src/barretenberg_wasm/fetch_code/node/index.ts +1 -1
- package/src/barretenberg_wasm/index.ts +4 -4
- package/src/index.ts +1 -1
|
@@ -22,6 +22,9 @@ export type BackendOptions = {
|
|
|
22
22
|
|
|
23
23
|
/** @description Path to download CRS files */
|
|
24
24
|
crsPath?: string;
|
|
25
|
+
|
|
26
|
+
/** @description Path to download WASM files */
|
|
27
|
+
wasmPath?: string;
|
|
25
28
|
};
|
|
26
29
|
|
|
27
30
|
export type CircuitOptions = {
|
|
@@ -50,7 +53,7 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
50
53
|
static async new(options: BackendOptions = {}) {
|
|
51
54
|
const worker = createMainWorker();
|
|
52
55
|
const wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
|
|
53
|
-
const { module, threads } = await fetchModuleAndThreads(options.threads);
|
|
56
|
+
const { module, threads } = await fetchModuleAndThreads(options.threads, options.wasmPath);
|
|
54
57
|
await wasm.init(module, threads, proxy(debug), options.memory?.initial, options.memory?.maximum);
|
|
55
58
|
return new Barretenberg(worker, wasm, options);
|
|
56
59
|
}
|
|
@@ -89,26 +92,28 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
89
92
|
}
|
|
90
93
|
}
|
|
91
94
|
|
|
95
|
+
let barrentenbergSyncSingletonPromise: Promise<BarretenbergSync>;
|
|
92
96
|
let barretenbergSyncSingleton: BarretenbergSync;
|
|
93
|
-
let barretenbergSyncSingletonPromise: Promise<BarretenbergSync>;
|
|
94
97
|
|
|
95
98
|
export class BarretenbergSync extends BarretenbergApiSync {
|
|
96
99
|
private constructor(wasm: BarretenbergWasmMain) {
|
|
97
100
|
super(wasm);
|
|
98
101
|
}
|
|
99
102
|
|
|
100
|
-
static async new() {
|
|
103
|
+
private static async new(wasmPath?: string) {
|
|
101
104
|
const wasm = new BarretenbergWasmMain();
|
|
102
|
-
const { module, threads } = await fetchModuleAndThreads(1);
|
|
105
|
+
const { module, threads } = await fetchModuleAndThreads(1, wasmPath);
|
|
103
106
|
await wasm.init(module, threads);
|
|
104
107
|
return new BarretenbergSync(wasm);
|
|
105
108
|
}
|
|
106
109
|
|
|
107
|
-
static initSingleton() {
|
|
108
|
-
if (!
|
|
109
|
-
|
|
110
|
+
static async initSingleton(wasmPath?: string) {
|
|
111
|
+
if (!barrentenbergSyncSingletonPromise) {
|
|
112
|
+
barrentenbergSyncSingletonPromise = BarretenbergSync.new(wasmPath);
|
|
110
113
|
}
|
|
111
|
-
|
|
114
|
+
|
|
115
|
+
barretenbergSyncSingleton = await barrentenbergSyncSingletonPromise;
|
|
116
|
+
return barretenbergSyncSingleton;
|
|
112
117
|
}
|
|
113
118
|
|
|
114
119
|
static getSingleton() {
|
|
@@ -122,35 +127,3 @@ export class BarretenbergSync extends BarretenbergApiSync {
|
|
|
122
127
|
return this.wasm;
|
|
123
128
|
}
|
|
124
129
|
}
|
|
125
|
-
|
|
126
|
-
let barrentenbergLazySingleton: BarretenbergLazy;
|
|
127
|
-
|
|
128
|
-
export class BarretenbergLazy extends BarretenbergApi {
|
|
129
|
-
private constructor(wasm: BarretenbergWasmMain) {
|
|
130
|
-
super(wasm);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
private static async new() {
|
|
134
|
-
const wasm = new BarretenbergWasmMain();
|
|
135
|
-
const { module, threads } = await fetchModuleAndThreads(1);
|
|
136
|
-
await wasm.init(module, threads);
|
|
137
|
-
return new BarretenbergLazy(wasm);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
static async getSingleton() {
|
|
141
|
-
if (!barrentenbergLazySingleton) {
|
|
142
|
-
barrentenbergLazySingleton = await BarretenbergLazy.new();
|
|
143
|
-
}
|
|
144
|
-
return barrentenbergLazySingleton;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
getWasm() {
|
|
148
|
-
return this.wasm;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// If we're in ESM environment, use top level await. CJS users need to call it manually.
|
|
153
|
-
// Need to ignore for cjs build.
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
155
|
-
// @ts-ignore
|
|
156
|
-
await BarretenbergSync.initSingleton(); // POSTPROCESS ESM ONLY
|
|
@@ -76,6 +76,18 @@ export class BarretenbergApi {
|
|
|
76
76
|
return out[0];
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
async poseidon2HashAccumulate(inputsBuffer: Fr[]): Promise<Fr> {
|
|
80
|
+
const inArgs = [inputsBuffer].map(serializeBufferable);
|
|
81
|
+
const outTypes: OutputType[] = [Fr];
|
|
82
|
+
const result = await this.wasm.callWasmExport(
|
|
83
|
+
'poseidon2_hash_accumulate',
|
|
84
|
+
inArgs,
|
|
85
|
+
outTypes.map(t => t.SIZE_IN_BYTES),
|
|
86
|
+
);
|
|
87
|
+
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
88
|
+
return out[0];
|
|
89
|
+
}
|
|
90
|
+
|
|
79
91
|
async poseidon2Hashes(inputsBuffer: Fr[]): Promise<Fr> {
|
|
80
92
|
const inArgs = [inputsBuffer].map(serializeBufferable);
|
|
81
93
|
const outTypes: OutputType[] = [Fr];
|
|
@@ -4,9 +4,22 @@ import pako from 'pako';
|
|
|
4
4
|
|
|
5
5
|
// Annoyingly the wasm declares if it's memory is shared or not. So now we need two wasms if we want to be
|
|
6
6
|
// able to fallback on "non shared memory" situations.
|
|
7
|
-
export async function fetchCode(multithreaded: boolean) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
7
|
+
export async function fetchCode(multithreaded: boolean, wasmPath?: string) {
|
|
8
|
+
let url = multithreaded ? barretenbergThreadsModule : barretenbergModule;
|
|
9
|
+
url = wasmPath ? `${wasmPath}/${/[^/]+(?=\/$|$)/.exec(url)?.[0]}` : url;
|
|
10
|
+
const res = await fetch(url);
|
|
11
|
+
const maybeCompressedData = await res.arrayBuffer();
|
|
12
|
+
const buffer = new Uint8Array(maybeCompressedData);
|
|
13
|
+
const isGzip =
|
|
14
|
+
// Check magic number
|
|
15
|
+
buffer[0] === 0x1f &&
|
|
16
|
+
buffer[1] === 0x8b &&
|
|
17
|
+
// Check compression method:
|
|
18
|
+
buffer[2] === 0x08;
|
|
19
|
+
if (isGzip) {
|
|
20
|
+
const decompressedData = pako.ungzip(buffer);
|
|
21
|
+
return decompressedData.buffer;
|
|
22
|
+
} else {
|
|
23
|
+
return buffer;
|
|
24
|
+
}
|
|
12
25
|
}
|
|
@@ -14,7 +14,7 @@ function getCurrentDir() {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
-
export async function fetchCode(multithreaded: boolean) {
|
|
17
|
+
export async function fetchCode(multithreaded: boolean, wasmPath?: string) {
|
|
18
18
|
const path = getCurrentDir() + '/../../barretenberg-threads.wasm.gz';
|
|
19
19
|
const compressedData = await readFile(path);
|
|
20
20
|
const decompressedData = pako.ungzip(new Uint8Array(compressedData));
|
|
@@ -7,14 +7,14 @@ import { fetchCode } from './fetch_code/index.js';
|
|
|
7
7
|
|
|
8
8
|
const debug = createDebug('bb.js:wasm');
|
|
9
9
|
|
|
10
|
-
export async function fetchModuleAndThreads(desiredThreads = 32) {
|
|
10
|
+
export async function fetchModuleAndThreads(desiredThreads = 32, wasmPath?: string) {
|
|
11
11
|
const shared = getSharedMemoryAvailable();
|
|
12
12
|
|
|
13
13
|
const availableThreads = shared ? await getAvailableThreads() : 1;
|
|
14
14
|
// We limit the number of threads to 32 as we do not benefit from greater numbers.
|
|
15
15
|
const limitedThreads = Math.min(desiredThreads, availableThreads, 32);
|
|
16
16
|
|
|
17
|
-
const code = await fetchCode(shared);
|
|
17
|
+
const code = await fetchCode(shared, wasmPath);
|
|
18
18
|
const module = await WebAssembly.compile(code);
|
|
19
19
|
return { module, threads: limitedThreads };
|
|
20
20
|
}
|
|
@@ -38,10 +38,10 @@ export class BarretenbergWasm extends BarretenbergWasmMain {
|
|
|
38
38
|
* Construct and initialize BarretenbergWasm within a Worker. Return both the worker and the wasm proxy.
|
|
39
39
|
* Used when running in the browser, because we can't block the main thread.
|
|
40
40
|
*/
|
|
41
|
-
public static async new(desiredThreads?: number) {
|
|
41
|
+
public static async new(desiredThreads?: number, wasmPath?: string) {
|
|
42
42
|
const worker = createMainWorker();
|
|
43
43
|
const wasm = getRemoteBarretenbergWasm<BarretenbergWasmMainWorker>(worker);
|
|
44
|
-
const { module, threads } = await fetchModuleAndThreads(desiredThreads);
|
|
44
|
+
const { module, threads } = await fetchModuleAndThreads(desiredThreads, wasmPath);
|
|
45
45
|
await wasm.init(module, threads, proxy(debug));
|
|
46
46
|
return { worker, wasm };
|
|
47
47
|
}
|
package/src/index.ts
CHANGED
|
@@ -3,11 +3,11 @@ export {
|
|
|
3
3
|
BackendOptions,
|
|
4
4
|
Barretenberg,
|
|
5
5
|
BarretenbergSync,
|
|
6
|
-
BarretenbergLazy,
|
|
7
6
|
BarretenbergVerifier,
|
|
8
7
|
UltraPlonkBackend,
|
|
9
8
|
UltraHonkBackend,
|
|
10
9
|
AztecClientBackend,
|
|
11
10
|
} from './barretenberg/index.js';
|
|
11
|
+
|
|
12
12
|
export { RawBuffer, Fr } from './types/index.js';
|
|
13
13
|
export { splitHonkProof, reconstructHonkProof, ProofData } from './proof/index.js';
|