@aztec/bb-prover 0.77.0-testnet-ignition.17 → 0.77.0-testnet-ignition.21
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/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +4 -6
- package/dest/bb/execute.d.ts +3 -2
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +4 -4
- package/dest/prover/bb_prover.js +1 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts +1 -0
- package/dest/wasm/bb_wasm_private_kernel_prover.d.ts.map +1 -1
- package/dest/wasm/bb_wasm_private_kernel_prover.js +12 -0
- package/package.json +15 -15
- package/src/avm_proving_tests/avm_proving_tester.ts +4 -6
- package/src/bb/execute.ts +6 -5
- package/src/prover/bb_prover.ts +1 -1
- package/src/wasm/bb_wasm_private_kernel_prover.ts +13 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"avm_proving_tester.d.ts","sourceRoot":"","sources":["../../src/avm_proving_tests/avm_proving_tester.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AASjF,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,EAMf,MAAM,kBAAkB,CAAC;AAK1B,qBAAa,gBAAiB,SAAQ,wBAAwB;IAE1D,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,gBAAgB;gBADhB,kBAAkB,EAAE,MAAM,EAC1B,gBAAgB,EAAE,OAAO,EACjC,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB;WAKlB,MAAM,CAAC,gBAAgB,GAAE,OAAe;IASxD,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAe5D,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgBvC,cAAc,CACzB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,QAAQ,eAAS;IAWN,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,CAAC,EAAE,OAAO;CAWtF;AAED,qBAAa,kBAAmB,SAAQ,wBAAwB;IAE5D,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,MAAM,EAClC,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,wBAAwB,EAC5C,WAAW,EAAE,yBAAyB;WAKlB,MAAM;IAStB,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU9D,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAezC,gBAAgB,CAC3B,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,YAAY,EAAE,gBAAgB,GAAG,SAAS,EAC1C,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,QAAQ,eAAS;CAYpB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PublicTxSimulationTester } from '@aztec/simulator/public/fixtures';
|
|
2
2
|
import { SimpleContractDataSource, WorldStateDB } from '@aztec/simulator/server';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import { makeAvmCircuitInputs } from '@aztec/stdlib/testing';
|
|
4
5
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
5
6
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
6
7
|
import fs from 'node:fs/promises';
|
|
@@ -87,13 +88,10 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
87
88
|
return proofRes;
|
|
88
89
|
}
|
|
89
90
|
async verifyV2(proofRes) {
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
const publicInputs = {
|
|
93
|
-
dummy: []
|
|
94
|
-
};
|
|
91
|
+
// TODO: Placeholder for now. They get ignored in C++.
|
|
92
|
+
const inputs = await makeAvmCircuitInputs();
|
|
95
93
|
const rawVkPath = path.join(proofRes.vkPath, 'vk');
|
|
96
|
-
return await verifyAvmProofV2(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, publicInputs, rawVkPath, this.logger);
|
|
94
|
+
return await verifyAvmProofV2(BB_PATH, this.bbWorkingDirectory, proofRes.proofPath, inputs.publicInputs, rawVkPath, this.logger);
|
|
97
95
|
}
|
|
98
96
|
async simProveVerifyV2(sender, setupCalls, appCalls, teardownCall, expectRevert, feePayer = sender) {
|
|
99
97
|
const simRes = await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer);
|
package/dest/bb/execute.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
3
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
4
|
-
import {
|
|
4
|
+
import type { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
5
5
|
import type { UltraHonkFlavor } from '../honk.js';
|
|
6
6
|
export declare const VK_FILENAME = "vk";
|
|
7
7
|
export declare const VK_FIELDS_FILENAME = "vk_fields.json";
|
|
8
8
|
export declare const PROOF_FILENAME = "proof";
|
|
9
9
|
export declare const PROOF_FIELDS_FILENAME = "proof_fields.json";
|
|
10
|
+
export declare const AVM_INPUTS_FILENAME = "avm_inputs.bin";
|
|
10
11
|
export declare const AVM_BYTECODE_FILENAME = "avm_bytecode.bin";
|
|
11
12
|
export declare const AVM_PUBLIC_INPUTS_FILENAME = "avm_public_inputs.bin";
|
|
12
13
|
export declare const AVM_HINTS_FILENAME = "avm_hints.bin";
|
|
@@ -114,7 +115,7 @@ export declare function verifyProof(pathToBB: string, proofFullPath: string, ver
|
|
|
114
115
|
* @returns An object containing a result indication and duration taken
|
|
115
116
|
*/
|
|
116
117
|
export declare function verifyAvmProof(pathToBB: string, proofFullPath: string, verificationKeyPath: string, logger: Logger): Promise<BBFailure | BBSuccess>;
|
|
117
|
-
export declare function verifyAvmProofV2(pathToBB: string, workingDirectory: string, proofFullPath: string, publicInputs:
|
|
118
|
+
export declare function verifyAvmProofV2(pathToBB: string, workingDirectory: string, proofFullPath: string, publicInputs: AvmCircuitPublicInputs, verificationKeyPath: string, logger: Logger): Promise<BBFailure | BBSuccess>;
|
|
118
119
|
/**
|
|
119
120
|
* Verifies a ClientIvcProof
|
|
120
121
|
* TODO(#7370) The verification keys should be supplied separately
|
package/dest/bb/execute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/bb/execute.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/bb/execute.ts"],"names":[],"mappings":"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"}
|
package/dest/bb/execute.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
2
|
import { Timer } from '@aztec/foundation/timer';
|
|
3
|
-
import { serializeWithMessagePack } from '@aztec/stdlib/avm';
|
|
4
3
|
import * as proc from 'child_process';
|
|
5
4
|
import { promises as fs } from 'fs';
|
|
6
5
|
import { basename, dirname, join } from 'path';
|
|
@@ -9,6 +8,7 @@ export const VK_FILENAME = 'vk';
|
|
|
9
8
|
export const VK_FIELDS_FILENAME = 'vk_fields.json';
|
|
10
9
|
export const PROOF_FILENAME = 'proof';
|
|
11
10
|
export const PROOF_FIELDS_FILENAME = 'proof_fields.json';
|
|
11
|
+
export const AVM_INPUTS_FILENAME = 'avm_inputs.bin';
|
|
12
12
|
export const AVM_BYTECODE_FILENAME = 'avm_bytecode.bin';
|
|
13
13
|
export const AVM_PUBLIC_INPUTS_FILENAME = 'avm_public_inputs.bin';
|
|
14
14
|
export const AVM_HINTS_FILENAME = 'avm_hints.bin';
|
|
@@ -343,10 +343,10 @@ function getArgs(flavor) {
|
|
|
343
343
|
reason: `Failed to find bb binary at ${pathToBB}`
|
|
344
344
|
};
|
|
345
345
|
}
|
|
346
|
-
const inputsBuffer = input.
|
|
346
|
+
const inputsBuffer = input.serializeWithMessagePack();
|
|
347
347
|
try {
|
|
348
348
|
// Write the inputs to the working directory.
|
|
349
|
-
const avmInputsPath = join(workingDirectory,
|
|
349
|
+
const avmInputsPath = join(workingDirectory, AVM_INPUTS_FILENAME);
|
|
350
350
|
await fs.writeFile(avmInputsPath, inputsBuffer);
|
|
351
351
|
if (!await filePresent(avmInputsPath)) {
|
|
352
352
|
return {
|
|
@@ -496,7 +496,7 @@ function getArgs(flavor) {
|
|
|
496
496
|
return await verifyProofInternal(pathToBB, proofFullPath, verificationKeyPath, 'avm_verify', logger);
|
|
497
497
|
}
|
|
498
498
|
export async function verifyAvmProofV2(pathToBB, workingDirectory, proofFullPath, publicInputs, verificationKeyPath, logger) {
|
|
499
|
-
const inputsBuffer = serializeWithMessagePack(
|
|
499
|
+
const inputsBuffer = publicInputs.serializeWithMessagePack();
|
|
500
500
|
// Write the inputs to the working directory.
|
|
501
501
|
const filePresent = async (file)=>await fs.access(file, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
502
502
|
const avmInputsPath = join(workingDirectory, 'avm_public_inputs.bin');
|
package/dest/prover/bb_prover.js
CHANGED
|
@@ -269,7 +269,7 @@ const SERVER_CIRCUIT_RECURSIVE = true;
|
|
|
269
269
|
duration: provingResult.durationMs,
|
|
270
270
|
proofSize: avmProof.binaryProof.buffer.length,
|
|
271
271
|
eventName: 'circuit-proving',
|
|
272
|
-
inputSize: input.
|
|
272
|
+
inputSize: input.serializeWithMessagePack().length,
|
|
273
273
|
circuitSize: verificationKey.circuitSize,
|
|
274
274
|
numPublicInputs: verificationKey.numPublicInputs
|
|
275
275
|
});
|
|
@@ -12,5 +12,6 @@ export declare abstract class BBWASMPrivateKernelProver extends BBPrivateKernelP
|
|
|
12
12
|
protected log: import("@aztec/foundation/log").Logger;
|
|
13
13
|
constructor(artifactProvider: ArtifactProvider, simulationProvider: SimulationProvider, threads?: number, log?: import("@aztec/foundation/log").Logger);
|
|
14
14
|
createClientIvcProof(acirs: Buffer[], witnessStack: WitnessMap[]): Promise<ClientIvcProof>;
|
|
15
|
+
computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number>;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=bb_wasm_private_kernel_prover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_wasm_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/wasm/bb_wasm_private_kernel_prover.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,8BAAsB,yBAA0B,SAAQ,qBAAqB;cAEtD,gBAAgB,EAAE,gBAAgB;cAClC,kBAAkB,EAAE,kBAAkB;IACzD,OAAO,CAAC,OAAO;cACI,GAAG;gBAHH,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACjD,OAAO,GAAE,MAAU,EACR,GAAG,yCAAiC;IAKnC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"bb_wasm_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../src/wasm/bb_wasm_private_kernel_prover.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,8BAAsB,yBAA0B,SAAQ,qBAAqB;cAEtD,gBAAgB,EAAE,gBAAgB;cAClC,kBAAkB,EAAE,kBAAkB;IACzD,OAAO,CAAC,OAAO;cACI,GAAG;gBAHH,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACjD,OAAO,GAAE,MAAU,EACR,GAAG,yCAAiC;IAKnC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAmB1F,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAY3G"}
|
|
@@ -31,4 +31,16 @@ export class BBWASMPrivateKernelProver extends BBPrivateKernelProver {
|
|
|
31
31
|
});
|
|
32
32
|
return new ClientIvcProof(Buffer.from(proof), Buffer.from(vk));
|
|
33
33
|
}
|
|
34
|
+
async computeGateCountForCircuit(_bytecode, _circuitName) {
|
|
35
|
+
const backend = new AztecClientBackend([
|
|
36
|
+
ungzip(_bytecode)
|
|
37
|
+
], {
|
|
38
|
+
threads: this.threads,
|
|
39
|
+
logger: this.log.verbose,
|
|
40
|
+
wasmPath: process.env.BB_WASM_PATH
|
|
41
|
+
});
|
|
42
|
+
const gateCount = await backend.gates();
|
|
43
|
+
await backend.destroy();
|
|
44
|
+
return gateCount[0];
|
|
45
|
+
}
|
|
34
46
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "0.77.0-testnet-ignition.
|
|
3
|
+
"version": "0.77.0-testnet-ignition.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,27 +67,27 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/bb.js": "0.77.0-testnet-ignition.
|
|
71
|
-
"@aztec/constants": "0.77.0-testnet-ignition.
|
|
72
|
-
"@aztec/foundation": "0.77.0-testnet-ignition.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.
|
|
74
|
-
"@aztec/simulator": "0.77.0-testnet-ignition.
|
|
75
|
-
"@aztec/stdlib": "0.77.0-testnet-ignition.
|
|
76
|
-
"@aztec/telemetry-client": "0.77.0-testnet-ignition.
|
|
77
|
-
"@aztec/world-state": "0.77.0-testnet-ignition.
|
|
70
|
+
"@aztec/bb.js": "0.77.0-testnet-ignition.21",
|
|
71
|
+
"@aztec/constants": "0.77.0-testnet-ignition.21",
|
|
72
|
+
"@aztec/foundation": "0.77.0-testnet-ignition.21",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "0.77.0-testnet-ignition.21",
|
|
74
|
+
"@aztec/simulator": "0.77.0-testnet-ignition.21",
|
|
75
|
+
"@aztec/stdlib": "0.77.0-testnet-ignition.21",
|
|
76
|
+
"@aztec/telemetry-client": "0.77.0-testnet-ignition.21",
|
|
77
|
+
"@aztec/world-state": "0.77.0-testnet-ignition.21",
|
|
78
78
|
"@msgpack/msgpack": "^3.0.0-beta2",
|
|
79
79
|
"commander": "^12.1.0",
|
|
80
80
|
"pako": "^2.1.0",
|
|
81
81
|
"source-map-support": "^0.5.21",
|
|
82
82
|
"tslib": "^2.4.0",
|
|
83
|
-
"@aztec/noir-noirc_abi": "0.77.0-testnet-ignition.
|
|
84
|
-
"@aztec/noir-types": "0.77.0-testnet-ignition.
|
|
83
|
+
"@aztec/noir-noirc_abi": "0.77.0-testnet-ignition.21",
|
|
84
|
+
"@aztec/noir-types": "0.77.0-testnet-ignition.21"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
|
-
"@aztec/ethereum": "
|
|
88
|
-
"@aztec/kv-store": "
|
|
89
|
-
"@aztec/noir-contracts.js": "
|
|
90
|
-
"@aztec/protocol-contracts": "
|
|
87
|
+
"@aztec/ethereum": "0.77.0-testnet-ignition.21",
|
|
88
|
+
"@aztec/kv-store": "0.77.0-testnet-ignition.21",
|
|
89
|
+
"@aztec/noir-contracts.js": "0.77.0-testnet-ignition.21",
|
|
90
|
+
"@aztec/protocol-contracts": "0.77.0-testnet-ignition.21",
|
|
91
91
|
"@jest/globals": "^29.5.0",
|
|
92
92
|
"@types/jest": "^29.5.0",
|
|
93
93
|
"@types/memdown": "^3.0.0",
|
|
@@ -3,6 +3,7 @@ import { SimpleContractDataSource, WorldStateDB } from '@aztec/simulator/server'
|
|
|
3
3
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import { makeAvmCircuitInputs } from '@aztec/stdlib/testing';
|
|
6
7
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
7
8
|
import { NativeWorldStateService } from '@aztec/world-state';
|
|
8
9
|
|
|
@@ -134,18 +135,15 @@ export class AvmProvingTesterV2 extends PublicTxSimulationTester {
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
async verifyV2(proofRes: BBSuccess): Promise<BBResult> {
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
const publicInputs = {
|
|
140
|
-
dummy: [] as any[],
|
|
141
|
-
};
|
|
138
|
+
// TODO: Placeholder for now. They get ignored in C++.
|
|
139
|
+
const inputs = await makeAvmCircuitInputs();
|
|
142
140
|
|
|
143
141
|
const rawVkPath = path.join(proofRes.vkPath!, 'vk');
|
|
144
142
|
return await verifyAvmProofV2(
|
|
145
143
|
BB_PATH,
|
|
146
144
|
this.bbWorkingDirectory,
|
|
147
145
|
proofRes.proofPath!,
|
|
148
|
-
publicInputs,
|
|
146
|
+
inputs.publicInputs,
|
|
149
147
|
rawVkPath,
|
|
150
148
|
this.logger,
|
|
151
149
|
);
|
package/src/bb/execute.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
2
2
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
|
-
import {
|
|
4
|
+
import type { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
5
5
|
|
|
6
6
|
import * as proc from 'child_process';
|
|
7
7
|
import { promises as fs } from 'fs';
|
|
@@ -14,6 +14,7 @@ export const VK_FILENAME = 'vk';
|
|
|
14
14
|
export const VK_FIELDS_FILENAME = 'vk_fields.json';
|
|
15
15
|
export const PROOF_FILENAME = 'proof';
|
|
16
16
|
export const PROOF_FIELDS_FILENAME = 'proof_fields.json';
|
|
17
|
+
export const AVM_INPUTS_FILENAME = 'avm_inputs.bin';
|
|
17
18
|
export const AVM_BYTECODE_FILENAME = 'avm_bytecode.bin';
|
|
18
19
|
export const AVM_PUBLIC_INPUTS_FILENAME = 'avm_public_inputs.bin';
|
|
19
20
|
export const AVM_HINTS_FILENAME = 'avm_hints.bin';
|
|
@@ -380,11 +381,11 @@ export async function generateAvmProofV2(
|
|
|
380
381
|
return { status: BB_RESULT.FAILURE, reason: `Failed to find bb binary at ${pathToBB}` };
|
|
381
382
|
}
|
|
382
383
|
|
|
383
|
-
const inputsBuffer = input.
|
|
384
|
+
const inputsBuffer = input.serializeWithMessagePack();
|
|
384
385
|
|
|
385
386
|
try {
|
|
386
387
|
// Write the inputs to the working directory.
|
|
387
|
-
const avmInputsPath = join(workingDirectory,
|
|
388
|
+
const avmInputsPath = join(workingDirectory, AVM_INPUTS_FILENAME);
|
|
388
389
|
await fs.writeFile(avmInputsPath, inputsBuffer);
|
|
389
390
|
if (!(await filePresent(avmInputsPath))) {
|
|
390
391
|
return { status: BB_RESULT.FAILURE, reason: `Could not write avm inputs to ${avmInputsPath}` };
|
|
@@ -559,11 +560,11 @@ export async function verifyAvmProofV2(
|
|
|
559
560
|
pathToBB: string,
|
|
560
561
|
workingDirectory: string,
|
|
561
562
|
proofFullPath: string,
|
|
562
|
-
publicInputs:
|
|
563
|
+
publicInputs: AvmCircuitPublicInputs,
|
|
563
564
|
verificationKeyPath: string,
|
|
564
565
|
logger: Logger,
|
|
565
566
|
): Promise<BBFailure | BBSuccess> {
|
|
566
|
-
const inputsBuffer = serializeWithMessagePack(
|
|
567
|
+
const inputsBuffer = publicInputs.serializeWithMessagePack();
|
|
567
568
|
|
|
568
569
|
// Write the inputs to the working directory.
|
|
569
570
|
const filePresent = async (file: string) =>
|
package/src/prover/bb_prover.ts
CHANGED
|
@@ -556,7 +556,7 @@ export class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
556
556
|
duration: provingResult.durationMs,
|
|
557
557
|
proofSize: avmProof.binaryProof.buffer.length,
|
|
558
558
|
eventName: 'circuit-proving',
|
|
559
|
-
inputSize: input.
|
|
559
|
+
inputSize: input.serializeWithMessagePack().length,
|
|
560
560
|
circuitSize: verificationKey.circuitSize, // FIX: wrong in VK
|
|
561
561
|
numPublicInputs: verificationKey.numPublicInputs, // FIX: wrong in VK
|
|
562
562
|
} satisfies CircuitProvingStats,
|
|
@@ -39,4 +39,17 @@ export abstract class BBWASMPrivateKernelProver extends BBPrivateKernelProver {
|
|
|
39
39
|
});
|
|
40
40
|
return new ClientIvcProof(Buffer.from(proof), Buffer.from(vk));
|
|
41
41
|
}
|
|
42
|
+
|
|
43
|
+
public override async computeGateCountForCircuit(_bytecode: Buffer, _circuitName: string): Promise<number> {
|
|
44
|
+
const backend = new AztecClientBackend([ungzip(_bytecode)], {
|
|
45
|
+
threads: this.threads,
|
|
46
|
+
logger: this.log.verbose,
|
|
47
|
+
wasmPath: process.env.BB_WASM_PATH,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const gateCount = await backend.gates();
|
|
51
|
+
await backend.destroy();
|
|
52
|
+
|
|
53
|
+
return gateCount[0];
|
|
54
|
+
}
|
|
42
55
|
}
|