@aztec/simulator 0.40.1 → 0.41.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 (122) hide show
  1. package/dest/acvm/oracle/oracle.d.ts +4 -2
  2. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  3. package/dest/acvm/oracle/oracle.js +21 -18
  4. package/dest/acvm/oracle/typed_oracle.d.ts +6 -11
  5. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/typed_oracle.js +11 -5
  7. package/dest/avm/avm_execution_environment.d.ts +4 -3
  8. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  9. package/dest/avm/avm_execution_environment.js +7 -5
  10. package/dest/avm/avm_simulator.d.ts.map +1 -1
  11. package/dest/avm/avm_simulator.js +5 -4
  12. package/dest/avm/errors.d.ts +6 -0
  13. package/dest/avm/errors.d.ts.map +1 -1
  14. package/dest/avm/errors.js +10 -1
  15. package/dest/avm/fixtures/index.js +3 -3
  16. package/dest/avm/journal/journal.d.ts +2 -3
  17. package/dest/avm/journal/journal.d.ts.map +1 -1
  18. package/dest/avm/journal/journal.js +6 -11
  19. package/dest/avm/journal/nullifiers.d.ts +17 -5
  20. package/dest/avm/journal/nullifiers.d.ts.map +1 -1
  21. package/dest/avm/journal/nullifiers.js +27 -10
  22. package/dest/avm/journal/public_storage.d.ts +19 -6
  23. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  24. package/dest/avm/journal/public_storage.js +30 -12
  25. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  26. package/dest/avm/opcodes/accrued_substate.js +6 -7
  27. package/dest/avm/opcodes/external_calls.d.ts +2 -2
  28. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  29. package/dest/avm/opcodes/external_calls.js +22 -11
  30. package/dest/avm/opcodes/storage.d.ts +0 -7
  31. package/dest/avm/opcodes/storage.d.ts.map +1 -1
  32. package/dest/avm/opcodes/storage.js +3 -12
  33. package/dest/client/client_execution_context.d.ts +35 -17
  34. package/dest/client/client_execution_context.d.ts.map +1 -1
  35. package/dest/client/client_execution_context.js +70 -33
  36. package/dest/client/db_oracle.d.ts +10 -11
  37. package/dest/client/db_oracle.d.ts.map +1 -1
  38. package/dest/client/execution_note_cache.d.ts +17 -0
  39. package/dest/client/execution_note_cache.d.ts.map +1 -1
  40. package/dest/client/execution_note_cache.js +25 -2
  41. package/dest/client/execution_result.d.ts +11 -0
  42. package/dest/client/execution_result.d.ts.map +1 -1
  43. package/dest/client/execution_result.js +21 -3
  44. package/dest/client/private_execution.d.ts.map +1 -1
  45. package/dest/client/private_execution.js +4 -1
  46. package/dest/client/simulator.d.ts.map +1 -1
  47. package/dest/client/simulator.js +6 -6
  48. package/dest/client/view_data_oracle.d.ts +10 -10
  49. package/dest/client/view_data_oracle.d.ts.map +1 -1
  50. package/dest/client/view_data_oracle.js +11 -11
  51. package/dest/common/index.d.ts +1 -0
  52. package/dest/common/index.d.ts.map +1 -1
  53. package/dest/common/index.js +2 -1
  54. package/dest/common/return_values.d.ts +11 -0
  55. package/dest/common/return_values.d.ts.map +1 -0
  56. package/dest/common/return_values.js +13 -0
  57. package/dest/mocks/fixtures.d.ts +2 -1
  58. package/dest/mocks/fixtures.d.ts.map +1 -1
  59. package/dest/mocks/fixtures.js +2 -3
  60. package/dest/public/abstract_phase_manager.d.ts +3 -3
  61. package/dest/public/abstract_phase_manager.d.ts.map +1 -1
  62. package/dest/public/abstract_phase_manager.js +17 -10
  63. package/dest/public/app_logic_phase_manager.d.ts +1 -1
  64. package/dest/public/execution.d.ts +2 -6
  65. package/dest/public/execution.d.ts.map +1 -1
  66. package/dest/public/execution.js +1 -1
  67. package/dest/public/executor.d.ts.map +1 -1
  68. package/dest/public/executor.js +11 -8
  69. package/dest/public/hints_builder.d.ts +2 -2
  70. package/dest/public/hints_builder.d.ts.map +1 -1
  71. package/dest/public/hints_builder.js +4 -4
  72. package/dest/public/public_processor.d.ts +2 -2
  73. package/dest/public/public_processor.d.ts.map +1 -1
  74. package/dest/public/public_processor.js +5 -5
  75. package/dest/public/setup_phase_manager.d.ts +1 -1
  76. package/dest/public/setup_phase_manager.js +2 -2
  77. package/dest/public/tail_phase_manager.d.ts +1 -1
  78. package/dest/public/tail_phase_manager.d.ts.map +1 -1
  79. package/dest/public/tail_phase_manager.js +4 -4
  80. package/dest/public/teardown_phase_manager.d.ts +1 -1
  81. package/dest/public/teardown_phase_manager.js +2 -2
  82. package/dest/public/transitional_adaptors.d.ts +2 -1
  83. package/dest/public/transitional_adaptors.d.ts.map +1 -1
  84. package/dest/public/transitional_adaptors.js +17 -3
  85. package/dest/public/utils.js +3 -3
  86. package/package.json +8 -8
  87. package/src/acvm/oracle/oracle.ts +26 -23
  88. package/src/acvm/oracle/typed_oracle.ts +15 -15
  89. package/src/avm/avm_execution_environment.ts +9 -5
  90. package/src/avm/avm_simulator.ts +5 -3
  91. package/src/avm/errors.ts +10 -0
  92. package/src/avm/fixtures/index.ts +2 -2
  93. package/src/avm/journal/journal.ts +10 -14
  94. package/src/avm/journal/nullifiers.ts +27 -14
  95. package/src/avm/journal/public_storage.ts +30 -16
  96. package/src/avm/opcodes/accrued_substate.ts +5 -6
  97. package/src/avm/opcodes/external_calls.ts +23 -9
  98. package/src/avm/opcodes/storage.ts +2 -12
  99. package/src/client/client_execution_context.ts +75 -37
  100. package/src/client/db_oracle.ts +10 -11
  101. package/src/client/execution_note_cache.ts +29 -1
  102. package/src/client/execution_result.ts +26 -2
  103. package/src/client/private_execution.ts +3 -0
  104. package/src/client/simulator.ts +4 -5
  105. package/src/client/view_data_oracle.ts +12 -12
  106. package/src/common/index.ts +1 -0
  107. package/src/common/return_values.ts +18 -0
  108. package/src/mocks/fixtures.ts +2 -2
  109. package/src/public/abstract_phase_manager.ts +21 -15
  110. package/src/public/execution.ts +2 -6
  111. package/src/public/executor.ts +14 -7
  112. package/src/public/hints_builder.ts +11 -3
  113. package/src/public/public_processor.ts +7 -7
  114. package/src/public/setup_phase_manager.ts +1 -1
  115. package/src/public/tail_phase_manager.ts +5 -7
  116. package/src/public/teardown_phase_manager.ts +1 -1
  117. package/src/public/transitional_adaptors.ts +17 -2
  118. package/src/public/utils.ts +2 -2
  119. package/dest/client/logs_cache.d.ts +0 -33
  120. package/dest/client/logs_cache.d.ts.map +0 -1
  121. package/dest/client/logs_cache.js +0 -59
  122. package/src/client/logs_cache.ts +0 -65
@@ -1,7 +1,7 @@
1
1
  import { FunctionSelector, Gas } from '@aztec/circuits.js';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { convertAvmResultsToPxResult, createPublicExecution } from '../../public/transitional_adaptors.js';
4
- import { gasLeftToGas, sumGas } from '../avm_gas.js';
4
+ import { gasLeftToGas } from '../avm_gas.js';
5
5
  import { Field, Uint8 } from '../avm_memory_types.js';
6
6
  import { AvmSimulator } from '../avm_simulator.js';
7
7
  import { RethrownError } from '../errors.js';
@@ -13,7 +13,7 @@ class ExternalCall extends Instruction {
13
13
  // Function selector is temporary since eventually public contract bytecode will be one blob
14
14
  // containing all functions, and function selector will become an application-level mechanism
15
15
  // (e.g. first few bytes of calldata + compiler-generated jump table)
16
- temporaryFunctionSelectorOffset) {
16
+ functionSelectorOffset) {
17
17
  super();
18
18
  this.indirect = indirect;
19
19
  this.gasOffset = gasOffset;
@@ -23,7 +23,7 @@ class ExternalCall extends Instruction {
23
23
  this.retOffset = retOffset;
24
24
  this.retSize = retSize;
25
25
  this.successOffset = successOffset;
26
- this.temporaryFunctionSelectorOffset = temporaryFunctionSelectorOffset;
26
+ this.functionSelectorOffset = functionSelectorOffset;
27
27
  }
28
28
  async execute(context) {
29
29
  const memory = context.machineState.memory.track(this.type);
@@ -31,15 +31,22 @@ class ExternalCall extends Instruction {
31
31
  const callAddress = memory.getAs(addrOffset);
32
32
  const calldataSize = memory.get(argsSizeOffset).toNumber();
33
33
  const calldata = memory.getSlice(argsOffset, calldataSize).map(f => f.toFr());
34
- const l2Gas = memory.get(gasOffset).toNumber();
35
- const daGas = memory.getAs(gasOffset + 1).toNumber();
36
- const functionSelector = memory.getAs(this.temporaryFunctionSelectorOffset).toFr();
37
- const allocatedGas = { l2Gas, daGas };
34
+ const functionSelector = memory.getAs(this.functionSelectorOffset).toFr();
35
+ // If we are already in a static call, we propagate the environment.
36
+ const callType = context.environment.isStaticCall ? 'STATICCALL' : this.type;
37
+ // First we consume the gas for this operation.
38
38
  const memoryOperations = { reads: calldataSize + 5, writes: 1 + this.retSize, indirect: this.indirect };
39
- const totalGas = sumGas(this.gasCost(memoryOperations), allocatedGas);
40
- context.machineState.consumeGas(totalGas);
39
+ context.machineState.consumeGas(this.gasCost(memoryOperations));
40
+ // Then we consume the gas allocated for the nested call. The excess will be refunded later.
41
+ // Gas allocation is capped by the amount of gas left in the current context.
42
+ // We have to do some dancing here because the gas allocation is a field,
43
+ // but in the machine state we track gas as a number.
44
+ const allocatedL2Gas = Number(BigIntMin(memory.get(gasOffset).toBigInt(), BigInt(context.machineState.l2GasLeft)));
45
+ const allocatedDaGas = Number(BigIntMin(memory.get(gasOffset + 1).toBigInt(), BigInt(context.machineState.daGasLeft)));
46
+ const allocatedGas = { l2Gas: allocatedL2Gas, daGas: allocatedDaGas };
47
+ context.machineState.consumeGas(allocatedGas);
41
48
  // TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
42
- const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, this.type, FunctionSelector.fromField(functionSelector));
49
+ const nestedContext = context.createNestedContractCallContext(callAddress.toFr(), calldata, allocatedGas, callType, FunctionSelector.fromField(functionSelector));
43
50
  const startSideEffectCounter = nestedContext.persistableState.trace.accessCounter;
44
51
  const oldStyleExecution = createPublicExecution(startSideEffectCounter, nestedContext.environment, calldata);
45
52
  const nestedCallResults = await new AvmSimulator(nestedContext).execute();
@@ -165,4 +172,8 @@ Revert.wireFormat = [
165
172
  OperandType.UINT32,
166
173
  OperandType.UINT32,
167
174
  ];
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxNQUFlLFlBQWEsU0FBUSxXQUFXO0lBZ0I3QyxZQUNVLFFBQWdCLEVBQ2hCLFNBQWlCLENBQUMsK0RBQStELEVBQ2pGLFVBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLGNBQXNCLEVBQ3RCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixhQUFxQjtJQUM3Qiw0RkFBNEY7SUFDNUYsNkZBQTZGO0lBQzdGLHFFQUFxRTtJQUM3RCwrQkFBdUM7UUFFL0MsS0FBSyxFQUFFLENBQUM7UUFiQSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsZUFBVSxHQUFWLFVBQVUs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
175
+ /** Returns the smaller of two bigints. */
176
+ function BigIntMin(a, b) {
177
+ return a < b ? a : b;
178
+ }
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWxfY2FsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL29wY29kZXMvZXh0ZXJuYWxfY2FsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQWUsWUFBYSxTQUFRLFdBQVc7SUFnQjdDLFlBQ1UsUUFBZ0IsRUFDaEIsU0FBaUIsQ0FBQywrREFBK0QsRUFDakYsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsY0FBc0IsRUFDdEIsU0FBaUIsRUFDakIsT0FBZSxFQUNmLGFBQXFCO0lBQzdCLDRGQUE0RjtJQUM1Riw2RkFBNkY7SUFDN0YscUVBQXFFO0lBQzdELHNCQUE4QjtRQUV0QyxLQUFLLEVBQUUsQ0FBQztRQWJBLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xC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
@@ -1,7 +1,6 @@
1
1
  import type { AvmContext } from '../avm_context.js';
2
2
  import { type Gas } from '../avm_gas.js';
3
3
  import { type MemoryOperations } from '../avm_memory_types.js';
4
- import { InstructionExecutionError } from '../errors.js';
5
4
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
6
5
  import { Instruction } from './instruction.js';
7
6
  declare abstract class BaseStorageInstruction extends Instruction {
@@ -27,11 +26,5 @@ export declare class SLoad extends BaseStorageInstruction {
27
26
  constructor(indirect: number, slotOffset: number, size: number, dstOffset: number);
28
27
  execute(context: AvmContext): Promise<void>;
29
28
  }
30
- /**
31
- * Error is thrown when a static call attempts to alter storage
32
- */
33
- export declare class StaticCallStorageAlterError extends InstructionExecutionError {
34
- constructor();
35
- }
36
29
  export {};
37
30
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,GAAG,EAAoD,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAS,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,sBAAuB,SAAQ,WAAW;IAWrD,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAe,IAAI,EAAE,MAAM;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM;IAZ3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAM9C;gBAGU,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACD,IAAI,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM;cAKR,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,GAAG;CAK7F;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAIrF,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAIpE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBzD;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,yBAAyB;;CAKzE"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,GAAG,EAAoD,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAS,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,sBAAuB,SAAQ,WAAW;IAWrD,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAe,IAAI,EAAE,MAAM;IACpC,SAAS,CAAC,OAAO,EAAE,MAAM;IAZ3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAM9C;gBAGU,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACD,IAAI,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM;cAKR,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,GAAG;CAK7F;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAIrF,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAIpE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBzD"}
@@ -1,7 +1,7 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
2
  import { getBaseGasCost, getMemoryGasCost, mulGas, sumGas } from '../avm_gas.js';
3
3
  import { Field } from '../avm_memory_types.js';
4
- import { InstructionExecutionError } from '../errors.js';
4
+ import { StaticCallAlterationError } from '../errors.js';
5
5
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
6
6
  import { Addressing } from './addressing_mode.js';
7
7
  import { Instruction } from './instruction.js';
@@ -33,7 +33,7 @@ export class SStore extends BaseStorageInstruction {
33
33
  }
34
34
  async execute(context) {
35
35
  if (context.environment.isStaticCall) {
36
- throw new StaticCallStorageAlterError();
36
+ throw new StaticCallAlterationError();
37
37
  }
38
38
  const memoryOperations = { reads: this.size + 1, indirect: this.indirect };
39
39
  const memory = context.machineState.memory.track(this.type);
@@ -72,13 +72,4 @@ export class SLoad extends BaseStorageInstruction {
72
72
  }
73
73
  SLoad.type = 'SLOAD';
74
74
  SLoad.opcode = Opcode.SLOAD;
75
- /**
76
- * Error is thrown when a static call attempts to alter storage
77
- */
78
- export class StaticCallStorageAlterError extends InstructionExecutionError {
79
- constructor() {
80
- super('Static calls cannot alter storage');
81
- this.name = 'StaticCallStorageAlterError';
82
- }
83
- }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5QyxPQUFPLEVBQVksY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQWUsc0JBQXVCLFNBQVEsV0FBVztJQVV2RCxZQUNZLFFBQWdCLEVBQ2hCLE9BQWUsRUFDRCxJQUFZLEVBQzFCLE9BQWU7UUFFekIsS0FBSyxFQUFFLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDRCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFHM0IsQ0FBQztJQUVrQixPQUFPLENBQUMsU0FBMkQ7UUFDcEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQXRCRCww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
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUc5QyxPQUFPLEVBQVksY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLE1BQWUsc0JBQXVCLFNBQVEsV0FBVztJQVV2RCxZQUNZLFFBQWdCLEVBQ2hCLE9BQWUsRUFDRCxJQUFZLEVBQzFCLE9BQWU7UUFFekIsS0FBSyxFQUFFLENBQUM7UUFMRSxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDRCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFHM0IsQ0FBQztJQUVrQixPQUFPLENBQUMsU0FBMkQ7UUFDcEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sTUFBTSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1QyxDQUFDOztBQXRCRCww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
@@ -1,15 +1,14 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { type AuthWitness, type AztecNode, EncryptedFunctionL2Logs, EncryptedL2Log, type NoteStatus, UnencryptedFunctionL2Logs, type UnencryptedL2Log } from '@aztec/circuit-types';
2
+ import { type AuthWitness, type AztecNode, EncryptedL2Log, type NoteStatus, type UnencryptedL2Log } from '@aztec/circuit-types';
3
3
  import { CallContext, FunctionSelector, type Header, PublicCallRequest, type TxContext } from '@aztec/circuits.js';
4
4
  import { type FunctionAbi } from '@aztec/foundation/abi';
5
- import { type AztecAddress } from '@aztec/foundation/aztec-address';
5
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
6
6
  import { Fr, type Point } from '@aztec/foundation/fields';
7
7
  import { type NoteData } from '../acvm/index.js';
8
8
  import { type PackedValuesCache } from '../common/packed_values_cache.js';
9
9
  import { type DBOracle } from './db_oracle.js';
10
10
  import { type ExecutionNoteCache } from './execution_note_cache.js';
11
11
  import { CountedLog, type ExecutionResult, type NoteAndSlot } from './execution_result.js';
12
- import { type LogsCache } from './logs_cache.js';
13
12
  import { ViewDataOracle } from './view_data_oracle.js';
14
13
  /**
15
14
  * The execution context for a client tx simulation.
@@ -23,7 +22,6 @@ export declare class ClientExecutionContext extends ViewDataOracle {
23
22
  protected readonly historicalHeader: Header;
24
23
  private readonly packedValuesCache;
25
24
  private readonly noteCache;
26
- private readonly logsCache;
27
25
  private node;
28
26
  protected sideEffectCounter: number;
29
27
  /**
@@ -45,6 +43,7 @@ export declare class ClientExecutionContext extends ViewDataOracle {
45
43
  */
46
44
  private noteHashLeafIndexMap;
47
45
  private nullifiedNoteHashCounters;
46
+ private noteEncryptedLogs;
48
47
  private encryptedLogs;
49
48
  private unencryptedLogs;
50
49
  private nestedExecutions;
@@ -54,7 +53,7 @@ export declare class ClientExecutionContext extends ViewDataOracle {
54
53
  /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
55
54
  historicalHeader: Header,
56
55
  /** List of transient auth witnesses to be used during this simulation */
57
- authWitnesses: AuthWitness[], packedValuesCache: PackedValuesCache, noteCache: ExecutionNoteCache, logsCache: LogsCache, db: DBOracle, node: AztecNode, sideEffectCounter?: number, log?: import("@aztec/foundation/log").Logger);
56
+ authWitnesses: AuthWitness[], packedValuesCache: PackedValuesCache, noteCache: ExecutionNoteCache, db: DBOracle, node: AztecNode, sideEffectCounter?: number, log?: import("@aztec/foundation/log").Logger);
58
57
  /**
59
58
  * Writes the function inputs to the initial witness.
60
59
  * @param abi - The function ABI.
@@ -73,21 +72,27 @@ export declare class ClientExecutionContext extends ViewDataOracle {
73
72
  getNewNotes(): NoteAndSlot[];
74
73
  getNullifiedNoteHashCounters(): Map<number, number>;
75
74
  /**
76
- * Return the encrypted logs emitted during this execution.
75
+ * Return the note encrypted logs emitted during this execution.
77
76
  */
78
- getEncryptedLogs(): CountedLog<EncryptedL2Log>[];
77
+ getNoteEncryptedLogs(): CountedLog<EncryptedL2Log>[];
78
+ /**
79
+ * Sometimes notes can be chopped after a nested execution is complete.
80
+ * This means finished nested executions still hold transient logs. This method removes them.
81
+ * TODO(Miranda): is there a cleaner solution?
82
+ */
83
+ chopNoteEncryptedLogs(): void;
79
84
  /**
80
- * Return the encrypted logs emitted during this execution and nested executions.
85
+ * Return the note encrypted logs emitted during this execution and nested executions.
81
86
  */
82
- getAllEncryptedLogs(): EncryptedFunctionL2Logs;
87
+ getAllNoteEncryptedLogs(): CountedLog<EncryptedL2Log>[];
83
88
  /**
84
89
  * Return the encrypted logs emitted during this execution.
85
90
  */
86
- getUnencryptedLogs(): CountedLog<UnencryptedL2Log>[];
91
+ getEncryptedLogs(): CountedLog<EncryptedL2Log>[];
87
92
  /**
88
- * Return the unencrypted logs emitted during this execution and nested executions.
93
+ * Return the encrypted logs emitted during this execution.
89
94
  */
90
- getAllUnencryptedLogs(): UnencryptedFunctionL2Logs;
95
+ getUnencryptedLogs(): CountedLog<UnencryptedL2Log>[];
91
96
  /**
92
97
  * Return the nested execution results during this execution.
93
98
  */
@@ -155,14 +160,27 @@ export declare class ClientExecutionContext extends ViewDataOracle {
155
160
  */
156
161
  notifyNullifiedNote(innerNullifier: Fr, innerNoteHash: Fr, counter: number): Promise<void>;
157
162
  /**
158
- * Encrypt a note and emit it as a log.
163
+ * Emit encrypted data
164
+ * @param encryptedNote - The encrypted data.
165
+ * @param counter - The effects counter.
166
+ */
167
+ emitEncryptedLog(encryptedData: Buffer, counter: number): void;
168
+ /**
169
+ * Emit encrypted note data
170
+ * @param noteHash - The note hash.
171
+ * @param encryptedNote - The encrypted note data.
172
+ * @param counter - The effects counter.
173
+ */
174
+ emitEncryptedNoteLog(noteHash: Fr, encryptedNote: Buffer, counter: number): void;
175
+ /**
176
+ * Encrypt a note
159
177
  * @param contractAddress - The contract address of the note.
160
178
  * @param storageSlot - The storage slot the note is at.
161
179
  * @param noteTypeId - The type ID of the note.
162
- * @param publicKey - The public key of the account that can decrypt the log.
163
- * @param log - The log contents.
180
+ * @param ivpk - The master incoming viewing public key.
181
+ * @param preimage - The note preimage.
164
182
  */
165
- emitEncryptedLog(contractAddress: AztecAddress, storageSlot: Fr, noteTypeId: Fr, publicKey: Point, log: Fr[], counter: number): Buffer;
183
+ computeEncryptedLog(contractAddress: AztecAddress, storageSlot: Fr, noteTypeId: Fr, ivpk: Point, preimage: Fr[]): Buffer;
166
184
  /**
167
185
  * Emit an unencrypted log.
168
186
  * @param log - The unencrypted log to be emitted.
@@ -183,7 +201,7 @@ export declare class ClientExecutionContext extends ViewDataOracle {
183
201
  * @param argsHash - The packed arguments to pass to the function.
184
202
  * @param sideEffectCounter - The side effect counter at the start of the call.
185
203
  * @param isStaticCall - Whether the call is a static call.
186
- * @param isStaticCall - Whether the call is a delegate call.
204
+ * @param isDelegateCall - Whether the call is a delegate call.
187
205
  * @returns The execution result.
188
206
  */
189
207
  callPrivateFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<import("@aztec/circuits.js").PrivateCallStackItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"client_execution_context.d.ts","sourceRoot":"","sources":["../../src/client/client_execution_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client_execution_context.d.ts","sourceRoot":"","sources":["../../src/client/client_execution_context.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  var _ClientExecutionContext_instances, _ClientExecutionContext_checkValidStaticCall;
2
2
  import { __classPrivateFieldGet } from "tslib";
3
- import { EncryptedFunctionL2Logs, EncryptedL2Log, L1NotePayload, Note, TaggedNote, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
3
+ import { EncryptedL2Log, L1NotePayload, Note, TaggedNote, } from '@aztec/circuit-types';
4
4
  import { CallContext, FunctionData, FunctionSelector, PrivateContextInputs, PublicCallRequest, } from '@aztec/circuits.js';
5
5
  import { Aes128 } from '@aztec/circuits.js/barretenberg';
6
6
  import { computePublicDataTreeLeafSlot, computeUniqueNoteHash, siloNoteHash } from '@aztec/circuits.js/hash';
7
7
  import { countArgumentsSize } from '@aztec/foundation/abi';
8
- import { Fr } from '@aztec/foundation/fields';
8
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
9
+ import { Fr, GrumpkinScalar } from '@aztec/foundation/fields';
9
10
  import { applyStringFormatting, createDebugLogger } from '@aztec/foundation/log';
10
11
  import { toACVMWitness } from '../acvm/index.js';
11
12
  import { CountedLog } from './execution_result.js';
@@ -20,7 +21,7 @@ export class ClientExecutionContext extends ViewDataOracle {
20
21
  /** Header of a block whose state is used during private execution (not the block the transaction is included in). */
21
22
  historicalHeader,
22
23
  /** List of transient auth witnesses to be used during this simulation */
23
- authWitnesses, packedValuesCache, noteCache, logsCache, db, node, sideEffectCounter = 0, log = createDebugLogger('aztec:simulator:client_execution_context')) {
24
+ authWitnesses, packedValuesCache, noteCache, db, node, sideEffectCounter = 0, log = createDebugLogger('aztec:simulator:client_execution_context')) {
24
25
  super(contractAddress, authWitnesses, db, node, log);
25
26
  _ClientExecutionContext_instances.add(this);
26
27
  this.argsHash = argsHash;
@@ -29,7 +30,6 @@ export class ClientExecutionContext extends ViewDataOracle {
29
30
  this.historicalHeader = historicalHeader;
30
31
  this.packedValuesCache = packedValuesCache;
31
32
  this.noteCache = noteCache;
32
- this.logsCache = logsCache;
33
33
  this.node = node;
34
34
  this.sideEffectCounter = sideEffectCounter;
35
35
  /**
@@ -51,6 +51,7 @@ export class ClientExecutionContext extends ViewDataOracle {
51
51
  */
52
52
  this.noteHashLeafIndexMap = new Map();
53
53
  this.nullifiedNoteHashCounters = new Map();
54
+ this.noteEncryptedLogs = [];
54
55
  this.encryptedLogs = [];
55
56
  this.unencryptedLogs = [];
56
57
  this.nestedExecutions = [];
@@ -92,28 +93,46 @@ export class ClientExecutionContext extends ViewDataOracle {
92
93
  return this.nullifiedNoteHashCounters;
93
94
  }
94
95
  /**
95
- * Return the encrypted logs emitted during this execution.
96
+ * Return the note encrypted logs emitted during this execution.
96
97
  */
97
- getEncryptedLogs() {
98
- return this.encryptedLogs;
98
+ getNoteEncryptedLogs() {
99
+ return this.noteEncryptedLogs;
99
100
  }
100
101
  /**
101
- * Return the encrypted logs emitted during this execution and nested executions.
102
+ * Sometimes notes can be chopped after a nested execution is complete.
103
+ * This means finished nested executions still hold transient logs. This method removes them.
104
+ * TODO(Miranda): is there a cleaner solution?
102
105
  */
103
- getAllEncryptedLogs() {
104
- return new EncryptedFunctionL2Logs(this.logsCache.getEncryptedLogs());
106
+ chopNoteEncryptedLogs() {
107
+ // Do not return logs that have been chopped in the cache
108
+ const allNoteLogs = this.noteCache.getLogs();
109
+ this.noteEncryptedLogs = this.noteEncryptedLogs.filter(l => allNoteLogs.includes(l));
110
+ const chop = (thing) => thing.nestedExecutions.forEach((result) => {
111
+ if (!result.noteEncryptedLogs[0]?.isEmpty()) {
112
+ // The execution has note logs
113
+ result.noteEncryptedLogs = result.noteEncryptedLogs.filter(l => allNoteLogs.includes(l));
114
+ }
115
+ chop(result);
116
+ });
117
+ chop(this);
118
+ }
119
+ /**
120
+ * Return the note encrypted logs emitted during this execution and nested executions.
121
+ */
122
+ getAllNoteEncryptedLogs() {
123
+ return this.noteCache.getLogs();
105
124
  }
106
125
  /**
107
126
  * Return the encrypted logs emitted during this execution.
108
127
  */
109
- getUnencryptedLogs() {
110
- return this.unencryptedLogs;
128
+ getEncryptedLogs() {
129
+ return this.encryptedLogs;
111
130
  }
112
131
  /**
113
- * Return the unencrypted logs emitted during this execution and nested executions.
132
+ * Return the encrypted logs emitted during this execution.
114
133
  */
115
- getAllUnencryptedLogs() {
116
- return new UnencryptedFunctionL2Logs(this.logsCache.getUnencryptedLogs());
134
+ getUnencryptedLogs() {
135
+ return this.unencryptedLogs;
117
136
  }
118
137
  /**
119
138
  * Return the nested execution results during this execution.
@@ -248,22 +267,42 @@ export class ClientExecutionContext extends ViewDataOracle {
248
267
  return Promise.resolve();
249
268
  }
250
269
  /**
251
- * Encrypt a note and emit it as a log.
270
+ * Emit encrypted data
271
+ * @param encryptedNote - The encrypted data.
272
+ * @param counter - The effects counter.
273
+ */
274
+ emitEncryptedLog(encryptedData, counter) {
275
+ const encryptedLog = new CountedLog(new EncryptedL2Log(encryptedData), counter);
276
+ this.encryptedLogs.push(encryptedLog);
277
+ }
278
+ /**
279
+ * Emit encrypted note data
280
+ * @param noteHash - The note hash.
281
+ * @param encryptedNote - The encrypted note data.
282
+ * @param counter - The effects counter.
283
+ */
284
+ emitEncryptedNoteLog(noteHash, encryptedNote, counter) {
285
+ const encryptedLog = new CountedLog(new EncryptedL2Log(encryptedNote), counter);
286
+ this.noteEncryptedLogs.push(encryptedLog);
287
+ this.noteCache.addNewLog(encryptedLog, noteHash);
288
+ }
289
+ /**
290
+ * Encrypt a note
252
291
  * @param contractAddress - The contract address of the note.
253
292
  * @param storageSlot - The storage slot the note is at.
254
293
  * @param noteTypeId - The type ID of the note.
255
- * @param publicKey - The public key of the account that can decrypt the log.
256
- * @param log - The log contents.
294
+ * @param ivpk - The master incoming viewing public key.
295
+ * @param preimage - The note preimage.
257
296
  */
258
- emitEncryptedLog(contractAddress, storageSlot, noteTypeId, publicKey, log, counter) {
259
- const note = new Note(log);
297
+ computeEncryptedLog(contractAddress, storageSlot, noteTypeId, ivpk, preimage) {
298
+ const note = new Note(preimage);
260
299
  const l1NotePayload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
261
300
  const taggedNote = new TaggedNote(l1NotePayload);
262
- const encryptedNote = taggedNote.toEncryptedBuffer(publicKey);
263
- const encryptedLog = new EncryptedL2Log(encryptedNote);
264
- this.encryptedLogs.push(new CountedLog(encryptedLog, counter));
265
- this.logsCache.addEncryptedLog(encryptedLog);
266
- return encryptedNote;
301
+ const ephSk = GrumpkinScalar.random();
302
+ // @todo Issue(#6410) Right now we are completely ignoring the outgoing log. Just drawing random data.
303
+ const ovsk = GrumpkinScalar.random();
304
+ const recipient = AztecAddress.random();
305
+ return taggedNote.encrypt(ephSk, recipient, ivpk, ovsk);
267
306
  }
268
307
  /**
269
308
  * Emit an unencrypted log.
@@ -271,7 +310,6 @@ export class ClientExecutionContext extends ViewDataOracle {
271
310
  */
272
311
  emitUnencryptedLog(log, counter) {
273
312
  this.unencryptedLogs.push(new CountedLog(log, counter));
274
- this.logsCache.addUnencryptedLog(log);
275
313
  const text = log.toHumanReadable();
276
314
  this.log.verbose(`Emitted unencrypted log: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
277
315
  }
@@ -284,7 +322,6 @@ export class ClientExecutionContext extends ViewDataOracle {
284
322
  */
285
323
  emitContractClassUnencryptedLog(log, counter) {
286
324
  this.unencryptedLogs.push(new CountedLog(log, counter));
287
- this.logsCache.addUnencryptedLog(log);
288
325
  const text = log.toHumanReadable();
289
326
  this.log.verbose(`Emitted unencrypted log from ContractClassRegisterer: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
290
327
  return Fr.fromBuffer(log.hash());
@@ -296,7 +333,7 @@ export class ClientExecutionContext extends ViewDataOracle {
296
333
  * @param argsHash - The packed arguments to pass to the function.
297
334
  * @param sideEffectCounter - The side effect counter at the start of the call.
298
335
  * @param isStaticCall - Whether the call is a static call.
299
- * @param isStaticCall - Whether the call is a delegate call.
336
+ * @param isDelegateCall - Whether the call is a delegate call.
300
337
  * @returns The execution result.
301
338
  */
302
339
  async callPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
@@ -306,7 +343,7 @@ export class ClientExecutionContext extends ViewDataOracle {
306
343
  const targetFunctionData = FunctionData.fromAbi(targetArtifact);
307
344
  const derivedTxContext = this.txContext.clone();
308
345
  const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, sideEffectCounter, isDelegateCall, isStaticCall);
309
- const context = new ClientExecutionContext(targetContractAddress, argsHash, derivedTxContext, derivedCallContext, this.historicalHeader, this.authWitnesses, this.packedValuesCache, this.noteCache, this.logsCache, this.db, this.node, sideEffectCounter);
346
+ const context = new ClientExecutionContext(targetContractAddress, argsHash, derivedTxContext, derivedCallContext, this.historicalHeader, this.authWitnesses, this.packedValuesCache, this.noteCache, this.db, this.node, sideEffectCounter);
310
347
  const childExecutionResult = await executePrivateFunction(context, targetArtifact, targetContractAddress, targetFunctionData);
311
348
  if (isStaticCall) {
312
349
  __classPrivateFieldGet(this, _ClientExecutionContext_instances, "m", _ClientExecutionContext_checkValidStaticCall).call(this, childExecutionResult);
@@ -420,9 +457,9 @@ _ClientExecutionContext_instances = new WeakSet(), _ClientExecutionContext_check
420
457
  if (childExecutionResult.callStackItem.publicInputs.newNoteHashes.some(item => !item.isEmpty()) ||
421
458
  childExecutionResult.callStackItem.publicInputs.newNullifiers.some(item => !item.isEmpty()) ||
422
459
  childExecutionResult.callStackItem.publicInputs.newL2ToL1Msgs.some(item => !item.isEmpty()) ||
423
- !childExecutionResult.callStackItem.publicInputs.encryptedLogPreimagesLength.equals(new Fr(4)) ||
424
- !childExecutionResult.callStackItem.publicInputs.unencryptedLogPreimagesLength.equals(new Fr(4))) {
425
- throw new Error(`Static call cannot create new notes, emit L2->L1 messages or generate logs`);
460
+ childExecutionResult.callStackItem.publicInputs.encryptedLogsHashes.some(item => !item.isEmpty()) ||
461
+ childExecutionResult.callStackItem.publicInputs.unencryptedLogsHashes.some(item => !item.isEmpty())) {
462
+ throw new Error(`Static call cannot update the state, emit L2->L1 messages or generate logs`);
426
463
  }
427
464
  };
428
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsSUFBSSxFQUVKLFVBQVUsRUFDVix5QkFBeUIsR0FFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUEyQyxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRixPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sRUFBRSxVQUFVLEVBQTBDLE1BQU0sdUJBQXVCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBMEJ4RCxZQUNFLGVBQTZCLEVBQ1osUUFBWSxFQUNaLFNBQW9CLEVB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
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsY0FBYyxFQUNkLGFBQWEsRUFDYixJQUFJLEVBRUosVUFBVSxHQUVYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLFdBQVcsRUFDWCxZQUFZLEVBQ1osZ0JBQWdCLEVBRWhCLG9CQUFvQixFQUNwQixpQkFBaUIsR0FFbEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdHLE9BQU8sRUFBMkMsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRixPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sRUFBRSxVQUFVLEVBQTBDLE1BQU0sdUJBQXVCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBMkJ4RCxZQUNFLGVB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