@aztec/bb.js 3.0.0-nightly.20251114 → 3.0.0-nightly.20251118
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/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/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/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-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/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/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/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/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
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Barretenberg, BarretenbergSync } from '../index.js';
|
|
2
|
-
import { Fr } from '../types/fields.js';
|
|
3
|
-
import { serializeBufferable } from '../serialize/index.js';
|
|
4
2
|
import { BarretenbergWasmMain } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
|
|
5
3
|
import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
|
|
6
4
|
import { BackendType } from './index.js';
|
|
5
|
+
import { Fr } from './testing/fields.js';
|
|
7
6
|
/**
|
|
8
7
|
* Async API benchmark test: WASM vs Native backends with proper non-blocking I/O
|
|
9
8
|
*
|
|
@@ -54,81 +53,51 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
|
|
|
54
53
|
console.warn('Failed to initialize Native Shared Memory (sync) backend:', error instanceof Error ? error.message : String(error));
|
|
55
54
|
}
|
|
56
55
|
}, 20000);
|
|
57
|
-
afterAll(async () => {
|
|
58
|
-
await wasm.destroy();
|
|
59
|
-
if (wasmApi) {
|
|
60
|
-
await wasmApi.destroy();
|
|
61
|
-
}
|
|
62
|
-
if (nativeSocketApi) {
|
|
63
|
-
await nativeSocketApi.destroy();
|
|
64
|
-
}
|
|
65
|
-
if (nativeShmApi) {
|
|
66
|
-
await nativeShmApi.destroy();
|
|
67
|
-
}
|
|
68
|
-
if (nativeShmSyncApi) {
|
|
69
|
-
nativeShmSyncApi.destroy();
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
async function directPoseidon2Hash(inputsBuffer) {
|
|
73
|
-
const inArgs = [inputsBuffer].map(serializeBufferable);
|
|
74
|
-
const outTypes = [Fr];
|
|
75
|
-
const result = wasm.callWasmExport('poseidon2_hash', inArgs, outTypes.map(t => t.SIZE_IN_BYTES));
|
|
76
|
-
const out = result.map((r, i) => outTypes[i].fromBuffer(r));
|
|
77
|
-
return Promise.resolve(out[0]);
|
|
78
|
-
}
|
|
79
56
|
it.each(SIZES)('benchmark with %p field elements', async (size) => {
|
|
80
57
|
// Generate random inputs
|
|
81
58
|
const inputs = Array(size)
|
|
82
59
|
.fill(0)
|
|
83
|
-
.map(() => Fr.random());
|
|
84
|
-
// Benchmark 1:
|
|
85
|
-
const directStart = performance.now();
|
|
86
|
-
for (let i = 0; i < ITERATIONS; i++) {
|
|
87
|
-
await directPoseidon2Hash(inputs);
|
|
88
|
-
}
|
|
89
|
-
const directTime = performance.now() - directStart;
|
|
90
|
-
// Benchmark 2: WASM (async)
|
|
60
|
+
.map(() => Fr.random().toBuffer());
|
|
61
|
+
// Benchmark 1: WASM (async)
|
|
91
62
|
let wasmTime = 0;
|
|
92
63
|
if (wasmApi) {
|
|
93
64
|
const wasmStart = performance.now();
|
|
94
65
|
for (let i = 0; i < ITERATIONS; i++) {
|
|
95
|
-
await wasmApi.poseidon2Hash({ inputs
|
|
66
|
+
await wasmApi.poseidon2Hash({ inputs });
|
|
96
67
|
}
|
|
97
68
|
wasmTime = performance.now() - wasmStart;
|
|
98
69
|
}
|
|
99
|
-
// Benchmark
|
|
70
|
+
// Benchmark 2: Native Socket (async with non-blocking I/O)
|
|
100
71
|
let nativeSocketTime = 0;
|
|
101
72
|
if (nativeSocketApi) {
|
|
102
73
|
const nativeSocketStart = performance.now();
|
|
103
74
|
for (let i = 0; i < ITERATIONS; i++) {
|
|
104
|
-
await nativeSocketApi.poseidon2Hash({ inputs
|
|
75
|
+
await nativeSocketApi.poseidon2Hash({ inputs });
|
|
105
76
|
}
|
|
106
77
|
nativeSocketTime = performance.now() - nativeSocketStart;
|
|
107
78
|
}
|
|
108
|
-
// Benchmark
|
|
79
|
+
// Benchmark 3: Native Shared Memory (async)
|
|
109
80
|
let nativeShmTime = 0;
|
|
110
81
|
if (nativeShmApi) {
|
|
111
82
|
const nativeShmStart = performance.now();
|
|
112
83
|
for (let i = 0; i < ITERATIONS; i++) {
|
|
113
|
-
await nativeShmApi.poseidon2Hash({ inputs
|
|
84
|
+
await nativeShmApi.poseidon2Hash({ inputs });
|
|
114
85
|
}
|
|
115
86
|
nativeShmTime = performance.now() - nativeShmStart;
|
|
116
87
|
}
|
|
117
|
-
// Benchmark
|
|
88
|
+
// Benchmark 4: Native Shared Memory (sync)
|
|
118
89
|
let nativeShmSyncTime = 0;
|
|
119
90
|
if (nativeShmSyncApi) {
|
|
120
91
|
const nativeShmSyncStart = performance.now();
|
|
121
92
|
for (let i = 0; i < ITERATIONS; i++) {
|
|
122
|
-
nativeShmSyncApi.poseidon2Hash({ inputs
|
|
93
|
+
nativeShmSyncApi.poseidon2Hash({ inputs });
|
|
123
94
|
}
|
|
124
95
|
nativeShmSyncTime = performance.now() - nativeShmSyncStart;
|
|
125
96
|
}
|
|
126
97
|
// Calculate metrics (all relative to WASM baseline)
|
|
127
|
-
const directOverhead = ((directTime - wasmTime) / wasmTime) * 100;
|
|
128
98
|
const nativeSocketOverhead = ((nativeSocketTime - wasmTime) / wasmTime) * 100;
|
|
129
99
|
const nativeShmOverhead = ((nativeShmTime - wasmTime) / wasmTime) * 100;
|
|
130
100
|
const nativeShmSyncOverhead = ((nativeShmSyncTime - wasmTime) / wasmTime) * 100;
|
|
131
|
-
const avgDirectTimeUs = (directTime / ITERATIONS) * 1000; // microseconds
|
|
132
101
|
const avgWasmTimeUs = (wasmTime / ITERATIONS) * 1000;
|
|
133
102
|
const avgNativeSocketTimeUs = (nativeSocketTime / ITERATIONS) * 1000;
|
|
134
103
|
const avgNativeShmTimeUs = (nativeShmTime / ITERATIONS) * 1000;
|
|
@@ -145,7 +114,6 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
|
|
|
145
114
|
else {
|
|
146
115
|
process.stdout.write(`│ WASM: unavailable │\n`);
|
|
147
116
|
}
|
|
148
|
-
process.stdout.write(`│ Direct WASM: ${directTime.toFixed(2).padStart(8)}ms (${avgDirectTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(directOverhead)} │\n`);
|
|
149
117
|
if (nativeSocketApi) {
|
|
150
118
|
process.stdout.write(`│ Native Socket: ${nativeSocketTime.toFixed(2).padStart(8)}ms (${avgNativeSocketTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeSocketOverhead)} │\n`);
|
|
151
119
|
}
|
|
@@ -165,27 +133,22 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
|
|
|
165
133
|
process.stdout.write(`│ Native Shared Sync: unavailable │\n`);
|
|
166
134
|
}
|
|
167
135
|
process.stdout.write(`└────────────────────────────────────────────────────────────┘\n`);
|
|
168
|
-
|
|
169
|
-
const directResult = await directPoseidon2Hash(inputs);
|
|
170
|
-
if (wasmApi) {
|
|
171
|
-
const wasmResult = await wasmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
|
|
172
|
-
expect(Buffer.from(wasmResult.hash)).toEqual(directResult.toBuffer());
|
|
173
|
-
}
|
|
136
|
+
const wasmResult = await wasmApi.poseidon2Hash({ inputs });
|
|
174
137
|
if (nativeSocketApi) {
|
|
175
|
-
const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs
|
|
176
|
-
expect(Buffer.from(nativeSocketResult.hash)).toEqual(
|
|
138
|
+
const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs });
|
|
139
|
+
expect(Buffer.from(nativeSocketResult.hash)).toEqual(wasmResult.hash);
|
|
177
140
|
}
|
|
178
141
|
if (nativeShmApi) {
|
|
179
|
-
const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs
|
|
180
|
-
expect(Buffer.from(nativeShmResult.hash)).toEqual(
|
|
142
|
+
const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs });
|
|
143
|
+
expect(Buffer.from(nativeShmResult.hash)).toEqual(wasmResult.hash);
|
|
181
144
|
}
|
|
182
145
|
if (nativeShmSyncApi) {
|
|
183
|
-
const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs
|
|
184
|
-
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(
|
|
146
|
+
const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs });
|
|
147
|
+
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(wasmResult.hash);
|
|
185
148
|
}
|
|
186
149
|
// Test always passes, this is just for measuring performance
|
|
187
150
|
expect(true).toBe(true);
|
|
188
|
-
});
|
|
151
|
+
}, 10000);
|
|
189
152
|
const TEST_VECTORS = [1, 2, 3, 5, 10, 50, 100];
|
|
190
153
|
const NUM_RANDOM_TESTS = 10;
|
|
191
154
|
it.each(TEST_VECTORS)('produces identical results for %p field elements', async (size) => {
|
|
@@ -193,25 +156,21 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
|
|
|
193
156
|
for (let test = 0; test < NUM_RANDOM_TESTS; test++) {
|
|
194
157
|
const inputs = Array(size)
|
|
195
158
|
.fill(0)
|
|
196
|
-
.map(() => Fr.random());
|
|
197
|
-
const
|
|
198
|
-
if (wasmApi) {
|
|
199
|
-
const wasmResult = await wasmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
|
|
200
|
-
expect(Buffer.from(wasmResult.hash)).toEqual(directResult.toBuffer());
|
|
201
|
-
}
|
|
159
|
+
.map(() => Fr.random().toBuffer());
|
|
160
|
+
const wasmResult = await wasmApi.poseidon2Hash({ inputs });
|
|
202
161
|
if (nativeSocketApi) {
|
|
203
|
-
const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs
|
|
204
|
-
expect(Buffer.from(nativeSocketResult.hash)).toEqual(
|
|
162
|
+
const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs });
|
|
163
|
+
expect(Buffer.from(nativeSocketResult.hash)).toEqual(wasmResult.hash);
|
|
205
164
|
}
|
|
206
165
|
if (nativeShmApi) {
|
|
207
|
-
const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs
|
|
208
|
-
expect(Buffer.from(nativeShmResult.hash)).toEqual(
|
|
166
|
+
const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs });
|
|
167
|
+
expect(Buffer.from(nativeShmResult.hash)).toEqual(wasmResult.hash);
|
|
209
168
|
}
|
|
210
169
|
if (nativeShmSyncApi) {
|
|
211
|
-
const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs
|
|
212
|
-
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(
|
|
170
|
+
const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs });
|
|
171
|
+
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(wasmResult.hash);
|
|
213
172
|
}
|
|
214
173
|
}
|
|
215
174
|
});
|
|
216
175
|
});
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zZWlkb24uYmVuY2gudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvcG9zZWlkb24uYmVuY2gudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDOzs7Ozs7O0dBT0c7QUFDSCxRQUFRLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO0lBQ25FLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFeEIsSUFBSSxPQUFPLEdBQXdCLElBQUksQ0FBQztJQUN4QyxJQUFJLGVBQWUsR0FBd0IsSUFBSSxDQUFDO0lBQ2hELElBQUksWUFBWSxHQUF3QixJQUFJLENBQUM7SUFDN0MsSUFBSSxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3JELElBQUksSUFBMEIsQ0FBQztJQUUvQixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbkIsb0VBQW9FO1FBQ3BFLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFB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
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zZWlkb24uYmVuY2gudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvcG9zZWlkb24uYmVuY2gudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpDOzs7Ozs7O0dBT0c7QUFDSCxRQUFRLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO0lBQ25FLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN6QixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFeEIsSUFBSSxPQUFPLEdBQXdCLElBQUksQ0FBQztJQUN4QyxJQUFJLGVBQWUsR0FBd0IsSUFBSSxDQUFDO0lBQ2hELElBQUksWUFBWSxHQUF3QixJQUFJLENBQUM7SUFDN0MsSUFBSSxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBQ3JELElBQUksSUFBMEIsQ0FBQztJQUUvQixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbkIsb0VBQW9FO1FBQ3BFLElBQUksR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzQixpQkFBaUI7UUFDakIsSUFBSSxDQUFD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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BarretenbergSync } from './index.js';
|
|
2
2
|
import { Timer } from '../benchmark/timer.js';
|
|
3
|
-
import { Fr } from '
|
|
3
|
+
import { Fr } from './testing/fields.js';
|
|
4
4
|
describe('poseidon sync', () => {
|
|
5
5
|
let api;
|
|
6
6
|
beforeAll(async () => {
|
|
@@ -32,4 +32,4 @@ describe('poseidon sync', () => {
|
|
|
32
32
|
// console.log(`Executed ${numHashesPerLoop * loops} hashes at an average ${us}us / hash`);
|
|
33
33
|
// });
|
|
34
34
|
});
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zZWlkb24udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvcG9zZWlkb24udGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6QyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixJQUFJLEdBQXFCLENBQUM7SUFFMUIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25CLEdBQUcsR0FBRyxNQUFNLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdEIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLHlCQUF5QixFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRUgseUNBQXlDO0lBQ3pDLHNCQUFzQjtJQUN0QixtQ0FBbUM7SUFDbkMsd0ZBQXdGO0lBQ3hGLDJCQUEyQjtJQUMzQixzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLE1BQU07SUFDTixvREFBb0Q7SUFDcEQsNkZBQTZGO0lBQzdGLE1BQU07QUFDUixDQUFDLENBQUMsQ0FBQyJ9
|
|
@@ -14,4 +14,4 @@ export declare function bigIntToBufferBE(value: bigint, byteLength?: number): Bu
|
|
|
14
14
|
* Convert a BigInt to a 32-byte BE Uint8Array.
|
|
15
15
|
*/
|
|
16
16
|
export declare function bigIntToUint8ArrayBE(value: bigint, byteLength?: number): Uint8Array;
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=bigint-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bigint-buffer.d.ts","sourceRoot":"","sources":["../../../../src/barretenberg/testing/bigint-buffer.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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlnaW50LWJ1ZmZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvdGVzdGluZy9iaWdpbnQtYnVmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQVc7SUFDakQsT0FBTyxDQUNMLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDaEMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNoQyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBaUI7SUFDcEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxPQUFPLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsVUFBVSxHQUFHLEVBQUU7SUFDN0QsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FDYix3RkFBd0YsVUFBVSxFQUFFLENBQ3JHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBYSxFQUFFLFVBQVUsR0FBRyxFQUFFO0lBQ2pFLE9BQU8sSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDN0QsQ0FBQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class Fr {
|
|
2
|
+
static ZERO: Fr;
|
|
3
|
+
static MODULUS: bigint;
|
|
4
|
+
static MAX_VALUE: bigint;
|
|
5
|
+
static SIZE_IN_BYTES: number;
|
|
6
|
+
value: Uint8Array;
|
|
7
|
+
constructor(value: Uint8Array | Buffer | bigint);
|
|
8
|
+
static random(): Fr;
|
|
9
|
+
toBuffer(): Uint8Array<ArrayBufferLike>;
|
|
10
|
+
toString(): string;
|
|
11
|
+
equals(rhs: Fr): boolean;
|
|
12
|
+
isZero(): boolean;
|
|
13
|
+
static fromBuffer(value: Uint8Array): Fr;
|
|
14
|
+
static fromBufferReduce(value: Uint8Array): Fr;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/barretenberg/testing/fields.ts"],"names":[],"mappings":"AAQA,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,QAAQ;IAIR,QAAQ;IAIR,MAAM,CAAC,GAAG,EAAE,EAAE;IAId,MAAM;IAIN,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE;IAIxC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,EAAE;CAK/C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { randomBytes } from '../../random/index.js';
|
|
3
|
+
import { buffer32BytesToBigIntBE, uint8ArrayToBigIntBE, bigIntToUint8ArrayBE, } from './bigint-buffer.js';
|
|
4
|
+
export class Fr {
|
|
5
|
+
constructor(value) {
|
|
6
|
+
// We convert buffer value to bigint to be able to check it fits within modulus
|
|
7
|
+
const valueBigInt = typeof value === 'bigint'
|
|
8
|
+
? value
|
|
9
|
+
: value instanceof Buffer
|
|
10
|
+
? buffer32BytesToBigIntBE(value)
|
|
11
|
+
: uint8ArrayToBigIntBE(value);
|
|
12
|
+
if (valueBigInt > _a.MAX_VALUE) {
|
|
13
|
+
throw new Error(`Value 0x${valueBigInt.toString(16)} is greater or equal to field modulus.`);
|
|
14
|
+
}
|
|
15
|
+
this.value =
|
|
16
|
+
typeof value === 'bigint' ? bigIntToUint8ArrayBE(value) : value instanceof Buffer ? new Uint8Array(value) : value;
|
|
17
|
+
}
|
|
18
|
+
static random() {
|
|
19
|
+
const r = uint8ArrayToBigIntBE(randomBytes(64)) % _a.MODULUS;
|
|
20
|
+
return new this(r);
|
|
21
|
+
}
|
|
22
|
+
toBuffer() {
|
|
23
|
+
return this.value;
|
|
24
|
+
}
|
|
25
|
+
toString() {
|
|
26
|
+
return '0x' + this.toBuffer().reduce((accumulator, byte) => accumulator + byte.toString(16).padStart(2, '0'), '');
|
|
27
|
+
}
|
|
28
|
+
equals(rhs) {
|
|
29
|
+
return this.value.every((v, i) => v === rhs.value[i]);
|
|
30
|
+
}
|
|
31
|
+
isZero() {
|
|
32
|
+
return this.value.every(v => v === 0);
|
|
33
|
+
}
|
|
34
|
+
static fromBuffer(value) {
|
|
35
|
+
return _a.fromBufferReduce(value);
|
|
36
|
+
}
|
|
37
|
+
static fromBufferReduce(value) {
|
|
38
|
+
const valueBigInt = uint8ArrayToBigIntBE(value);
|
|
39
|
+
const reducedValue = valueBigInt % _a.MODULUS;
|
|
40
|
+
return new _a(reducedValue);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
_a = Fr;
|
|
44
|
+
Fr.ZERO = new _a(0n);
|
|
45
|
+
Fr.MODULUS = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;
|
|
46
|
+
Fr.MAX_VALUE = _a.MODULUS - 1n;
|
|
47
|
+
Fr.SIZE_IN_BYTES = 32;
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JhcnJldGVuYmVyZy90ZXN0aW5nL2ZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsb0JBQW9CLEVBRXBCLG9CQUFvQixHQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sT0FBTyxFQUFFO0lBT2IsWUFBWSxLQUFtQztRQUM3QywrRUFBK0U7UUFDL0UsTUFBTSxXQUFXLEdBQ2YsT0FBTyxLQUFLLEtBQUssUUFBUTtZQUN2QixDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTTtnQkFDdkIsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUs7WUFDUixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3RILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTTtRQUNYLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDN0QsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxNQUFNLENBQUMsR0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQjtRQUNqQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQWlCO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O0FBcERNLE9BQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQUFBYixDQUFjO0FBQ2xCLFVBQU8sR0FBRyxtRUFBbUUsQUFBdEUsQ0FBdUU7QUFDOUUsWUFBUyxHQUFHLEVBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxBQUFwQixDQUFxQjtBQUM5QixnQkFBYSxHQUFHLEVBQUUsQUFBTCxDQUFNIn0=
|
|
Binary file
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export declare enum BackendType {
|
|
5
5
|
/** WASM direct execution (no worker) */
|
|
6
|
-
Wasm = "
|
|
6
|
+
Wasm = "Wasm",
|
|
7
7
|
/** WASM with worker threads */
|
|
8
|
-
WasmWorker = "
|
|
8
|
+
WasmWorker = "WasmWorker",
|
|
9
9
|
/** Native via Unix domain socket (async only) */
|
|
10
|
-
NativeUnixSocket = "
|
|
10
|
+
NativeUnixSocket = "NativeUnixSocket",
|
|
11
11
|
/** Native via shared memory (sync only currently) */
|
|
12
|
-
NativeSharedMemory = "
|
|
12
|
+
NativeSharedMemory = "NativeSharedMemory"
|
|
13
13
|
}
|
|
14
14
|
export type BackendOptions = {
|
|
15
15
|
/** @description Number of threads to run the backend worker on */
|
|
@@ -25,7 +25,10 @@ export type BackendOptions = {
|
|
|
25
25
|
wasmPath?: string;
|
|
26
26
|
/** @description Custom path to bb binary for native backend (overrides automatic detection) */
|
|
27
27
|
bbPath?: string;
|
|
28
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* @description Logging function
|
|
30
|
+
* Warning: Attaching a logger can prevent nodejs from exiting without explicitly destroying the backend.
|
|
31
|
+
*/
|
|
29
32
|
logger?: (msg: string) => void;
|
|
30
33
|
/**
|
|
31
34
|
* @description Maximum concurrent clients for shared memory IPC server (default: 1)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bb_backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW;IACrB,wCAAwC;IACxC,IAAI,SAAS;IACb,+BAA+B;IAC/B,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bb_backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,WAAW;IACrB,wCAAwC;IACxC,IAAI,SAAS;IACb,+BAA+B;IAC/B,UAAU,eAAe;IACzB,iDAAiD;IACjD,gBAAgB,qBAAqB;IACrC,qDAAqD;IACrD,kBAAkB,uBAAuB;CAC1C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,kFAAkF;IAClF,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAEhD,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC"}
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
export var BackendType;
|
|
5
5
|
(function (BackendType) {
|
|
6
6
|
/** WASM direct execution (no worker) */
|
|
7
|
-
BackendType["Wasm"] = "
|
|
7
|
+
BackendType["Wasm"] = "Wasm";
|
|
8
8
|
/** WASM with worker threads */
|
|
9
|
-
BackendType["WasmWorker"] = "
|
|
9
|
+
BackendType["WasmWorker"] = "WasmWorker";
|
|
10
10
|
/** Native via Unix domain socket (async only) */
|
|
11
|
-
BackendType["NativeUnixSocket"] = "
|
|
11
|
+
BackendType["NativeUnixSocket"] = "NativeUnixSocket";
|
|
12
12
|
/** Native via shared memory (sync only currently) */
|
|
13
|
-
BackendType["NativeSharedMemory"] = "
|
|
13
|
+
BackendType["NativeSharedMemory"] = "NativeSharedMemory";
|
|
14
14
|
})(BackendType || (BackendType = {}));
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmJfYmFja2VuZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ3JCLHdDQUF3QztJQUN4Qyw0QkFBYSxDQUFBO0lBQ2IsK0JBQStCO0lBQy9CLHdDQUF5QixDQUFBO0lBQ3pCLGlEQUFpRDtJQUNqRCxvREFBcUMsQ0FBQTtJQUNyQyxxREFBcUQ7SUFDckQsd0RBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQVRXLFdBQVcsS0FBWCxXQUFXLFFBU3RCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,YAAY,CAAC,CAuDvB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAkC3B"}
|
|
@@ -9,6 +9,10 @@ import { BackendType } from '../index.js';
|
|
|
9
9
|
* Create backend of specific type (no fallback)
|
|
10
10
|
*/
|
|
11
11
|
export async function createAsyncBackend(type, options, logger) {
|
|
12
|
+
options = {
|
|
13
|
+
...options,
|
|
14
|
+
wasmPath: options.wasmPath ?? process.env.BB_WASM_PATH,
|
|
15
|
+
};
|
|
12
16
|
switch (type) {
|
|
13
17
|
case BackendType.NativeUnixSocket: {
|
|
14
18
|
const bbPath = findBbBinary(options.bbPath);
|
|
@@ -16,7 +20,7 @@ export async function createAsyncBackend(type, options, logger) {
|
|
|
16
20
|
throw new Error('Native backend requires bb binary.');
|
|
17
21
|
}
|
|
18
22
|
logger(`Using native Unix socket backend: ${bbPath}`);
|
|
19
|
-
const socket = new BarretenbergNativeSocketAsyncBackend(bbPath, options.threads);
|
|
23
|
+
const socket = new BarretenbergNativeSocketAsyncBackend(bbPath, options.threads, options.logger);
|
|
20
24
|
return new Barretenberg(socket, options);
|
|
21
25
|
}
|
|
22
26
|
case BackendType.NativeSharedMemory: {
|
|
@@ -30,7 +34,7 @@ export async function createAsyncBackend(type, options, logger) {
|
|
|
30
34
|
}
|
|
31
35
|
logger(`Using native shared memory backend (via sync adapter): ${bbPath}`);
|
|
32
36
|
// Use sync backend with adapter to provide async interface
|
|
33
|
-
const syncBackend = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients);
|
|
37
|
+
const syncBackend = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients, options.logger);
|
|
34
38
|
const asyncBackend = new SyncToAsyncAdapter(syncBackend);
|
|
35
39
|
return new Barretenberg(asyncBackend, options);
|
|
36
40
|
}
|
|
@@ -55,6 +59,10 @@ export async function createAsyncBackend(type, options, logger) {
|
|
|
55
59
|
* Create backend of specific type (no fallback)
|
|
56
60
|
*/
|
|
57
61
|
export async function createSyncBackend(type, options, logger) {
|
|
62
|
+
options = {
|
|
63
|
+
...options,
|
|
64
|
+
wasmPath: options.wasmPath ?? process.env.BB_WASM_PATH,
|
|
65
|
+
};
|
|
58
66
|
switch (type) {
|
|
59
67
|
case BackendType.NativeSharedMemory: {
|
|
60
68
|
const bbPath = findBbBinary(options.bbPath);
|
|
@@ -66,7 +74,7 @@ export async function createSyncBackend(type, options, logger) {
|
|
|
66
74
|
throw new Error('Native sync backend requires napi client stub.');
|
|
67
75
|
}
|
|
68
76
|
logger(`Using native shared memory backend: ${bbPath}`);
|
|
69
|
-
const shm = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients);
|
|
77
|
+
const shm = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients, options.logger);
|
|
70
78
|
return new BarretenbergSync(shm);
|
|
71
79
|
}
|
|
72
80
|
case BackendType.Wasm:
|
|
@@ -77,4 +85,4 @@ export async function createSyncBackend(type, options, logger) {
|
|
|
77
85
|
throw new Error(`Backend ${type} not supported for BarretenbergSync`);
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYmJfYmFja2VuZHMvbm9kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdFLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsSUFBaUIsRUFDakIsT0FBdUIsRUFDdkIsTUFBNkI7SUFFN0IsT0FBTyxHQUFHO1FBQ1IsR0FBRyxPQUFPO1FBQ1YsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZO0tBQ3ZELENBQUM7SUFFRixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IsS0FBSyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsTUFBTSxDQUFDLHFDQUFxQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3RE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
|
|
@@ -13,6 +13,7 @@ import { IMsgpackBackendSync } from '../interface.js';
|
|
|
13
13
|
export declare class BarretenbergNativeShmSyncBackend implements IMsgpackBackendSync {
|
|
14
14
|
private process;
|
|
15
15
|
private client;
|
|
16
|
+
private logFd?;
|
|
16
17
|
private constructor();
|
|
17
18
|
/**
|
|
18
19
|
* Create and initialize a shared memory backend.
|
|
@@ -20,7 +21,7 @@ export declare class BarretenbergNativeShmSyncBackend implements IMsgpackBackend
|
|
|
20
21
|
* @param threads Optional number of threads
|
|
21
22
|
* @param maxClients Optional maximum concurrent clients (default: 1)
|
|
22
23
|
*/
|
|
23
|
-
static new(bbBinaryPath: string, threads?: number, maxClients?: number): Promise<BarretenbergNativeShmSyncBackend>;
|
|
24
|
+
static new(bbBinaryPath: string, threads?: number, maxClients?: number, logger?: (msg: string) => void): Promise<BarretenbergNativeShmSyncBackend>;
|
|
24
25
|
call(inputBuffer: Uint8Array): Uint8Array;
|
|
25
26
|
private cleanup;
|
|
26
27
|
destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native_shm.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/native_shm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"native_shm.d.ts","sourceRoot":"","sources":["../../../../src/bb_backends/node/native_shm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAmBtD;;;;;;;;;;GAUG;AACH,qBAAa,gCAAiC,YAAW,mBAAmB;IAC1E,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAC,CAAS;IAEvB,OAAO;IAMP;;;;;OAKG;WACU,GAAG,CACd,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,gCAAgC,CAAC;IAwH5C,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU;IASzC,OAAO,CAAC,OAAO;IAiBf,OAAO,IAAI,IAAI;CAMhB"}
|