@aztec/prover-client 0.57.0 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dest/config.d.ts +4 -5
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +11 -2
  4. package/dest/mocks/fixtures.d.ts +6 -6
  5. package/dest/mocks/fixtures.d.ts.map +1 -1
  6. package/dest/mocks/fixtures.js +8 -4
  7. package/dest/mocks/test_context.d.ts +5 -5
  8. package/dest/mocks/test_context.d.ts.map +1 -1
  9. package/dest/mocks/test_context.js +9 -12
  10. package/dest/orchestrator/block-building-helpers.d.ts +12 -12
  11. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  12. package/dest/orchestrator/block-building-helpers.js +4 -2
  13. package/dest/orchestrator/block-proving-state.d.ts +1 -0
  14. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  15. package/dest/orchestrator/block-proving-state.js +2 -1
  16. package/dest/orchestrator/orchestrator.d.ts +4 -5
  17. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  18. package/dest/orchestrator/orchestrator.js +35 -16
  19. package/dest/prover-agent/memory-proving-queue.d.ts +4 -7
  20. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  21. package/dest/prover-agent/rpc.d.ts.map +1 -1
  22. package/dest/prover-agent/rpc.js +2 -4
  23. package/dest/test/mock_prover.d.ts +7 -13
  24. package/dest/test/mock_prover.d.ts.map +1 -1
  25. package/dest/test/mock_prover.js +16 -22
  26. package/dest/tx-prover/tx-prover.d.ts +2 -3
  27. package/dest/tx-prover/tx-prover.d.ts.map +1 -1
  28. package/dest/tx-prover/tx-prover.js +1 -1
  29. package/package.json +11 -10
  30. package/src/config.ts +20 -11
  31. package/src/mocks/fixtures.ts +21 -7
  32. package/src/mocks/test_context.ts +19 -15
  33. package/src/orchestrator/block-building-helpers.ts +21 -12
  34. package/src/orchestrator/block-proving-state.ts +2 -0
  35. package/src/orchestrator/orchestrator.ts +45 -16
  36. package/src/prover-agent/memory-proving-queue.ts +4 -4
  37. package/src/prover-agent/rpc.ts +0 -3
  38. package/src/test/mock_prover.ts +24 -26
  39. package/src/tx-prover/tx-prover.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAW5B,qBAAa,UAAW,YAAW,mBAAmB;;IAGpD,WAAW;;;;IASX,kBAAkB;IAIlB,kBAAkB;IAIlB,kBAAkB;IAUlB,mBAAmB,IAAI,OAAO,CAAC,6BAA6B,CAAC,6BAA6B,CAAC,CAAC;IAU5F,wBAAwB;IAUxB,4BAA4B,IAAI,OAAO,CAAC,6BAA6B,CAAC,iCAAiC,CAAC,CAAC;IAUzG,uBAAuB,IAAI,OAAO,CAAC,6BAA6B,CAAC,iCAAiC,CAAC,CAAC;IAUpG,0BAA0B,IAAI,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAU/F,iBAAiB,IAAI,OAAO,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;IAUjF,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;IAU1F,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,CAAC;IAUpG,kBAAkB,IAAI,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAUvF,kBAAkB,IAAI,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAUpF,YAAY,IAAI,OAAO,CAAC;QACtB,MAAM,EAAE,mBAAmB,CAAC;QAC5B,SAAS,EAAE,cAAc,CAAC,OAAO,sBAAsB,CAAC,CAAC;KAC1D,CAAC;CAMH"}
1
+ {"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EAEpC,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,KAAK,qBAAqB,EAI3B,MAAM,oBAAoB,CAAC;AAW5B,qBAAa,UAAW,YAAW,mBAAmB;;IAGpD,WAAW;IASX,kBAAkB;IAIlB,kBAAkB;IAIlB,kBAAkB;IAUlB,mBAAmB,IAAI,OAAO,CAAC,6BAA6B,CAAC,6BAA6B,CAAC,CAAC;IAU5F,wBAAwB;IAUxB,4BAA4B,IAAI,OAAO,CAAC,6BAA6B,CAAC,iCAAiC,CAAC,CAAC;IAUzG,uBAAuB,IAAI,OAAO,CAAC,6BAA6B,CAAC,iCAAiC,CAAC,CAAC;IAUpG,0BAA0B,IAAI,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAU/F,iBAAiB,IAAI,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAUtF,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;IAU1F,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,CAAC;IAUpG,kBAAkB,IAAI,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAUvF,kBAAkB,IAAI,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAUpF,YAAY,IAAI,OAAO,CAAC,uBAAuB,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;CAK3F"}
@@ -1,13 +1,10 @@
1
- import { makePublicInputsAndRecursiveProof, } from '@aztec/circuit-types';
2
- import { AvmVerificationKeyData, RECURSIVE_PROOF_LENGTH, VerificationKeyData, makeEmptyProof, makeRecursiveProof, } from '@aztec/circuits.js';
1
+ import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof, } from '@aztec/circuit-types';
2
+ import { AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, RECURSIVE_PROOF_LENGTH, TUBE_PROOF_LENGTH, VerificationKeyData, makeEmptyProof, makeRecursiveProof, } from '@aztec/circuits.js';
3
3
  import { makeBaseOrMergeRollupPublicInputs, makeBlockRootOrBlockMergeRollupPublicInputs, makeKernelCircuitPublicInputs, makePublicKernelCircuitPublicInputs, makeRootParityInput, makeRootRollupPublicInputs, makeVMCircuitPublicInputs, } from '@aztec/circuits.js/testing';
4
4
  export class MockProver {
5
5
  constructor() { }
6
6
  getAvmProof() {
7
- return Promise.resolve(Promise.resolve({
8
- proof: makeEmptyProof(),
9
- verificationKey: AvmVerificationKeyData.makeFake(),
10
- }));
7
+ return Promise.resolve(makeProofAndVerificationKey(makeEmptyProof(), VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS)));
11
8
  }
12
9
  getBaseParityProof() {
13
10
  return Promise.resolve(makeRootParityInput(RECURSIVE_PROOF_LENGTH));
@@ -16,43 +13,40 @@ export class MockProver {
16
13
  return Promise.resolve(makeRootParityInput(RECURSIVE_PROOF_LENGTH));
17
14
  }
18
15
  getBaseRollupProof() {
19
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeBaseOrMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
16
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeBaseOrMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
20
17
  }
21
18
  getMergeRollupProof() {
22
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeBaseOrMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
19
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeBaseOrMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
23
20
  }
24
21
  getBlockMergeRollupProof() {
25
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
22
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
26
23
  }
27
24
  getEmptyBlockRootRollupProof() {
28
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
25
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
29
26
  }
30
27
  getBlockRootRollupProof() {
31
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
28
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeBlockRootOrBlockMergeRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
32
29
  }
33
30
  getEmptyPrivateKernelProof() {
34
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
31
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
35
32
  }
36
33
  getEmptyTubeProof() {
37
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
34
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
38
35
  }
39
36
  getPublicKernelInnerProof() {
40
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeVMCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
37
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeVMCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
41
38
  }
42
39
  getPublicKernelMergeProof() {
43
- return Promise.resolve(makePublicInputsAndRecursiveProof(makePublicKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
40
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makePublicKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
44
41
  }
45
42
  getPublicTailProof() {
46
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
43
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeKernelCircuitPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
47
44
  }
48
45
  getRootRollupProof() {
49
- return Promise.resolve(makePublicInputsAndRecursiveProof(makeRootRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake()));
46
+ return Promise.resolve(makePublicInputsAndRecursiveProof(makeRootRollupPublicInputs(), makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
50
47
  }
51
48
  getTubeProof() {
52
- return Promise.resolve({
53
- tubeVK: VerificationKeyData.makeFake(),
54
- tubeProof: makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
55
- });
49
+ return Promise.resolve(makeProofAndVerificationKey(makeRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFake()));
56
50
  }
57
51
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19wcm92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLHNCQUFzQixFQUt0QixzQkFBc0IsRUFJdEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxrQkFBa0IsR0FDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLDJDQUEyQyxFQUMzQyw2QkFBNkIsRUFDN0IsbUNBQW1DLEVBQ25DLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIseUJBQXlCLEdBQzFCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsTUFBTSxPQUFPLFVBQVU7SUFDckIsZ0JBQWUsQ0FBQztJQUVoQixXQUFXO1FBQ1QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ2QsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUN2QixlQUFlLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO1NBQ25ELENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLGlDQUFpQyxFQUFFLEVBQ25DLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUMvQixDQUNGLENBQUM7SUFD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
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19wcm92ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9tb2NrX3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsMkJBQTJCLEVBQzNCLGlDQUFpQyxHQUNsQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxxQ0FBcUMsRUFLckMsc0JBQXNCLEVBR3RCLGlCQUFpQixFQUVqQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsMkNBQTJDLEVBQzNDLDZCQUE2QixFQUM3QixtQ0FBbUMsRUFDbkMsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQix5QkFBeUIsR0FDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxNQUFNLE9BQU8sVUFBVTtJQUNyQixnQkFBZSxDQUFDO0lBRWhCLFdBQVc7UUFDVCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLDJCQUEyQixDQUN6QixjQUFjLEVBQUUsRUFDaEIsbUJBQW1CLENBQUMsUUFBUSxDQUFDLHFDQUFxQyxDQUFDLENBQ3BFLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQixpQ0FBaUMsRUFBRSxFQUNuQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQixpQ0FBaUMsRUFBRSxFQUNuQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQiwyQ0FBMkMsRUFBRSxFQUM3QyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQiwyQ0FBMkMsRUFBRSxFQUM3QyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QjtRQUNyQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQiwyQ0FBMkMsRUFBRSxFQUM3QyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELDBCQUEwQjtRQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQ3BCLGlDQUFpQyxDQUMvQiw2QkFBNkIsRUFBRSxFQUMvQixrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLDZCQUE2QixFQUFFLEVBQy9CLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUNuQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLHlCQUF5QixFQUFFLEVBQzNCLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUNuQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLG1DQUFtQyxFQUFFLEVBQ3JDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUNuQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLDZCQUE2QixFQUFFLEVBQy9CLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUNuQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsaUNBQWlDLENBQy9CLDBCQUEwQixFQUFFLEVBQzVCLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLEVBQzFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUNuQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FDcEIsMkJBQTJCLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUNuRyxDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -1,7 +1,6 @@
1
- import { type EpochProver, type EpochProverManager, type ProvingJobSource } from '@aztec/circuit-types/interfaces';
1
+ import { type EpochProver, type EpochProverManager, type MerkleTreeWriteOperations, type ProvingJobSource } from '@aztec/circuit-types/interfaces';
2
2
  import { Fr } from '@aztec/circuits.js';
3
3
  import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import { type MerkleTreeOperations } from '@aztec/world-state';
5
4
  import { type ProverClientConfig } from '../config.js';
6
5
  /**
7
6
  * A prover factory.
@@ -14,7 +13,7 @@ export declare class TxProver implements EpochProverManager {
14
13
  private queue;
15
14
  private running;
16
15
  private constructor();
17
- createEpochProver(db: MerkleTreeOperations): EpochProver;
16
+ createEpochProver(db: MerkleTreeWriteOperations): EpochProver;
18
17
  getProverId(): Fr;
19
18
  updateProverConfig(config: Partial<ProverClientConfig>): Promise<void>;
20
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;;GAGG;AACH,qBAAa,QAAS,YAAW,kBAAkB;IAK/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK,CAAC;IANhB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAUA,iBAAiB,CAAC,EAAE,EAAE,oBAAoB,GAAG,WAAW;IAIxD,WAAW,IAAI,EAAE;IAIlB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5E;;OAEG;IACI,KAAK;IAWZ;;OAEG;IACU,IAAI;IAWjB;;;;;;OAMG;WACiB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;mBAczD,kBAAkB;IAehC,mBAAmB,IAAI,gBAAgB;CAG/C"}
1
+ {"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;;GAGG;AACH,qBAAa,QAAS,YAAW,kBAAkB;IAK/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK,CAAC;IANhB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAUA,iBAAiB,CAAC,EAAE,EAAE,yBAAyB,GAAG,WAAW;IAI7D,WAAW,IAAI,EAAE;IAIlB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5E;;OAEG;IACI,KAAK;IAWZ;;OAEG;IACU,IAAI;IAWjB;;;;;;OAMG;WACiB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;mBAczD,kBAAkB;IAehC,mBAAmB,IAAI,gBAAgB;CAG/C"}
@@ -90,4 +90,4 @@ export class TxProver {
90
90
  return this.queue;
91
91
  }
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPM0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUluQixZQUNVLE1BQTBCLEVBQzFCLFNBQTBCLEVBQzFCLEtBQW1CO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFMckIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQU90QiwyRkFBMkY7UUFDM0YsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUF3QjtRQUMvQyxPQUFPLElBQUksbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0s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
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFRM0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUluQixZQUNVLE1BQTBCLEVBQzFCLFNBQTBCLEVBQzFCLEtBQW1CO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFMckIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQU90QiwyRkFBMkY7UUFDM0YsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUE2QjtRQUNwRCxPQUFPLElBQUksbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0s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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-client",
3
- "version": "0.57.0",
3
+ "version": "0.59.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -63,15 +63,16 @@
63
63
  ]
64
64
  },
65
65
  "dependencies": {
66
- "@aztec/bb-prover": "0.57.0",
67
- "@aztec/circuit-types": "0.57.0",
68
- "@aztec/circuits.js": "0.57.0",
69
- "@aztec/foundation": "0.57.0",
70
- "@aztec/kv-store": "0.57.0",
71
- "@aztec/noir-protocol-circuits-types": "0.57.0",
72
- "@aztec/simulator": "0.57.0",
73
- "@aztec/telemetry-client": "0.57.0",
74
- "@aztec/world-state": "0.57.0",
66
+ "@aztec/bb-prover": "0.59.0",
67
+ "@aztec/circuit-types": "0.59.0",
68
+ "@aztec/circuits.js": "0.59.0",
69
+ "@aztec/foundation": "0.59.0",
70
+ "@aztec/kv-store": "0.59.0",
71
+ "@aztec/noir-protocol-circuits-types": "0.59.0",
72
+ "@aztec/protocol-contracts": "0.59.0",
73
+ "@aztec/simulator": "0.59.0",
74
+ "@aztec/telemetry-client": "0.59.0",
75
+ "@aztec/world-state": "0.59.0",
75
76
  "@noir-lang/types": "portal:../../noir/packages/types",
76
77
  "commander": "^12.1.0",
77
78
  "lodash.chunk": "^4.2.0",
package/src/config.ts CHANGED
@@ -1,21 +1,25 @@
1
+ import { type BBConfig } from '@aztec/bb-prover';
1
2
  import { type ProverConfig, proverConfigMappings } from '@aztec/circuit-types';
2
- import { type ConfigMappingsType, getConfigFromMappings } from '@aztec/foundation/config';
3
+ import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
3
4
 
4
5
  /**
5
6
  * The prover configuration.
6
7
  */
7
- export type ProverClientConfig = ProverConfig & {
8
- /** The working directory to use for simulation/proving */
9
- acvmWorkingDirectory: string;
10
- /** The path to the ACVM binary */
11
- acvmBinaryPath: string;
12
- /** The working directory to for proving */
13
- bbWorkingDirectory: string;
14
- /** The path to the bb binary */
15
- bbBinaryPath: string;
16
- };
8
+ export type ProverClientConfig = ProverConfig &
9
+ BBConfig & {
10
+ /** The URL to the Aztec prover node to take proving jobs from */
11
+ proverJobSourceUrl?: string;
12
+ /** The working directory to use for simulation/proving */
13
+ acvmWorkingDirectory: string;
14
+ /** The path to the ACVM binary */
15
+ acvmBinaryPath: string;
16
+ };
17
17
 
18
18
  export const proverClientConfigMappings: ConfigMappingsType<ProverClientConfig> = {
19
+ proverJobSourceUrl: {
20
+ env: 'PROVER_JOB_SOURCE_URL',
21
+ description: 'The URL to the Aztec prover node to take proving jobs from',
22
+ },
19
23
  acvmWorkingDirectory: {
20
24
  env: 'ACVM_WORKING_DIRECTORY',
21
25
  description: 'The working directory to use for simulation/proving',
@@ -32,6 +36,11 @@ export const proverClientConfigMappings: ConfigMappingsType<ProverClientConfig>
32
36
  env: 'BB_BINARY_PATH',
33
37
  description: 'The path to the bb binary',
34
38
  },
39
+ bbSkipCleanup: {
40
+ env: 'BB_SKIP_CLEANUP',
41
+ description: 'Whether to skip cleanup of bb temporary files',
42
+ ...booleanConfigHelper(false),
43
+ },
35
44
  ...proverConfigMappings,
36
45
  };
37
46
 
@@ -1,5 +1,7 @@
1
1
  import {
2
2
  MerkleTreeId,
3
+ type MerkleTreeReadOperations,
4
+ type MerkleTreeWriteOperations,
3
5
  type ProcessedTx,
4
6
  makeEmptyProcessedTx as makeEmptyProcessedTxFromHistoricalTreeRoots,
5
7
  } from '@aztec/circuit-types';
@@ -21,8 +23,8 @@ import { randomBytes } from '@aztec/foundation/crypto';
21
23
  import { type DebugLogger } from '@aztec/foundation/log';
22
24
  import { fileURLToPath } from '@aztec/foundation/url';
23
25
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
26
+ import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
24
27
  import { NativeACVMSimulator, type SimulationProvider, WASMSimulator } from '@aztec/simulator';
25
- import { type MerkleTreeOperations } from '@aztec/world-state';
26
28
 
27
29
  import * as fs from 'fs/promises';
28
30
  import path from 'path';
@@ -32,6 +34,7 @@ const {
32
34
  TEMP_DIR = '/tmp',
33
35
  BB_BINARY_PATH = '',
34
36
  BB_WORKING_DIRECTORY = '',
37
+ BB_SKIP_CLEANUP = '',
35
38
  NOIR_RELEASE_DIR = 'noir-repo/target/release',
36
39
  ACVM_BINARY_PATH = '',
37
40
  ACVM_WORKING_DIRECTORY = '',
@@ -56,12 +59,17 @@ export const getEnvironmentConfig = async (logger: DebugLogger) => {
56
59
  const acvmWorkingDirectory = ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : `${tempWorkingDirectory}/acvm`;
57
60
  await fs.mkdir(acvmWorkingDirectory, { recursive: true });
58
61
  logger.verbose(`Using native ACVM binary at ${expectedAcvmPath} with working directory ${acvmWorkingDirectory}`);
62
+
63
+ const bbSkipCleanup = ['1', 'true'].includes(BB_SKIP_CLEANUP);
64
+ bbSkipCleanup && logger.verbose(`Not going to clean up BB working directory ${bbWorkingDirectory} after run`);
65
+
59
66
  return {
60
67
  acvmWorkingDirectory,
61
68
  bbWorkingDirectory,
62
69
  expectedAcvmPath,
63
70
  expectedBBPath,
64
71
  directoryToCleanup: ACVM_WORKING_DIRECTORY && BB_WORKING_DIRECTORY ? undefined : tempWorkingDirectory,
72
+ bbSkipCleanup,
65
73
  };
66
74
  } catch (err) {
67
75
  logger.verbose(`Native BB not available, error: ${err}`);
@@ -89,16 +97,22 @@ export async function getSimulationProvider(
89
97
  return new WASMSimulator();
90
98
  }
91
99
 
92
- export const makeBloatedProcessedTx = (builderDb: MerkleTreeOperations, seed = 0x1) =>
93
- makeBloatedProcessedTxWithVKRoot(builderDb, getVKTreeRoot(), seed);
100
+ export const makeBloatedProcessedTx = (builderDb: MerkleTreeReadOperations, seed = 0x1) =>
101
+ makeBloatedProcessedTxWithVKRoot(builderDb, getVKTreeRoot(), protocolContractTreeRoot, seed);
94
102
 
95
- export const makeEmptyProcessedTx = (builderDb: MerkleTreeOperations, chainId: Fr, version: Fr) => {
103
+ export const makeEmptyProcessedTx = (builderDb: MerkleTreeReadOperations, chainId: Fr, version: Fr) => {
96
104
  const header = builderDb.getInitialHeader();
97
- return makeEmptyProcessedTxFromHistoricalTreeRoots(header, chainId, version, getVKTreeRoot());
105
+ return makeEmptyProcessedTxFromHistoricalTreeRoots(
106
+ header,
107
+ chainId,
108
+ version,
109
+ getVKTreeRoot(),
110
+ protocolContractTreeRoot,
111
+ );
98
112
  };
99
113
 
100
114
  // Updates the expectedDb trees based on the new note hashes, contracts, and nullifiers from these txs
101
- export const updateExpectedTreesFromTxs = async (db: MerkleTreeOperations, txs: ProcessedTx[]) => {
115
+ export const updateExpectedTreesFromTxs = async (db: MerkleTreeWriteOperations, txs: ProcessedTx[]) => {
102
116
  await db.appendLeaves(
103
117
  MerkleTreeId.NOTE_HASH_TREE,
104
118
  txs.flatMap(tx =>
@@ -144,5 +158,5 @@ export const makeGlobals = (blockNumber: number) => {
144
158
  );
145
159
  };
146
160
 
147
- export const makeEmptyProcessedTestTx = (builderDb: MerkleTreeOperations): ProcessedTx =>
161
+ export const makeEmptyProcessedTestTx = (builderDb: MerkleTreeReadOperations): ProcessedTx =>
148
162
  makeEmptyProcessedTx(builderDb, Fr.ZERO, Fr.ZERO);
@@ -1,6 +1,6 @@
1
1
  import { type BBProverConfig } from '@aztec/bb-prover';
2
2
  import {
3
- type MerkleTreeAdminOperations,
3
+ type MerkleTreeWriteOperations,
4
4
  type ProcessedTx,
5
5
  type ProcessedTxHandler,
6
6
  type PublicExecutionRequest,
@@ -8,7 +8,14 @@ import {
8
8
  type Tx,
9
9
  type TxValidator,
10
10
  } from '@aztec/circuit-types';
11
- import { type Gas, type GlobalVariables, Header, type Nullifier, type TxContext } from '@aztec/circuits.js';
11
+ import {
12
+ type CombinedConstantData,
13
+ type Gas,
14
+ type GlobalVariables,
15
+ Header,
16
+ type Nullifier,
17
+ type TxContext,
18
+ } from '@aztec/circuits.js';
12
19
  import { type Fr } from '@aztec/foundation/fields';
13
20
  import { type DebugLogger } from '@aztec/foundation/log';
14
21
  import { openTmpStore } from '@aztec/kv-store/utils';
@@ -28,8 +35,6 @@ import { NativeWorldStateService } from '@aztec/world-state/native';
28
35
 
29
36
  import * as fs from 'fs/promises';
30
37
  import { type MockProxy, mock } from 'jest-mock-extended';
31
- import { tmpdir } from 'os';
32
- import { join } from 'path';
33
38
 
34
39
  import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
35
40
  import { ProvingOrchestrator } from '../orchestrator/index.js';
@@ -44,7 +49,7 @@ export class TestContext {
44
49
  public publicProcessor: PublicProcessor,
45
50
  public simulationProvider: SimulationProvider,
46
51
  public globalVariables: GlobalVariables,
47
- public actualDb: MerkleTreeAdminOperations,
52
+ public actualDb: MerkleTreeWriteOperations,
48
53
  public prover: ServerCircuitProver,
49
54
  public proverAgent: ProverAgent,
50
55
  public orchestrator: ProvingOrchestrator,
@@ -59,7 +64,7 @@ export class TestContext {
59
64
 
60
65
  static async new(
61
66
  logger: DebugLogger,
62
- worldState: 'native' | 'legacy' = 'legacy',
67
+ worldState: 'native' | 'legacy' = 'native',
63
68
  proverCount = 4,
64
69
  createProver: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver> = _ =>
65
70
  Promise.resolve(new TestCircuitProver(new NoopTelemetryClient(), new WASMSimulator())),
@@ -73,16 +78,14 @@ export class TestContext {
73
78
  const publicKernel = new RealPublicKernelCircuitSimulator(new WASMSimulator());
74
79
  const telemetry = new NoopTelemetryClient();
75
80
 
76
- let actualDb: MerkleTreeAdminOperations;
81
+ let actualDb: MerkleTreeWriteOperations;
77
82
 
78
83
  if (worldState === 'native') {
79
- const dir = await fs.mkdtemp(join(tmpdir(), 'prover-client-world-state-'));
80
- directoriesToCleanup.push(dir);
81
- const ws = await NativeWorldStateService.create(dir);
82
- actualDb = ws.asLatest();
84
+ const ws = await NativeWorldStateService.tmp();
85
+ actualDb = await ws.fork();
83
86
  } else {
84
87
  const ws = await MerkleTrees.new(openTmpStore(), telemetry);
85
- actualDb = ws.asLatest();
88
+ actualDb = await ws.getLatest();
86
89
  }
87
90
 
88
91
  const processor = PublicProcessor.create(
@@ -109,11 +112,12 @@ export class TestContext {
109
112
  acvmWorkingDirectory: config.acvmWorkingDirectory,
110
113
  bbBinaryPath: config.expectedBBPath,
111
114
  bbWorkingDirectory: config.bbWorkingDirectory,
115
+ bbSkipCleanup: config.bbSkipCleanup,
112
116
  };
113
117
  localProver = await createProver(bbConfig);
114
118
  }
115
119
 
116
- if (config?.directoryToCleanup) {
120
+ if (config?.directoryToCleanup && !config.bbSkipCleanup) {
117
121
  directoriesToCleanup.push(config.directoryToCleanup);
118
122
  }
119
123
 
@@ -155,7 +159,7 @@ export class TestContext {
155
159
  ) {
156
160
  const defaultExecutorImplementation = (
157
161
  execution: PublicExecutionRequest,
158
- _globalVariables: GlobalVariables,
162
+ _constants: CombinedConstantData,
159
163
  availableGas: Gas,
160
164
  _txContext: TxContext,
161
165
  _pendingNullifiers: Nullifier[],
@@ -195,7 +199,7 @@ export class TestContext {
195
199
  txValidator?: TxValidator<ProcessedTx>,
196
200
  executorMock?: (
197
201
  execution: PublicExecutionRequest,
198
- globalVariables: GlobalVariables,
202
+ constants: CombinedConstantData,
199
203
  availableGas: Gas,
200
204
  txContext: TxContext,
201
205
  pendingNullifiers: Nullifier[],
@@ -1,4 +1,11 @@
1
- import { type Body, MerkleTreeId, type ProcessedTx, TxEffect, getTreeHeight } from '@aztec/circuit-types';
1
+ import {
2
+ type Body,
3
+ MerkleTreeId,
4
+ type MerkleTreeWriteOperations,
5
+ type ProcessedTx,
6
+ TxEffect,
7
+ getTreeHeight,
8
+ } from '@aztec/circuit-types';
2
9
  import {
3
10
  ARCHIVE_HEIGHT,
4
11
  AppendOnlyTreeSnapshot,
@@ -52,8 +59,9 @@ import { type DebugLogger } from '@aztec/foundation/log';
52
59
  import { type Tuple, assertLength, toFriendlyJSON } from '@aztec/foundation/serialize';
53
60
  import { computeUnbalancedMerkleRoot } from '@aztec/foundation/trees';
54
61
  import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
62
+ import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
55
63
  import { HintsBuilder, computeFeePayerBalanceLeafSlot } from '@aztec/simulator';
56
- import { type MerkleTreeOperations } from '@aztec/world-state';
64
+ import { type MerkleTreeReadOperations } from '@aztec/world-state';
57
65
 
58
66
  import { inspect } from 'util';
59
67
 
@@ -71,7 +79,7 @@ export async function buildBaseRollupInput(
71
79
  tx: ProcessedTx,
72
80
  proof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
73
81
  globalVariables: GlobalVariables,
74
- db: MerkleTreeOperations,
82
+ db: MerkleTreeWriteOperations,
75
83
  kernelVk: VerificationKeyData,
76
84
  ) {
77
85
  // Get trees info before any changes hit
@@ -251,7 +259,7 @@ export async function buildHeaderFromTxEffects(
251
259
  body: Body,
252
260
  globalVariables: GlobalVariables,
253
261
  l1ToL2Messages: Fr[],
254
- db: MerkleTreeOperations,
262
+ db: MerkleTreeReadOperations,
255
263
  ) {
256
264
  const stateReference = new StateReference(
257
265
  await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db),
@@ -291,7 +299,7 @@ export async function buildHeaderFromTxEffects(
291
299
  export async function validateBlockRootOutput(
292
300
  blockRootOutput: BlockRootOrBlockMergePublicInputs,
293
301
  blockHeader: Header,
294
- db: MerkleTreeOperations,
302
+ db: MerkleTreeReadOperations,
295
303
  ) {
296
304
  await Promise.all([
297
305
  validateState(blockHeader.state, db),
@@ -299,7 +307,7 @@ export async function validateBlockRootOutput(
299
307
  ]);
300
308
  }
301
309
 
302
- export async function validateState(state: StateReference, db: MerkleTreeOperations) {
310
+ export async function validateState(state: StateReference, db: MerkleTreeReadOperations) {
303
311
  const promises = [MerkleTreeId.NOTE_HASH_TREE, MerkleTreeId.NULLIFIER_TREE, MerkleTreeId.PUBLIC_DATA_TREE].map(
304
312
  async (id: MerkleTreeId) => {
305
313
  return { key: id, value: await getTreeSnapshot(id, db) };
@@ -316,7 +324,7 @@ export async function validateState(state: StateReference, db: MerkleTreeOperati
316
324
  );
317
325
  }
318
326
 
319
- export async function getRootTreeSiblingPath<TID extends MerkleTreeId>(treeId: TID, db: MerkleTreeOperations) {
327
+ export async function getRootTreeSiblingPath<TID extends MerkleTreeId>(treeId: TID, db: MerkleTreeReadOperations) {
320
328
  const { size } = await db.getTreeInfo(treeId);
321
329
  const path = await db.getSiblingPath(treeId, size);
322
330
  return padArrayEnd(path.toFields(), Fr.ZERO, getTreeHeight(treeId));
@@ -375,16 +383,17 @@ export function getPreviousRollupBlockDataFromPublicInputs(
375
383
 
376
384
  export async function getConstantRollupData(
377
385
  globalVariables: GlobalVariables,
378
- db: MerkleTreeOperations,
386
+ db: MerkleTreeReadOperations,
379
387
  ): Promise<ConstantRollupData> {
380
388
  return ConstantRollupData.from({
381
389
  vkTreeRoot: getVKTreeRoot(),
390
+ protocolContractTreeRoot,
382
391
  lastArchive: await getTreeSnapshot(MerkleTreeId.ARCHIVE, db),
383
392
  globalVariables,
384
393
  });
385
394
  }
386
395
 
387
- export async function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeOperations): Promise<AppendOnlyTreeSnapshot> {
396
+ export async function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeReadOperations): Promise<AppendOnlyTreeSnapshot> {
388
397
  const treeInfo = await db.getTreeInfo(id);
389
398
  return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
390
399
  }
@@ -414,7 +423,7 @@ export function makeEmptyMembershipWitness<N extends number>(height: N) {
414
423
  );
415
424
  }
416
425
 
417
- export async function processPublicDataUpdateRequests(tx: ProcessedTx, db: MerkleTreeOperations) {
426
+ export async function processPublicDataUpdateRequests(tx: ProcessedTx, db: MerkleTreeWriteOperations) {
418
427
  const allPublicDataUpdateRequests = padArrayEnd(
419
428
  tx.finalPublicDataUpdateRequests,
420
429
  PublicDataUpdateRequest.empty(),
@@ -482,7 +491,7 @@ export async function processPublicDataUpdateRequests(tx: ProcessedTx, db: Merkl
482
491
  export async function getSubtreeSiblingPath(
483
492
  treeId: MerkleTreeId,
484
493
  subtreeHeight: number,
485
- db: MerkleTreeOperations,
494
+ db: MerkleTreeReadOperations,
486
495
  ): Promise<Fr[]> {
487
496
  const nextAvailableLeafIndex = await db.getTreeInfo(treeId).then(t => t.size);
488
497
  const fullSiblingPath = await db.getSiblingPath(treeId, nextAvailableLeafIndex);
@@ -496,7 +505,7 @@ export async function getMembershipWitnessFor<N extends number>(
496
505
  value: Fr,
497
506
  treeId: MerkleTreeId,
498
507
  height: N,
499
- db: MerkleTreeOperations,
508
+ db: MerkleTreeReadOperations,
500
509
  ): Promise<MembershipWitness<N>> {
501
510
  // If this is an empty tx, then just return zeroes
502
511
  if (value.isZero()) {
@@ -45,6 +45,7 @@ export class BlockProvingState {
45
45
  public finalProof: Proof | undefined;
46
46
  public block: L2Block | undefined;
47
47
  private txs: TxProvingState[] = [];
48
+ public error: string | undefined;
48
49
 
49
50
  constructor(
50
51
  public readonly index: number,
@@ -209,6 +210,7 @@ export class BlockProvingState {
209
210
  }
210
211
 
211
212
  public reject(reason: string) {
213
+ this.error = reason;
212
214
  this.parentEpoch.reject(reason);
213
215
  }
214
216
  }