@aztec/bb.js 0.86.0 → 0.87.0-nightly.20250521
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-threads.js +1 -1
- package/dest/browser/barretenberg.js +1 -1
- package/dest/browser/index.js +179 -345
- package/dest/browser/main.worker.js +116 -116
- package/dest/browser/thread.worker.js +116 -116
- package/dest/node/barretenberg/backend.d.ts +5 -40
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +28 -108
- package/dest/node/barretenberg/index.d.ts +1 -1
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +6 -6
- package/dest/node/barretenberg/verifier.d.ts +0 -2
- package/dest/node/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node/barretenberg/verifier.js +2 -12
- package/dest/node/barretenberg_api/index.d.ts +7 -11
- package/dest/node/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node/barretenberg_api/index.js +46 -74
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/bigint-array/index.d.ts +1 -0
- package/dest/node/bigint-array/index.d.ts.map +1 -1
- package/dest/node/bindgen/mappings.js +2 -2
- package/dest/node/bindgen/typescript.js +1 -1
- package/dest/node/crs/net_crs.d.ts.map +1 -1
- package/dest/node/crs/net_crs.js +6 -7
- package/dest/node/crs/node/index.js +4 -4
- 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/main.d.ts +0 -8
- package/dest/node/main.d.ts.map +1 -1
- package/dest/node/main.js +38 -244
- package/dest/node/proof/index.d.ts +1 -2
- package/dest/node/proof/index.d.ts.map +1 -1
- package/dest/node/proof/index.js +2 -9
- package/dest/node/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/node/serialize/buffer_reader.js +1 -1
- package/dest/node/types/fields.d.ts +1 -0
- package/dest/node/types/fields.d.ts.map +1 -1
- package/dest/node/types/fields.js +1 -1
- package/dest/node/types/point.d.ts +1 -0
- package/dest/node/types/point.d.ts.map +1 -1
- package/dest/node/types/point.js +1 -1
- package/dest/node-cjs/barretenberg/backend.d.ts +5 -40
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +28 -109
- package/dest/node-cjs/barretenberg/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +6 -7
- package/dest/node-cjs/barretenberg/verifier.d.ts +0 -2
- package/dest/node-cjs/barretenberg/verifier.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/verifier.js +1 -11
- package/dest/node-cjs/barretenberg_api/index.d.ts +7 -11
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_api/index.js +45 -73
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/bigint-array/index.d.ts +1 -0
- package/dest/node-cjs/bigint-array/index.d.ts.map +1 -1
- package/dest/node-cjs/bindgen/mappings.js +2 -2
- package/dest/node-cjs/bindgen/typescript.js +1 -1
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/net_crs.js +6 -7
- package/dest/node-cjs/crs/node/index.js +4 -4
- 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/dest/node-cjs/main.d.ts +0 -8
- package/dest/node-cjs/main.d.ts.map +1 -1
- package/dest/node-cjs/main.js +39 -253
- package/dest/node-cjs/proof/index.d.ts +1 -2
- package/dest/node-cjs/proof/index.d.ts.map +1 -1
- package/dest/node-cjs/proof/index.js +3 -11
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/node-cjs/serialize/buffer_reader.js +1 -1
- package/dest/node-cjs/types/fields.d.ts +1 -0
- package/dest/node-cjs/types/fields.d.ts.map +1 -1
- package/dest/node-cjs/types/fields.js +1 -1
- package/dest/node-cjs/types/point.d.ts +1 -0
- package/dest/node-cjs/types/point.d.ts.map +1 -1
- package/dest/node-cjs/types/point.js +1 -1
- package/package.json +7 -8
- package/src/barretenberg/backend.ts +41 -159
- package/src/barretenberg/index.ts +10 -6
- package/src/barretenberg/verifier.ts +1 -13
- package/src/barretenberg_api/index.ts +74 -130
- package/src/bindgen/mappings.ts +1 -1
- package/src/bindgen/typescript.ts +4 -4
- package/src/crs/net_crs.ts +5 -6
- package/src/crs/node/index.ts +3 -3
- package/src/index.html +1 -1
- package/src/index.ts +0 -1
- package/src/main.ts +44 -279
- package/src/proof/index.ts +1 -13
- package/src/serialize/buffer_reader.ts +4 -1
- package/src/types/fields.ts +2 -2
- package/src/types/point.ts +4 -1
- package/dest/browser/733.655674bbbb79bdf168c4.js +0 -7
- package/dest/node/crs/node/ignition_files_crs.d.ts +0 -38
- package/dest/node/crs/node/ignition_files_crs.d.ts.map +0 -1
- package/dest/node/crs/node/ignition_files_crs.js +0 -65
- package/dest/node/examples/simple.rawtest.d.ts +0 -2
- package/dest/node/examples/simple.rawtest.d.ts.map +0 -1
- package/dest/node/examples/simple.rawtest.js +0 -30
- package/dest/node/examples/simple.test.d.ts +0 -2
- package/dest/node/examples/simple.test.d.ts.map +0 -1
- package/dest/node/examples/simple.test.js +0 -23
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +0 -38
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +0 -1
- package/dest/node-cjs/crs/node/ignition_files_crs.js +0 -69
- package/dest/node-cjs/examples/simple.rawtest.d.ts +0 -2
- package/dest/node-cjs/examples/simple.rawtest.d.ts.map +0 -1
- package/dest/node-cjs/examples/simple.rawtest.js +0 -33
- package/dest/node-cjs/examples/simple.test.d.ts +0 -2
- package/dest/node-cjs/examples/simple.test.d.ts.map +0 -1
- package/dest/node-cjs/examples/simple.test.js +0 -25
- package/src/crs/node/ignition_files_crs.ts +0 -74
- package/src/examples/simple.rawtest.ts +0 -38
- package/src/examples/simple.test.ts +0 -28
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Barretenberg } from './index.js';
|
|
2
2
|
import { RawBuffer } from '../types/raw_buffer.js';
|
|
3
3
|
import { decompressSync as gunzip } from 'fflate';
|
|
4
|
-
import { deflattenFields, flattenFieldsAsArray, reconstructHonkProof,
|
|
4
|
+
import { deflattenFields, flattenFieldsAsArray, reconstructHonkProof, splitHonkProof, PAIRING_POINTS_SIZE, } from '../proof/index.js';
|
|
5
5
|
import { Encoder } from 'msgpackr/pack';
|
|
6
6
|
export class AztecClientBackendError extends Error {
|
|
7
7
|
constructor(message) {
|
|
@@ -14,7 +14,6 @@ function parseBigEndianU32Array(buffer) {
|
|
|
14
14
|
const dv = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
|
|
15
15
|
let offset = 0;
|
|
16
16
|
const count = buffer.byteLength >>> 2; // default is entire buffer length / 4
|
|
17
|
-
console.log(buffer);
|
|
18
17
|
const out = new Array(count);
|
|
19
18
|
for (let i = 0; i < count; i++) {
|
|
20
19
|
out[i] = dv.getUint32(offset, false);
|
|
@@ -22,95 +21,6 @@ function parseBigEndianU32Array(buffer) {
|
|
|
22
21
|
}
|
|
23
22
|
return out;
|
|
24
23
|
}
|
|
25
|
-
export class UltraPlonkBackend {
|
|
26
|
-
constructor(acirBytecode, backendOptions = { threads: 1 }, circuitOptions = { recursive: false }) {
|
|
27
|
-
this.backendOptions = backendOptions;
|
|
28
|
-
this.circuitOptions = circuitOptions;
|
|
29
|
-
this.acirUncompressedBytecode = acirToUint8Array(acirBytecode);
|
|
30
|
-
}
|
|
31
|
-
/** @ignore */
|
|
32
|
-
async instantiate() {
|
|
33
|
-
if (!this.api) {
|
|
34
|
-
const api = await Barretenberg.new(this.backendOptions);
|
|
35
|
-
const honkRecursion = false;
|
|
36
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
37
|
-
const [_total, subgroupSize] = await api.acirGetCircuitSizes(this.acirUncompressedBytecode, this.circuitOptions.recursive, honkRecursion);
|
|
38
|
-
await api.initSRSForCircuitSize(subgroupSize);
|
|
39
|
-
this.acirComposer = await api.acirNewAcirComposer(subgroupSize);
|
|
40
|
-
await api.acirInitProvingKey(this.acirComposer, this.acirUncompressedBytecode, this.circuitOptions.recursive);
|
|
41
|
-
this.api = api;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
/** @description Generates a proof */
|
|
45
|
-
async generateProof(compressedWitness) {
|
|
46
|
-
await this.instantiate();
|
|
47
|
-
const proofWithPublicInputs = await this.api.acirCreateProof(this.acirComposer, this.acirUncompressedBytecode, this.circuitOptions.recursive, gunzip(compressedWitness));
|
|
48
|
-
// This is the number of bytes in a UltraPlonk proof
|
|
49
|
-
// minus the public inputs.
|
|
50
|
-
const numBytesInProofWithoutPublicInputs = 2144;
|
|
51
|
-
const splitIndex = proofWithPublicInputs.length - numBytesInProofWithoutPublicInputs;
|
|
52
|
-
const publicInputsConcatenated = proofWithPublicInputs.slice(0, splitIndex);
|
|
53
|
-
const proof = proofWithPublicInputs.slice(splitIndex);
|
|
54
|
-
const publicInputs = deflattenFields(publicInputsConcatenated);
|
|
55
|
-
return { proof, publicInputs };
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Generates artifacts that will be passed to a circuit that will verify this proof.
|
|
59
|
-
*
|
|
60
|
-
* Instead of passing the proof and verification key as a byte array, we pass them
|
|
61
|
-
* as fields which makes it cheaper to verify in a circuit.
|
|
62
|
-
*
|
|
63
|
-
* The proof that is passed here will have been created by passing the `recursive`
|
|
64
|
-
* parameter to a backend.
|
|
65
|
-
*
|
|
66
|
-
* The number of public inputs denotes how many public inputs are in the inner proof.
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* const artifacts = await backend.generateRecursiveProofArtifacts(proof, numOfPublicInputs);
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
async generateRecursiveProofArtifacts(proofData, numOfPublicInputs = 0) {
|
|
74
|
-
await this.instantiate();
|
|
75
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
76
|
-
const proofAsFields = (await this.api.acirSerializeProofIntoFields(this.acirComposer, proof, numOfPublicInputs)).slice(numOfPublicInputs);
|
|
77
|
-
// TODO: perhaps we should put this in the init function. Need to benchmark
|
|
78
|
-
// TODO how long it takes.
|
|
79
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
80
|
-
// Note: If you don't init verification key, `acirSerializeVerificationKeyIntoFields`` will just hang on serialization
|
|
81
|
-
const vk = await this.api.acirSerializeVerificationKeyIntoFields(this.acirComposer);
|
|
82
|
-
return {
|
|
83
|
-
proofAsFields: proofAsFields.map(p => p.toString()),
|
|
84
|
-
vkAsFields: vk[0].map(vk => vk.toString()),
|
|
85
|
-
vkHash: vk[1].toString(),
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
/** @description Verifies a proof */
|
|
89
|
-
async verifyProof(proofData) {
|
|
90
|
-
await this.instantiate();
|
|
91
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
92
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
93
|
-
return await this.api.acirVerifyProof(this.acirComposer, proof);
|
|
94
|
-
}
|
|
95
|
-
/** @description Returns the verification key */
|
|
96
|
-
async getVerificationKey() {
|
|
97
|
-
await this.instantiate();
|
|
98
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
99
|
-
return await this.api.acirGetVerificationKey(this.acirComposer);
|
|
100
|
-
}
|
|
101
|
-
/** @description Returns a solidity verifier */
|
|
102
|
-
async getSolidityVerifier() {
|
|
103
|
-
await this.instantiate();
|
|
104
|
-
await this.api.acirInitVerificationKey(this.acirComposer);
|
|
105
|
-
return await this.api.acirGetSolidityVerifier(this.acirComposer);
|
|
106
|
-
}
|
|
107
|
-
async destroy() {
|
|
108
|
-
if (!this.api) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
await this.api.destroy();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
24
|
export class UltraHonkBackend {
|
|
115
25
|
constructor(acirBytecode, backendOptions = { threads: 1 }, circuitOptions = { recursive: false }) {
|
|
116
26
|
this.backendOptions = backendOptions;
|
|
@@ -132,21 +42,25 @@ export class UltraHonkBackend {
|
|
|
132
42
|
await this.instantiate();
|
|
133
43
|
const proveUltraHonk = options?.keccak
|
|
134
44
|
? this.api.acirProveUltraKeccakHonk.bind(this.api)
|
|
135
|
-
: options?.
|
|
136
|
-
? this.api.
|
|
137
|
-
:
|
|
45
|
+
: options?.keccakZK
|
|
46
|
+
? this.api.acirProveUltraKeccakZKHonk.bind(this.api)
|
|
47
|
+
: options?.starknet
|
|
48
|
+
? this.api.acirProveUltraStarknetHonk.bind(this.api)
|
|
49
|
+
: this.api.acirProveUltraHonk.bind(this.api);
|
|
138
50
|
const proofWithPublicInputs = await proveUltraHonk(this.acirUncompressedBytecode, gunzip(compressedWitness));
|
|
139
51
|
// Write VK to get the number of public inputs
|
|
140
52
|
const writeVKUltraHonk = options?.keccak
|
|
141
53
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
142
|
-
: options?.
|
|
143
|
-
? this.api.
|
|
144
|
-
:
|
|
54
|
+
: options?.keccakZK
|
|
55
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
56
|
+
: options?.starknet
|
|
57
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
58
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
145
59
|
const vk = await writeVKUltraHonk(this.acirUncompressedBytecode);
|
|
146
60
|
const vkAsFields = await this.api.acirVkAsFieldsUltraHonk(new RawBuffer(vk));
|
|
147
61
|
// Item at index 1 in VK is the number of public inputs
|
|
148
62
|
const publicInputsSizeIndex = 1; // index into VK for numPublicInputs
|
|
149
|
-
const numPublicInputs = Number(vkAsFields[publicInputsSizeIndex].toString()) -
|
|
63
|
+
const numPublicInputs = Number(vkAsFields[publicInputsSizeIndex].toString()) - PAIRING_POINTS_SIZE;
|
|
150
64
|
const { proof, publicInputs: publicInputsBytes } = splitHonkProof(proofWithPublicInputs, numPublicInputs);
|
|
151
65
|
const publicInputs = deflattenFields(publicInputsBytes);
|
|
152
66
|
return { proof, publicInputs };
|
|
@@ -156,14 +70,18 @@ export class UltraHonkBackend {
|
|
|
156
70
|
const proof = reconstructHonkProof(flattenFieldsAsArray(proofData.publicInputs), proofData.proof);
|
|
157
71
|
const writeVkUltraHonk = options?.keccak
|
|
158
72
|
? this.api.acirWriteVkUltraKeccakHonk.bind(this.api)
|
|
159
|
-
: options?.
|
|
160
|
-
? this.api.
|
|
161
|
-
:
|
|
73
|
+
: options?.keccakZK
|
|
74
|
+
? this.api.acirWriteVkUltraKeccakZKHonk.bind(this.api)
|
|
75
|
+
: options?.starknet
|
|
76
|
+
? this.api.acirWriteVkUltraStarknetHonk.bind(this.api)
|
|
77
|
+
: this.api.acirWriteVkUltraHonk.bind(this.api);
|
|
162
78
|
const verifyUltraHonk = options?.keccak
|
|
163
79
|
? this.api.acirVerifyUltraKeccakHonk.bind(this.api)
|
|
164
|
-
: options?.
|
|
165
|
-
? this.api.
|
|
166
|
-
:
|
|
80
|
+
: options?.keccakZK
|
|
81
|
+
? this.api.acirVerifyUltraKeccakZKHonk.bind(this.api)
|
|
82
|
+
: options?.starknet
|
|
83
|
+
? this.api.acirVerifyUltraStarknetHonk.bind(this.api)
|
|
84
|
+
: this.api.acirVerifyUltraHonk.bind(this.api);
|
|
167
85
|
const vkBuf = await writeVkUltraHonk(this.acirUncompressedBytecode);
|
|
168
86
|
return await verifyUltraHonk(proof, new RawBuffer(vkBuf));
|
|
169
87
|
}
|
|
@@ -171,9 +89,11 @@ export class UltraHonkBackend {
|
|
|
171
89
|
await this.instantiate();
|
|
172
90
|
return options?.keccak
|
|
173
91
|
? await this.api.acirWriteVkUltraKeccakHonk(this.acirUncompressedBytecode)
|
|
174
|
-
: options?.
|
|
175
|
-
? await this.api.
|
|
176
|
-
:
|
|
92
|
+
: options?.keccakZK
|
|
93
|
+
? await this.api.acirWriteVkUltraKeccakZKHonk(this.acirUncompressedBytecode)
|
|
94
|
+
: options?.starknet
|
|
95
|
+
? await this.api.acirWriteVkUltraStarknetHonk(this.acirUncompressedBytecode)
|
|
96
|
+
: await this.api.acirWriteVkUltraHonk(this.acirUncompressedBytecode);
|
|
177
97
|
}
|
|
178
98
|
/** @description Returns a solidity verifier */
|
|
179
99
|
async getSolidityVerifier(vk) {
|
|
@@ -303,4 +223,4 @@ function base64Decode(input) {
|
|
|
303
223
|
throw new Error('No implementation found for base64 decoding.');
|
|
304
224
|
}
|
|
305
225
|
}
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFlBQVksRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xELE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBRXBCLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsY0FBYyxFQUNkLHlCQUF5QixHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7SUFDaEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFFRCw4Q0FBOEM7QUFDOUMsMkVBQTJFO0FBQzNFLFNBQVMsc0JBQXNCLENBQUMsTUFBa0I7SUFDaEQsTUFBTSxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3RSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLHNDQUFzQztJQUM3RSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBCLE1BQU0sR0FBRyxHQUFhLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FB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
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYXJyZXRlbmJlcmcvYmFja2VuZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFlBQVksRUFBa0IsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xELE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBRXBCLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsbUJBQW1CLEdBQ3BCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsS0FBSztJQUNoRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQUVELDhDQUE4QztBQUM5QywyRUFBMkU7QUFDM0UsU0FBUyxzQkFBc0IsQ0FBQyxNQUFrQjtJQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTdFLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsc0NBQXNDO0lBRTdFLE1BQU0sR0FBRyxHQUFhLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxD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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BarretenbergApi, BarretenbergApiSync } from '../barretenberg_api/index.js';
|
|
2
2
|
import { BarretenbergWasmMain, BarretenbergWasmMainWorker } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
|
|
3
3
|
export { BarretenbergVerifier } from './verifier.js';
|
|
4
|
-
export {
|
|
4
|
+
export { UltraHonkBackend, AztecClientBackend } from './backend.js';
|
|
5
5
|
export type BackendOptions = {
|
|
6
6
|
/** @description Number of threads to run the backend worker on */
|
|
7
7
|
threads?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAOxH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAOxH,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEpE,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,oCAAoC;IACpC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAI7C,OAAO,CAAC,MAAM;IAHhB,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO;IASP;;;;;OAKG;WACU,GAAG,CAAC,OAAO,GAAE,cAAmB;IAcvC,aAAa;IAIb,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzD,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5F,OAAO;IAKb,OAAO;CAGR;AAKD,qBAAa,gBAAiB,SAAQ,mBAAmB;IACvD,OAAO;mBAIc,GAAG;WAOX,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAwC;IAS/G,MAAM,CAAC,YAAY;IAOnB,OAAO;CAGR"}
|
|
@@ -8,7 +8,7 @@ import { Crs, GrumpkinCrs } from '../crs/index.js';
|
|
|
8
8
|
import { RawBuffer } from '../types/raw_buffer.js';
|
|
9
9
|
import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
|
|
10
10
|
export { BarretenbergVerifier } from './verifier.js';
|
|
11
|
-
export {
|
|
11
|
+
export { UltraHonkBackend, AztecClientBackend } from './backend.js';
|
|
12
12
|
/**
|
|
13
13
|
* The main class library consumers interact with.
|
|
14
14
|
* It extends the generated api, and provides a static constructor "new" to compose components.
|
|
@@ -63,7 +63,7 @@ export class Barretenberg extends BarretenbergApi {
|
|
|
63
63
|
return this.wasm;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
let
|
|
66
|
+
let barretenbergSyncSingletonPromise;
|
|
67
67
|
let barretenbergSyncSingleton;
|
|
68
68
|
export class BarretenbergSync extends BarretenbergApiSync {
|
|
69
69
|
constructor(wasm) {
|
|
@@ -76,10 +76,10 @@ export class BarretenbergSync extends BarretenbergApiSync {
|
|
|
76
76
|
return new BarretenbergSync(wasm);
|
|
77
77
|
}
|
|
78
78
|
static async initSingleton(wasmPath, logger = createDebug('bb.js:bb_wasm_sync')) {
|
|
79
|
-
if (!
|
|
80
|
-
|
|
79
|
+
if (!barretenbergSyncSingletonPromise) {
|
|
80
|
+
barretenbergSyncSingletonPromise = BarretenbergSync.new(wasmPath, logger);
|
|
81
81
|
}
|
|
82
|
-
barretenbergSyncSingleton = await
|
|
82
|
+
barretenbergSyncSingleton = await barretenbergSyncSingletonPromise;
|
|
83
83
|
return barretenbergSyncSingleton;
|
|
84
84
|
}
|
|
85
85
|
static getSingleton() {
|
|
@@ -92,4 +92,4 @@ export class BarretenbergSync extends BarretenbergApiSync {
|
|
|
92
92
|
return this.wasm;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxvQkFBb0IsRUFBOEIsTUFBTSxzREFBc0QsQ0FBQztBQUN4SCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLFdBQVcsTUFBTSxPQUFPLENBQUM7QUFDaEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQXdCcEU7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBRy9DLFlBQ1UsTUFBVyxFQUNuQixJQUFnQyxFQUNoQyxPQUF1QjtRQUV2QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFKSixXQUFNLEdBQU4sTUFBTSxDQUFLO1FBS25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQTBCLEVBQUU7UUFDM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0Is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
|
|
@@ -8,8 +8,6 @@ export declare class BarretenbergVerifier {
|
|
|
8
8
|
/** @ignore */
|
|
9
9
|
instantiate(): Promise<void>;
|
|
10
10
|
/** @description Verifies a proof */
|
|
11
|
-
verifyUltraPlonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean>;
|
|
12
|
-
/** @description Verifies a proof */
|
|
13
11
|
verifyUltraHonkProof(proofData: ProofData, verificationKey: Uint8Array): Promise<boolean>;
|
|
14
12
|
destroy(): Promise<void>;
|
|
15
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAwB,SAAS,
|
|
1
|
+
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../src/barretenberg/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAwB,SAAS,EAAwB,MAAM,mBAAmB,CAAC;AAI1F,qBAAa,oBAAoB;IAUnB,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,GAAG,CAAgB;IAE3B,OAAO,CAAC,YAAY,CAAM;gBAEN,OAAO,GAAE,cAA+B;IAE5D,cAAc;IACR,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,oCAAoC;IAC9B,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAOzF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Barretenberg } from './index.js';
|
|
2
2
|
import { RawBuffer } from '../types/raw_buffer.js';
|
|
3
|
-
import { flattenFieldsAsArray, reconstructHonkProof
|
|
3
|
+
import { flattenFieldsAsArray, reconstructHonkProof } from '../proof/index.js';
|
|
4
4
|
// TODO: once UP is removed we can just roll this into the bas `Barretenberg` class.
|
|
5
5
|
export class BarretenbergVerifier {
|
|
6
6
|
constructor(options = { threads: 1 }) {
|
|
@@ -11,20 +11,10 @@ export class BarretenbergVerifier {
|
|
|
11
11
|
if (!this.api) {
|
|
12
12
|
const api = await Barretenberg.new(this.options);
|
|
13
13
|
await api.initSRSForCircuitSize(0);
|
|
14
|
-
this.acirComposer = await api.acirNewAcirComposer(0);
|
|
15
14
|
this.api = api;
|
|
16
15
|
}
|
|
17
16
|
}
|
|
18
17
|
/** @description Verifies a proof */
|
|
19
|
-
async verifyUltraPlonkProof(proofData, verificationKey) {
|
|
20
|
-
await this.instantiate();
|
|
21
|
-
// The verifier can be used for a variety of ACIR programs so we should not assume that it
|
|
22
|
-
// is preloaded with the correct verification key.
|
|
23
|
-
await this.api.acirLoadVerificationKey(this.acirComposer, new RawBuffer(verificationKey));
|
|
24
|
-
const proof = reconstructUltraPlonkProof(proofData);
|
|
25
|
-
return await this.api.acirVerifyProof(this.acirComposer, proof);
|
|
26
|
-
}
|
|
27
|
-
/** @description Verifies a proof */
|
|
28
18
|
async verifyUltraHonkProof(proofData, verificationKey) {
|
|
29
19
|
await this.instantiate();
|
|
30
20
|
const proof = reconstructHonkProof(flattenFieldsAsArray(proofData.publicInputs), proofData.proof);
|
|
@@ -37,4 +27,4 @@ export class BarretenbergVerifier {
|
|
|
37
27
|
await this.api.destroy();
|
|
38
28
|
}
|
|
39
29
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFycmV0ZW5iZXJnL3ZlcmlmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQWEsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxRixvRkFBb0Y7QUFFcEYsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFvQixVQUEwQixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUU7UUFBeEMsWUFBTyxHQUFQLE9BQU8sQ0FBaUM7SUFBRyxDQUFDO0lBRWhFLGNBQWM7SUFDZCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELE1BQU0sR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5DLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxTQUFvQixFQUFFLGVBQTJCO1FBQzFFLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXpCLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEcsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNkLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRiJ9
|
|
@@ -17,14 +17,9 @@ export declare class BarretenbergApi {
|
|
|
17
17
|
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Promise<Uint8Array>;
|
|
18
18
|
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): Promise<void>;
|
|
19
19
|
srsInitGrumpkinSrs(pointsBuf: Uint8Array, numPoints: number): Promise<void>;
|
|
20
|
-
examplesSimpleCreateAndVerifyProof(): Promise<boolean>;
|
|
21
20
|
testThreads(threads: number, iterations: number): Promise<number>;
|
|
22
21
|
commonInitSlabAllocator(circuitSize: number): Promise<void>;
|
|
23
22
|
acirGetCircuitSizes(constraintSystemBuf: Uint8Array, recursive: boolean, honkRecursion: boolean): Promise<[number, number]>;
|
|
24
|
-
acirNewAcirComposer(sizeHint: number): Promise<Ptr>;
|
|
25
|
-
acirDeleteAcirComposer(acirComposerPtr: Ptr): Promise<void>;
|
|
26
|
-
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean): Promise<void>;
|
|
27
|
-
acirCreateProof(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean, witnessBuf: Uint8Array): Promise<Uint8Array>;
|
|
28
23
|
acirProveAndVerifyUltraHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): Promise<boolean>;
|
|
29
24
|
acirProveAndVerifyMegaHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): Promise<boolean>;
|
|
30
25
|
acirProveAztecClient(ivcInputsBuf: Uint8Array): Promise<[Uint8Array, Uint8Array]>;
|
|
@@ -40,12 +35,15 @@ export declare class BarretenbergApi {
|
|
|
40
35
|
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): Promise<[Fr[], Fr]>;
|
|
41
36
|
acirProveUltraHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Promise<Uint8Array>;
|
|
42
37
|
acirProveUltraKeccakHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Promise<Uint8Array>;
|
|
38
|
+
acirProveUltraKeccakZKHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Promise<Uint8Array>;
|
|
43
39
|
acirProveUltraStarknetHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Promise<Uint8Array>;
|
|
44
40
|
acirVerifyUltraHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean>;
|
|
45
41
|
acirVerifyUltraKeccakHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean>;
|
|
42
|
+
acirVerifyUltraKeccakZKHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean>;
|
|
46
43
|
acirVerifyUltraStarknetHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): Promise<boolean>;
|
|
47
44
|
acirWriteVkUltraHonk(acirVec: Uint8Array): Promise<Uint8Array>;
|
|
48
45
|
acirWriteVkUltraKeccakHonk(acirVec: Uint8Array): Promise<Uint8Array>;
|
|
46
|
+
acirWriteVkUltraKeccakZKHonk(acirVec: Uint8Array): Promise<Uint8Array>;
|
|
49
47
|
acirWriteVkUltraStarknetHonk(acirVec: Uint8Array): Promise<Uint8Array>;
|
|
50
48
|
acirProofAsFieldsUltraHonk(proofBuf: Uint8Array): Promise<Fr[]>;
|
|
51
49
|
acirVkAsFieldsUltraHonk(vkBuf: Uint8Array): Promise<Fr[]>;
|
|
@@ -69,14 +67,9 @@ export declare class BarretenbergApiSync {
|
|
|
69
67
|
aesDecryptBufferCbc(input: Uint8Array, iv: Uint8Array, key: Uint8Array, length: number): Uint8Array;
|
|
70
68
|
srsInitSrs(pointsBuf: Uint8Array, numPoints: number, g2PointBuf: Uint8Array): void;
|
|
71
69
|
srsInitGrumpkinSrs(pointsBuf: Uint8Array, numPoints: number): void;
|
|
72
|
-
examplesSimpleCreateAndVerifyProof(): boolean;
|
|
73
70
|
testThreads(threads: number, iterations: number): number;
|
|
74
71
|
commonInitSlabAllocator(circuitSize: number): void;
|
|
75
72
|
acirGetCircuitSizes(constraintSystemBuf: Uint8Array, recursive: boolean, honkRecursion: boolean): [number, number];
|
|
76
|
-
acirNewAcirComposer(sizeHint: number): Ptr;
|
|
77
|
-
acirDeleteAcirComposer(acirComposerPtr: Ptr): void;
|
|
78
|
-
acirInitProvingKey(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean): void;
|
|
79
|
-
acirCreateProof(acirComposerPtr: Ptr, constraintSystemBuf: Uint8Array, recursive: boolean, witnessBuf: Uint8Array): Uint8Array;
|
|
80
73
|
acirProveAndVerifyUltraHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): boolean;
|
|
81
74
|
acirProveAndVerifyMegaHonk(constraintSystemBuf: Uint8Array, witnessBuf: Uint8Array): boolean;
|
|
82
75
|
acirProveAztecClient(ivcInputsBuf: Uint8Array): [Uint8Array, Uint8Array];
|
|
@@ -92,10 +85,13 @@ export declare class BarretenbergApiSync {
|
|
|
92
85
|
acirSerializeVerificationKeyIntoFields(acirComposerPtr: Ptr): [Fr[], Fr];
|
|
93
86
|
acirProveUltraHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Uint8Array;
|
|
94
87
|
acirProveUltraKeccakHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Uint8Array;
|
|
88
|
+
acirProveUltraKeccakZKHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Uint8Array;
|
|
89
|
+
acirProveUltraKeccakZkHonk(acirVec: Uint8Array, witnessVec: Uint8Array): Uint8Array;
|
|
95
90
|
acirVerifyUltraHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): boolean;
|
|
96
|
-
|
|
91
|
+
acirVerifyUltraKeccakZKHonk(proofBuf: Uint8Array, vkBuf: Uint8Array): boolean;
|
|
97
92
|
acirWriteVkUltraHonk(acirVec: Uint8Array): Uint8Array;
|
|
98
93
|
acirWriteVkUltraKeccakHonk(acirVec: Uint8Array): Uint8Array;
|
|
94
|
+
acirWriteVkUltraKeccakZKHonk(acirVec: Uint8Array): Uint8Array;
|
|
99
95
|
acirProofAsFieldsUltraHonk(proofBuf: Uint8Array): Fr[];
|
|
100
96
|
acirVkAsFieldsUltraHonk(vkBuf: Uint8Array): Fr[];
|
|
101
97
|
acirVkAsFieldsMegaHonk(vkBuf: Uint8Array): Fr[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_api/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;AAUxH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7D,qBAAa,eAAe;IACd,SAAS,CAAC,IAAI,EAAE,0BAA0B;gBAAhC,IAAI,EAAE,0BAA0B;IAEhD,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAYpE,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAYhE,cAAc,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAYlE,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAY3E,aAAa,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAY9C,eAAe,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAYhD,oBAAoB,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAYvD,uBAAuB,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAYxD,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAY5C,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC;IAY7C,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAY5G,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAY5G,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3F,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3E,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/barretenberg_api/index.ts"],"names":[],"mappings":"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"}
|