@aztec/prover-client 0.73.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2

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 (138) hide show
  1. package/dest/bin/get-proof-inputs.js +18 -16
  2. package/dest/block_builder/index.js +0 -1
  3. package/dest/block_builder/light.js +23 -13
  4. package/dest/config.js +9 -11
  5. package/dest/index.js +0 -1
  6. package/dest/mocks/fixtures.js +28 -26
  7. package/dest/mocks/test_context.js +55 -31
  8. package/dest/orchestrator/block-building-helpers.js +90 -90
  9. package/dest/orchestrator/block-proving-state.js +95 -70
  10. package/dest/orchestrator/epoch-proving-state.js +53 -40
  11. package/dest/orchestrator/index.js +0 -1
  12. package/dest/orchestrator/orchestrator.js +649 -653
  13. package/dest/orchestrator/orchestrator_metrics.js +4 -3
  14. package/dest/orchestrator/tx-proving-state.js +52 -51
  15. package/dest/prover-agent/index.js +0 -1
  16. package/dest/prover-agent/memory-proving-queue.js +237 -248
  17. package/dest/prover-agent/prover-agent.js +184 -187
  18. package/dest/prover-agent/proving-error.js +0 -1
  19. package/dest/prover-agent/queue_metrics.js +6 -5
  20. package/dest/prover-agent/rpc.js +6 -4
  21. package/dest/prover-client/factory.js +0 -1
  22. package/dest/prover-client/index.js +0 -1
  23. package/dest/prover-client/prover-client.js +30 -25
  24. package/dest/prover-client/server-epoch-prover.js +4 -4
  25. package/dest/proving_broker/broker_prover_facade.js +70 -59
  26. package/dest/proving_broker/config.js +22 -37
  27. package/dest/proving_broker/factory.js +1 -2
  28. package/dest/proving_broker/fixtures.js +0 -1
  29. package/dest/proving_broker/index.js +0 -1
  30. package/dest/proving_broker/proof_store/factory.js +9 -12
  31. package/dest/proving_broker/proof_store/gcs_proof_store.js +11 -7
  32. package/dest/proving_broker/proof_store/index.js +0 -1
  33. package/dest/proving_broker/proof_store/inline_proof_store.js +11 -7
  34. package/dest/proving_broker/proof_store/proof_store.js +3 -2
  35. package/dest/proving_broker/proving_agent.js +121 -110
  36. package/dest/proving_broker/proving_agent_instrumentation.js +3 -3
  37. package/dest/proving_broker/proving_broker.js +491 -451
  38. package/dest/proving_broker/proving_broker_database/memory.js +19 -13
  39. package/dest/proving_broker/proving_broker_database/persisted.js +41 -21
  40. package/dest/proving_broker/proving_broker_database.js +3 -2
  41. package/dest/proving_broker/proving_broker_instrumentation.js +28 -21
  42. package/dest/proving_broker/proving_job_controller.js +81 -62
  43. package/dest/proving_broker/rpc.js +23 -15
  44. package/dest/test/mock_prover.js +11 -9
  45. package/package.json +13 -11
  46. package/src/index.ts +1 -1
  47. package/src/orchestrator/block-building-helpers.ts +1 -1
  48. package/src/proving_broker/proving_agent.ts +30 -11
  49. package/src/proving_broker/proving_broker.ts +53 -27
  50. package/src/proving_broker/rpc.ts +8 -2
  51. package/dest/bin/get-proof-inputs.d.ts +0 -2
  52. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  53. package/dest/block_builder/index.d.ts +0 -6
  54. package/dest/block_builder/index.d.ts.map +0 -1
  55. package/dest/block_builder/light.d.ts +0 -31
  56. package/dest/block_builder/light.d.ts.map +0 -1
  57. package/dest/config.d.ts +0 -17
  58. package/dest/config.d.ts.map +0 -1
  59. package/dest/index.d.ts +0 -4
  60. package/dest/index.d.ts.map +0 -1
  61. package/dest/mocks/fixtures.d.ts +0 -19
  62. package/dest/mocks/fixtures.d.ts.map +0 -1
  63. package/dest/mocks/test_context.d.ts +0 -49
  64. package/dest/mocks/test_context.d.ts.map +0 -1
  65. package/dest/orchestrator/block-building-helpers.d.ts +0 -50
  66. package/dest/orchestrator/block-building-helpers.d.ts.map +0 -1
  67. package/dest/orchestrator/block-proving-state.d.ts +0 -71
  68. package/dest/orchestrator/block-proving-state.d.ts.map +0 -1
  69. package/dest/orchestrator/epoch-proving-state.d.ts +0 -56
  70. package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
  71. package/dest/orchestrator/index.d.ts +0 -2
  72. package/dest/orchestrator/index.d.ts.map +0 -1
  73. package/dest/orchestrator/orchestrator.d.ts +0 -108
  74. package/dest/orchestrator/orchestrator.d.ts.map +0 -1
  75. package/dest/orchestrator/orchestrator_metrics.d.ts +0 -8
  76. package/dest/orchestrator/orchestrator_metrics.d.ts.map +0 -1
  77. package/dest/orchestrator/tx-proving-state.d.ts +0 -31
  78. package/dest/orchestrator/tx-proving-state.d.ts.map +0 -1
  79. package/dest/prover-agent/index.d.ts +0 -4
  80. package/dest/prover-agent/index.d.ts.map +0 -1
  81. package/dest/prover-agent/memory-proving-queue.d.ts +0 -82
  82. package/dest/prover-agent/memory-proving-queue.d.ts.map +0 -1
  83. package/dest/prover-agent/prover-agent.d.ts +0 -43
  84. package/dest/prover-agent/prover-agent.d.ts.map +0 -1
  85. package/dest/prover-agent/proving-error.d.ts +0 -5
  86. package/dest/prover-agent/proving-error.d.ts.map +0 -1
  87. package/dest/prover-agent/queue_metrics.d.ts +0 -10
  88. package/dest/prover-agent/queue_metrics.d.ts.map +0 -1
  89. package/dest/prover-agent/rpc.d.ts +0 -11
  90. package/dest/prover-agent/rpc.d.ts.map +0 -1
  91. package/dest/prover-client/factory.d.ts +0 -6
  92. package/dest/prover-client/factory.d.ts.map +0 -1
  93. package/dest/prover-client/index.d.ts +0 -3
  94. package/dest/prover-client/index.d.ts.map +0 -1
  95. package/dest/prover-client/prover-client.d.ts +0 -42
  96. package/dest/prover-client/prover-client.d.ts.map +0 -1
  97. package/dest/prover-client/server-epoch-prover.d.ts +0 -25
  98. package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
  99. package/dest/proving_broker/broker_prover_facade.d.ts +0 -39
  100. package/dest/proving_broker/broker_prover_facade.d.ts.map +0 -1
  101. package/dest/proving_broker/config.d.ts +0 -61
  102. package/dest/proving_broker/config.d.ts.map +0 -1
  103. package/dest/proving_broker/factory.d.ts +0 -5
  104. package/dest/proving_broker/factory.d.ts.map +0 -1
  105. package/dest/proving_broker/fixtures.d.ts +0 -5
  106. package/dest/proving_broker/fixtures.d.ts.map +0 -1
  107. package/dest/proving_broker/index.d.ts +0 -10
  108. package/dest/proving_broker/index.d.ts.map +0 -1
  109. package/dest/proving_broker/proof_store/factory.d.ts +0 -6
  110. package/dest/proving_broker/proof_store/factory.d.ts.map +0 -1
  111. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -13
  112. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  113. package/dest/proving_broker/proof_store/index.d.ts +0 -4
  114. package/dest/proving_broker/proof_store/index.d.ts.map +0 -1
  115. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +0 -14
  116. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +0 -1
  117. package/dest/proving_broker/proof_store/proof_store.d.ts +0 -35
  118. package/dest/proving_broker/proof_store/proof_store.d.ts.map +0 -1
  119. package/dest/proving_broker/proving_agent.d.ts +0 -44
  120. package/dest/proving_broker/proving_agent.d.ts.map +0 -1
  121. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  122. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  123. package/dest/proving_broker/proving_broker.d.ts +0 -75
  124. package/dest/proving_broker/proving_broker.d.ts.map +0 -1
  125. package/dest/proving_broker/proving_broker_database/memory.d.ts +0 -16
  126. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +0 -1
  127. package/dest/proving_broker/proving_broker_database/persisted.d.ts +0 -21
  128. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +0 -1
  129. package/dest/proving_broker/proving_broker_database.d.ts +0 -39
  130. package/dest/proving_broker/proving_broker_database.d.ts.map +0 -1
  131. package/dest/proving_broker/proving_broker_instrumentation.d.ts +0 -25
  132. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +0 -1
  133. package/dest/proving_broker/proving_job_controller.d.ts +0 -31
  134. package/dest/proving_broker/proving_job_controller.d.ts.map +0 -1
  135. package/dest/proving_broker/rpc.d.ts +0 -11
  136. package/dest/proving_broker/rpc.d.ts.map +0 -1
  137. package/dest/test/mock_prover.d.ts +0 -33
  138. package/dest/test/mock_prover.d.ts.map +0 -1
@@ -1,5 +1,4 @@
1
- /* eslint-disable no-console */
2
- import { AVM_HINTS_FILENAME, AVM_PUBLIC_INPUTS_FILENAME } from '@aztec/bb-prover';
1
+ /* eslint-disable no-console */ import { AVM_HINTS_FILENAME, AVM_PUBLIC_INPUTS_FILENAME } from '@aztec/bb-prover';
3
2
  import { ProvingJobInputs, ProvingRequestType } from '@aztec/circuit-types';
4
3
  import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
5
4
  import { createLogger } from '@aztec/foundation/log';
@@ -20,7 +19,9 @@ async function main() {
20
19
  printUsage();
21
20
  throw new Error('Missing proof URI');
22
21
  }
23
- mkdirSync(outDir, { recursive: true });
22
+ mkdirSync(outDir, {
23
+ recursive: true
24
+ });
24
25
  const proofStore = createProofStoreForUri(uri);
25
26
  logger.info(`Processing uri ${uri}`);
26
27
  const input = await proofStore.getProofInput(uri);
@@ -30,21 +31,22 @@ async function main() {
30
31
  }
31
32
  // This mimics the behavior of bb-prover/src/bb/execute.ts
32
33
  function writeProofInputs(input, outDir) {
33
- switch (input.type) {
34
- case ProvingRequestType.PUBLIC_VM: {
35
- writeFileSync(`${outDir}/${AVM_PUBLIC_INPUTS_FILENAME}`, input.inputs.publicInputs.toBuffer());
36
- logger.info(`Wrote AVM public inputs to ${AVM_PUBLIC_INPUTS_FILENAME}`);
37
- writeFileSync(`${outDir}/${AVM_HINTS_FILENAME}`, input.inputs.avmHints.toBuffer());
38
- logger.info(`Wrote AVM hints to ${AVM_HINTS_FILENAME}`);
39
- break;
40
- }
41
- default: {
42
- throw new Error(`Unimplemented proving request type: ${ProvingRequestType[input.type]}`);
43
- }
34
+ switch(input.type){
35
+ case ProvingRequestType.PUBLIC_VM:
36
+ {
37
+ writeFileSync(`${outDir}/${AVM_PUBLIC_INPUTS_FILENAME}`, input.inputs.publicInputs.toBuffer());
38
+ logger.info(`Wrote AVM public inputs to ${AVM_PUBLIC_INPUTS_FILENAME}`);
39
+ writeFileSync(`${outDir}/${AVM_HINTS_FILENAME}`, input.inputs.avmHints.toBuffer());
40
+ logger.info(`Wrote AVM hints to ${AVM_HINTS_FILENAME}`);
41
+ break;
42
+ }
43
+ default:
44
+ {
45
+ throw new Error(`Unimplemented proving request type: ${ProvingRequestType[input.type]}`);
46
+ }
44
47
  }
45
48
  }
46
- main().catch(err => {
49
+ main().catch((err)=>{
47
50
  console.error(err);
48
51
  process.exit(1);
49
52
  });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXByb29mLWlucHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vZ2V0LXByb29mLWlucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEYsT0FBTyxFQUFpQixnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7QUFFOUQsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFDakIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLFVBQVUsRUFBRSxDQUFDO1FBQ2IsT0FBTztJQUNULENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULFVBQVUsRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdkMsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxNQUFNLFVBQVUsQ0FBQyxhQUFhLENBQUMsR0FBZSxDQUFDLENBQUM7SUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0Isa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRixDQUFDO0FBRUQsMERBQTBEO0FBQzFELFNBQVMsZ0JBQWdCLENBQUMsS0FBdUIsRUFBRSxNQUFjO0lBQy9ELFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsQyxhQUFhLENBQUMsR0FBRyxNQUFNLElBQUksMEJBQTBCLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLDBCQUEwQixFQUFFLENBQUMsQ0FBQztZQUN4RSxhQUFhLENBQUMsR0FBRyxNQUFNLElBQUksa0JBQWtCLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLGtCQUFrQixFQUFFLENBQUMsQ0FBQztZQUN4RCxNQUFNO1FBQ1IsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,2 +1 @@
1
1
  export * from './light.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfYnVpbGRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLFlBQVksQ0FBQyJ9
@@ -1,22 +1,31 @@
1
- import { L2Block, MerkleTreeId, toNumBlobFields, } from '@aztec/circuit-types';
1
+ import { L2Block, MerkleTreeId, toNumBlobFields } from '@aztec/circuit-types';
2
2
  import { Fr, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/circuits.js';
3
3
  import { SpongeBlob } from '@aztec/circuits.js/blobs';
4
4
  import { padArrayEnd } from '@aztec/foundation/collection';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
6
  import { getTelemetryClient } from '@aztec/telemetry-client';
7
- import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot, } from '../orchestrator/block-building-helpers.js';
7
+ import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getTreeSnapshot } from '../orchestrator/block-building-helpers.js';
8
8
  /**
9
9
  * Builds a block and its header from a set of processed tx without running any circuits.
10
- */
11
- export class LightweightBlockBuilder {
12
- constructor(db, telemetry = getTelemetryClient()) {
10
+ */ export class LightweightBlockBuilder {
11
+ db;
12
+ telemetry;
13
+ spongeBlobState;
14
+ globalVariables;
15
+ l1ToL2Messages;
16
+ txs;
17
+ logger;
18
+ constructor(db, telemetry = getTelemetryClient()){
13
19
  this.db = db;
14
20
  this.telemetry = telemetry;
15
21
  this.txs = [];
16
22
  this.logger = createLogger('prover-client:block_builder');
17
23
  }
18
24
  async startNewBlock(globalVariables, l1ToL2Messages) {
19
- this.logger.debug('Starting new block', { globalVariables: globalVariables.toInspect(), l1ToL2Messages });
25
+ this.logger.debug('Starting new block', {
26
+ globalVariables: globalVariables.toInspect(),
27
+ l1ToL2Messages
28
+ });
20
29
  this.globalVariables = globalVariables;
21
30
  this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
22
31
  this.txs = [];
@@ -26,8 +35,10 @@ export class LightweightBlockBuilder {
26
35
  }
27
36
  async addTxs(txs) {
28
37
  this.spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
29
- for (const tx of txs) {
30
- this.logger.debug('Adding new tx to block', { txHash: tx.hash.toString() });
38
+ for (const tx of txs){
39
+ this.logger.debug('Adding new tx to block', {
40
+ txHash: tx.hash.toString()
41
+ });
31
42
  this.txs.push(tx);
32
43
  await buildBaseRollupHints(tx, this.globalVariables, this.db, this.spongeBlobState);
33
44
  }
@@ -43,13 +54,14 @@ export class LightweightBlockBuilder {
43
54
  this.logger.debug(`Built block ${block.number}`, {
44
55
  globalVariables: this.globalVariables?.toInspect(),
45
56
  archiveRoot: newArchive.root.toString(),
46
- blockHash: block.hash.toString(),
57
+ blockHash: block.hash.toString()
47
58
  });
48
59
  return block;
49
60
  }
50
61
  }
51
62
  export class LightweightBlockBuilderFactory {
52
- constructor(telemetry = getTelemetryClient()) {
63
+ telemetry;
64
+ constructor(telemetry = getTelemetryClient()){
53
65
  this.telemetry = telemetry;
54
66
  }
55
67
  create(db) {
@@ -59,11 +71,9 @@ export class LightweightBlockBuilderFactory {
59
71
  /**
60
72
  * Creates a block builder under the hood with the given txs and messages and creates a block.
61
73
  * @param db - A db fork to use for block building.
62
- */
63
- export async function buildBlock(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
74
+ */ export async function buildBlock(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
64
75
  const builder = new LightweightBlockBuilder(db, telemetry);
65
76
  await builder.startNewBlock(globalVariables, l1ToL2Messages);
66
77
  await builder.addTxs(txs);
67
78
  return await builder.setBlockCompleted();
68
79
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2tfYnVpbGRlci9saWdodC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsT0FBTyxFQUNQLFlBQVksRUFHWixlQUFlLEdBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBd0IsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQXdCLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsZUFBZSxHQUNoQixNQUFNLDJDQUEyQyxDQUFDO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQVNsQyxZQUFvQixFQUE2QixFQUFVLFlBQTZCLGtCQUFrQixFQUFFO1FBQXhGLE9BQUUsR0FBRixFQUFFLENBQTJCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFKcEcsUUFBRyxHQUFrQixFQUFFLENBQUM7UUFFZixXQUFNLEdBQUcsWUFBWSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFeUMsQ0FBQztJQUVoSCxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWdDLEVBQUUsY0FBb0I7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FB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
package/dest/config.js CHANGED
@@ -1,41 +1,39 @@
1
1
  import { proverConfigMappings } from '@aztec/circuit-types';
2
2
  import { booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
3
- import { proverAgentConfigMappings, proverBrokerConfigMappings, } from './proving_broker/config.js';
3
+ import { proverAgentConfigMappings, proverBrokerConfigMappings } from './proving_broker/config.js';
4
4
  export const bbConfigMappings = {
5
5
  acvmWorkingDirectory: {
6
6
  env: 'ACVM_WORKING_DIRECTORY',
7
- description: 'The working directory to use for simulation/proving',
7
+ description: 'The working directory to use for simulation/proving'
8
8
  },
9
9
  acvmBinaryPath: {
10
10
  env: 'ACVM_BINARY_PATH',
11
- description: 'The path to the ACVM binary',
11
+ description: 'The path to the ACVM binary'
12
12
  },
13
13
  bbWorkingDirectory: {
14
14
  env: 'BB_WORKING_DIRECTORY',
15
- description: 'The working directory to use for proving',
15
+ description: 'The working directory to use for proving'
16
16
  },
17
17
  bbBinaryPath: {
18
18
  env: 'BB_BINARY_PATH',
19
- description: 'The path to the bb binary',
19
+ description: 'The path to the bb binary'
20
20
  },
21
21
  bbSkipCleanup: {
22
22
  env: 'BB_SKIP_CLEANUP',
23
23
  description: 'Whether to skip cleanup of bb temporary files',
24
- ...booleanConfigHelper(false),
25
- },
24
+ ...booleanConfigHelper(false)
25
+ }
26
26
  };
27
27
  export const proverClientConfigMappings = {
28
28
  ...bbConfigMappings,
29
29
  ...proverConfigMappings,
30
30
  ...proverAgentConfigMappings,
31
- ...proverBrokerConfigMappings,
31
+ ...proverBrokerConfigMappings
32
32
  };
33
33
  /**
34
34
  * Returns the prover configuration from the environment variables.
35
35
  * Note: If an environment variable is not set, the default value is used.
36
36
  * @returns The prover configuration.
37
- */
38
- export function getProverEnvVars() {
37
+ */ export function getProverEnvVars() {
39
38
  return getConfigFromMappings(proverClientConfigMappings);
40
39
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUEyQixtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9HLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsMEJBQTBCLEdBQzNCLE1BQU0sNEJBQTRCLENBQUM7QUFPcEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQThDO0lBQ3pFLG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSx3QkFBd0I7UUFDN0IsV0FBVyxFQUFFLHFEQUFxRDtLQUNuRTtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsV0FBVyxFQUFFLDZCQUE2QjtLQUMzQztJQUNELGtCQUFrQixFQUFFO1FBQ2xCLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsV0FBVyxFQUFFLDBDQUEwQztLQUN4RDtJQUNELFlBQVksRUFBRTtRQUNaLEdBQUcsRUFBRSxnQkFBZ0I7UUFDckIsV0FBVyxFQUFFLDJCQUEyQjtLQUN6QztJQUNELGFBQWEsRUFBRTtRQUNiLEdBQUcsRUFBRSxpQkFBaUI7UUFDdEIsV0FBVyxFQUFFLCtDQUErQztRQUM1RCxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQztLQUM5QjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBMkM7SUFDaEYsR0FBRyxnQkFBZ0I7SUFDbkIsR0FBRyxvQkFBb0I7SUFDdkIsR0FBRyx5QkFBeUI7SUFDNUIsR0FBRywwQkFBMEI7Q0FDOUIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE9BQU8scUJBQXFCLENBQXFCLDBCQUEwQixDQUFDLENBQUM7QUFDL0UsQ0FBQyJ9
package/dest/index.js CHANGED
@@ -1,3 +1,2 @@
1
1
  export * from './prover-client/index.js';
2
2
  export * from './config.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGFBQWEsQ0FBQyJ9
@@ -1,31 +1,34 @@
1
1
  import { MerkleTreeId } from '@aztec/circuit-types';
2
- import { AztecAddress, EthAddress, Fr, GasFees, GlobalVariables, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_TREE_HEIGHT, } from '@aztec/circuits.js';
2
+ import { AztecAddress, EthAddress, Fr, GasFees, GlobalVariables, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_TREE_HEIGHT } from '@aztec/circuits.js';
3
3
  import { padArrayEnd } from '@aztec/foundation/collection';
4
4
  import { randomBytes } from '@aztec/foundation/crypto';
5
5
  import { fileURLToPath } from '@aztec/foundation/url';
6
6
  import { NativeACVMSimulator, WASMSimulatorWithBlobs } from '@aztec/simulator/server';
7
7
  import { promises as fs } from 'fs';
8
8
  import path from 'path';
9
- const { BB_RELEASE_DIR = 'cpp/build/bin', TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', BB_SKIP_CLEANUP = '', NOIR_RELEASE_DIR = 'noir-repo/target/release', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '', } = process.env;
9
+ const { BB_RELEASE_DIR = 'cpp/build/bin', TEMP_DIR = '/tmp', BB_BINARY_PATH = '', BB_WORKING_DIRECTORY = '', BB_SKIP_CLEANUP = '', NOIR_RELEASE_DIR = 'noir-repo/target/release', ACVM_BINARY_PATH = '', ACVM_WORKING_DIRECTORY = '' } = process.env;
10
10
  // Determines if we have access to the bb binary and a tmp folder for temp files
11
- export const getEnvironmentConfig = async (logger) => {
11
+ export const getEnvironmentConfig = async (logger)=>{
12
12
  try {
13
- const expectedBBPath = BB_BINARY_PATH
14
- ? BB_BINARY_PATH
15
- : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb`;
13
+ const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb`;
16
14
  await fs.access(expectedBBPath, fs.constants.R_OK);
17
15
  const tempWorkingDirectory = `${TEMP_DIR}/${randomBytes(4).toString('hex')}`;
18
16
  const bbWorkingDirectory = BB_WORKING_DIRECTORY ? BB_WORKING_DIRECTORY : `${tempWorkingDirectory}/bb`;
19
- await fs.mkdir(bbWorkingDirectory, { recursive: true });
17
+ await fs.mkdir(bbWorkingDirectory, {
18
+ recursive: true
19
+ });
20
20
  logger.verbose(`Using native BB binary at ${expectedBBPath} with working directory ${bbWorkingDirectory}`);
21
- const expectedAcvmPath = ACVM_BINARY_PATH
22
- ? ACVM_BINARY_PATH
23
- : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../noir/', NOIR_RELEASE_DIR)}/acvm`;
21
+ const expectedAcvmPath = ACVM_BINARY_PATH ? ACVM_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../noir/', NOIR_RELEASE_DIR)}/acvm`;
24
22
  await fs.access(expectedAcvmPath, fs.constants.R_OK);
25
23
  const acvmWorkingDirectory = ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : `${tempWorkingDirectory}/acvm`;
26
- await fs.mkdir(acvmWorkingDirectory, { recursive: true });
24
+ await fs.mkdir(acvmWorkingDirectory, {
25
+ recursive: true
26
+ });
27
27
  logger.verbose(`Using native ACVM binary at ${expectedAcvmPath} with working directory ${acvmWorkingDirectory}`);
28
- const bbSkipCleanup = ['1', 'true'].includes(BB_SKIP_CLEANUP);
28
+ const bbSkipCleanup = [
29
+ '1',
30
+ 'true'
31
+ ].includes(BB_SKIP_CLEANUP);
29
32
  bbSkipCleanup && logger.verbose(`Not going to clean up BB working directory ${bbWorkingDirectory} after run`);
30
33
  return {
31
34
  acvmWorkingDirectory,
@@ -33,10 +36,9 @@ export const getEnvironmentConfig = async (logger) => {
33
36
  expectedAcvmPath,
34
37
  expectedBBPath,
35
38
  directoryToCleanup: ACVM_WORKING_DIRECTORY && BB_WORKING_DIRECTORY ? undefined : tempWorkingDirectory,
36
- bbSkipCleanup,
39
+ bbSkipCleanup
37
40
  };
38
- }
39
- catch (err) {
41
+ } catch (err) {
40
42
  logger.verbose(`Native BB not available, error: ${err}`);
41
43
  return undefined;
42
44
  }
@@ -45,11 +47,12 @@ export async function getSimulationProvider(config, logger) {
45
47
  if (config.acvmBinaryPath && config.acvmWorkingDirectory) {
46
48
  try {
47
49
  await fs.access(config.acvmBinaryPath, fs.constants.R_OK);
48
- await fs.mkdir(config.acvmWorkingDirectory, { recursive: true });
50
+ await fs.mkdir(config.acvmWorkingDirectory, {
51
+ recursive: true
52
+ });
49
53
  logger?.info(`Using native ACVM at ${config.acvmBinaryPath} and working directory ${config.acvmWorkingDirectory}`);
50
54
  return new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath);
51
- }
52
- catch {
55
+ } catch {
53
56
  logger?.warn(`Failed to access ACVM at ${config.acvmBinaryPath}, falling back to WASM`);
54
57
  }
55
58
  }
@@ -57,14 +60,13 @@ export async function getSimulationProvider(config, logger) {
57
60
  return new WASMSimulatorWithBlobs();
58
61
  }
59
62
  // Updates the expectedDb trees based on the new note hashes, contracts, and nullifiers from these txs
60
- export const updateExpectedTreesFromTxs = async (db, txs) => {
61
- await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, txs.flatMap(tx => padArrayEnd(tx.txEffect.noteHashes, Fr.zero(), MAX_NOTE_HASHES_PER_TX)));
62
- await db.batchInsert(MerkleTreeId.NULLIFIER_TREE, txs.flatMap(tx => padArrayEnd(tx.txEffect.nullifiers, Fr.zero(), MAX_NULLIFIERS_PER_TX).map(x => x.toBuffer())), NULLIFIER_TREE_HEIGHT);
63
- for (const tx of txs) {
64
- await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.txEffect.publicDataWrites.map(write => write.toBuffer()));
63
+ export const updateExpectedTreesFromTxs = async (db, txs)=>{
64
+ await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, txs.flatMap((tx)=>padArrayEnd(tx.txEffect.noteHashes, Fr.zero(), MAX_NOTE_HASHES_PER_TX)));
65
+ await db.batchInsert(MerkleTreeId.NULLIFIER_TREE, txs.flatMap((tx)=>padArrayEnd(tx.txEffect.nullifiers, Fr.zero(), MAX_NULLIFIERS_PER_TX).map((x)=>x.toBuffer())), NULLIFIER_TREE_HEIGHT);
66
+ for (const tx of txs){
67
+ await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.txEffect.publicDataWrites.map((write)=>write.toBuffer()));
65
68
  }
66
69
  };
67
- export const makeGlobals = (blockNumber) => {
68
- return new GlobalVariables(Fr.ZERO, Fr.ZERO, new Fr(blockNumber) /** block number */, new Fr(blockNumber) /** slot number */, new Fr(blockNumber) /** timestamp */, EthAddress.ZERO, AztecAddress.ZERO, GasFees.empty());
70
+ export const makeGlobals = (blockNumber)=>{
71
+ return new GlobalVariables(Fr.ZERO, Fr.ZERO, new Fr(blockNumber), new Fr(blockNumber), new Fr(blockNumber), EthAddress.ZERO, AztecAddress.ZERO, GasFees.empty());
69
72
  };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9ja3MvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBb0QsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixFQUFFLEVBQ0YsT0FBTyxFQUNQLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBMkIsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRyxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsTUFBTSxFQUNKLGNBQWMsR0FBRyxlQUFlLEVBQ2hDLFFBQVEsR0FBRyxNQUFNLEVBQ2pCLGNBQWMsR0FBRyxFQUFFLEVBQ25CLG9CQUFvQixHQUFHLEVBQUUsRUFDekIsZUFBZSxHQUFHLEVBQUUsRUFDcEIsZ0JBQWdCLEdBQUcsMEJBQTBCLEVBQzdDLGdCQUFnQixHQUFHLEVBQUUsRUFDckIsc0JBQXNCLEdBQUcsRUFBRSxHQUM1QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFFaEIsZ0ZBQWdGO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUMzRCxJQUFJLENBQUM7UUFDSCxNQUFNLGNBQWMsR0FBRyxjQUFjO1lBQ25DLENBQUMsQ0FBQyxjQUFj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
@@ -1,11 +1,11 @@
1
1
  import { makeBloatedProcessedTx } from '@aztec/circuit-types/test';
2
- import { TreeSnapshots, } from '@aztec/circuits.js';
2
+ import { TreeSnapshots } from '@aztec/circuits.js';
3
3
  import { times, timesParallel } from '@aztec/foundation/collection';
4
4
  import { Fr } from '@aztec/foundation/fields';
5
5
  import { TestDateProvider } from '@aztec/foundation/timer';
6
6
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
7
7
  import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
8
- import { PublicProcessor, PublicTxSimulator, WASMSimulatorWithBlobs, } from '@aztec/simulator/server';
8
+ import { PublicProcessor, PublicTxSimulator, WASMSimulatorWithBlobs } from '@aztec/simulator/server';
9
9
  import { getTelemetryClient } from '@aztec/telemetry-client';
10
10
  import { NativeWorldStateService } from '@aztec/world-state/native';
11
11
  import { jest } from '@jest/globals';
@@ -19,7 +19,19 @@ import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
19
19
  import { ProverAgent } from '../prover-agent/prover-agent.js';
20
20
  import { getEnvironmentConfig, getSimulationProvider, makeGlobals, updateExpectedTreesFromTxs } from './fixtures.js';
21
21
  export class TestContext {
22
- constructor(publicTxSimulator, worldState, publicProcessor, simulationProvider, globalVariables, prover, proverAgent, orchestrator, blockNumber, directoriesToCleanup, logger) {
22
+ publicTxSimulator;
23
+ worldState;
24
+ publicProcessor;
25
+ simulationProvider;
26
+ globalVariables;
27
+ prover;
28
+ proverAgent;
29
+ orchestrator;
30
+ blockNumber;
31
+ directoriesToCleanup;
32
+ logger;
33
+ headers;
34
+ constructor(publicTxSimulator, worldState, publicProcessor, simulationProvider, globalVariables, prover, proverAgent, orchestrator, blockNumber, directoriesToCleanup, logger){
23
35
  this.publicTxSimulator = publicTxSimulator;
24
36
  this.worldState = worldState;
25
37
  this.publicProcessor = publicProcessor;
@@ -36,7 +48,7 @@ export class TestContext {
36
48
  get epochProver() {
37
49
  return this.orchestrator;
38
50
  }
39
- static async new(logger, proverCount = 4, createProver = _ => Promise.resolve(new TestCircuitProver(new WASMSimulatorWithBlobs())), blockNumber = 1) {
51
+ static async new(logger, proverCount = 4, createProver = (_)=>Promise.resolve(new TestCircuitProver(new WASMSimulatorWithBlobs())), blockNumber = 1) {
40
52
  const directoriesToCleanup = [];
41
53
  const globalVariables = makeGlobals(blockNumber);
42
54
  const worldStateDB = mock();
@@ -50,18 +62,17 @@ export class TestContext {
50
62
  const config = await getEnvironmentConfig(logger);
51
63
  const simulationProvider = await getSimulationProvider({
52
64
  acvmWorkingDirectory: config?.acvmWorkingDirectory,
53
- acvmBinaryPath: config?.expectedAcvmPath,
65
+ acvmBinaryPath: config?.expectedAcvmPath
54
66
  });
55
67
  if (!config) {
56
68
  localProver = new TestCircuitProver(simulationProvider);
57
- }
58
- else {
69
+ } else {
59
70
  const bbConfig = {
60
71
  acvmBinaryPath: config.expectedAcvmPath,
61
72
  acvmWorkingDirectory: config.acvmWorkingDirectory,
62
73
  bbBinaryPath: config.expectedBBPath,
63
74
  bbWorkingDirectory: config.bbWorkingDirectory,
64
- bbSkipCleanup: config.bbSkipCleanup,
75
+ bbSkipCleanup: config.bbSkipCleanup
65
76
  };
66
77
  localProver = await createProver(bbConfig);
67
78
  }
@@ -86,12 +97,17 @@ export class TestContext {
86
97
  }
87
98
  async cleanup() {
88
99
  await this.proverAgent.stop();
89
- for (const dir of this.directoriesToCleanup.filter(x => x !== '')) {
90
- await fs.rm(dir, { recursive: true, force: true });
100
+ for (const dir of this.directoriesToCleanup.filter((x)=>x !== '')){
101
+ await fs.rm(dir, {
102
+ recursive: true,
103
+ force: true
104
+ });
91
105
  }
92
106
  }
93
107
  async makeProcessedTx(seedOrOpts) {
94
- const opts = typeof seedOrOpts === 'number' ? { seed: seedOrOpts } : seedOrOpts;
108
+ const opts = typeof seedOrOpts === 'number' ? {
109
+ seed: seedOrOpts
110
+ } : seedOrOpts;
95
111
  const blockNum = (opts?.globalVariables ?? this.globalVariables).blockNumber.toNumber();
96
112
  const header = this.getBlockHeader(blockNum - 1);
97
113
  return makeBloatedProcessedTx({
@@ -99,29 +115,37 @@ export class TestContext {
99
115
  vkTreeRoot: await getVKTreeRoot(),
100
116
  protocolContractTreeRoot,
101
117
  globalVariables: this.globalVariables,
102
- ...opts,
118
+ ...opts
103
119
  });
104
120
  }
105
- /** Creates a block with the given number of txs and adds it to world-state */
106
- async makePendingBlock(numTxs, numMsgs = 0, blockNumOrGlobals = this.globalVariables, makeProcessedTxOpts = () => ({})) {
121
+ /** Creates a block with the given number of txs and adds it to world-state */ async makePendingBlock(numTxs, numMsgs = 0, blockNumOrGlobals = this.globalVariables, makeProcessedTxOpts = ()=>({})) {
107
122
  const globalVariables = typeof blockNumOrGlobals === 'number' ? makeGlobals(blockNumOrGlobals) : blockNumOrGlobals;
108
123
  const blockNum = globalVariables.blockNumber.toNumber();
109
124
  const db = await this.worldState.fork();
110
- const msgs = times(numMsgs, i => new Fr(blockNum * 100 + i));
111
- const txs = await timesParallel(numTxs, i => this.makeProcessedTx({ seed: i + blockNum * 1000, globalVariables, ...makeProcessedTxOpts(i) }));
125
+ const msgs = times(numMsgs, (i)=>new Fr(blockNum * 100 + i));
126
+ const txs = await timesParallel(numTxs, (i)=>this.makeProcessedTx({
127
+ seed: i + blockNum * 1000,
128
+ globalVariables,
129
+ ...makeProcessedTxOpts(i)
130
+ }));
112
131
  await this.setEndTreeRoots(txs);
113
132
  const block = await buildBlock(txs, globalVariables, msgs, db);
114
133
  this.headers.set(blockNum, block.header);
115
134
  await this.worldState.handleL2BlockAndMessages(block, msgs);
116
- return { block, txs, msgs };
135
+ return {
136
+ block,
137
+ txs,
138
+ msgs
139
+ };
117
140
  }
118
141
  async processPublicFunctions(txs, maxTransactions) {
119
- const defaultExecutorImplementation = (_stateManager, executionRequest, allocatedGas, _transactionFee, _fnName) => {
120
- for (const tx of txs) {
121
- const allCalls = tx.publicTeardownFunctionCall.isEmpty()
122
- ? tx.enqueuedPublicFunctionCalls
123
- : [...tx.enqueuedPublicFunctionCalls, tx.publicTeardownFunctionCall];
124
- for (const request of allCalls) {
142
+ const defaultExecutorImplementation = (_stateManager, executionRequest, allocatedGas, _transactionFee, _fnName)=>{
143
+ for (const tx of txs){
144
+ const allCalls = tx.publicTeardownFunctionCall.isEmpty() ? tx.enqueuedPublicFunctionCalls : [
145
+ ...tx.enqueuedPublicFunctionCalls,
146
+ tx.publicTeardownFunctionCall
147
+ ];
148
+ for (const request of allCalls){
125
149
  if (executionRequest.callContext.equals(request.callContext)) {
126
150
  return Promise.resolve(new AvmFinalizedCallResult(/*reverted=*/ false, /*output=*/ [], /*gasLeft=*/ allocatedGas));
127
151
  }
@@ -133,8 +157,10 @@ export class TestContext {
133
157
  }
134
158
  async setEndTreeRoots(txs) {
135
159
  const db = await this.worldState.fork();
136
- for (const tx of txs) {
137
- await updateExpectedTreesFromTxs(db, [tx]);
160
+ for (const tx of txs){
161
+ await updateExpectedTreesFromTxs(db, [
162
+ tx
163
+ ]);
138
164
  const stateReference = await db.getStateReference();
139
165
  if (tx.avmProvingRequest) {
140
166
  tx.avmProvingRequest.inputs.publicInputs.endTreeSnapshots = new TreeSnapshots(stateReference.l1ToL2MessageTree, stateReference.partial.noteHashTree, stateReference.partial.nullifierTree, stateReference.partial.publicDataTree);
@@ -147,14 +173,13 @@ export class TestContext {
147
173
  if (executorMock) {
148
174
  simulateInternal.mockImplementation(executorMock);
149
175
  }
150
- return await this.publicProcessor.process(txs, { maxTransactions });
176
+ return await this.publicProcessor.process(txs, {
177
+ maxTransactions
178
+ });
151
179
  }
152
180
  }
153
181
  class TestProvingOrchestrator extends ProvingOrchestrator {
154
- constructor() {
155
- super(...arguments);
156
- this.isVerifyBuiltBlockAgainstSyncedStateEnabled = false;
157
- }
182
+ isVerifyBuiltBlockAgainstSyncedStateEnabled = false;
158
183
  // Disable this check by default, since it requires seeding world state with the block being built
159
184
  // This is only enabled in some tests with multiple blocks that populate the pending chain via makePendingBlock
160
185
  verifyBuiltBlockAgainstSyncedState(l2Block, newArchive) {
@@ -164,4 +189,3 @@ class TestProvingOrchestrator extends ProvingOrchestrator {
164
189
  return Promise.resolve();
165
190
  }
166
191
  }
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vY2tzL3Rlc3RfY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBS0wsYUFBYSxHQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUJBQWlCLEVBRWpCLHNCQUFzQixHQUV2QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRWhHLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSww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