@aztec/simulator 0.34.0 → 0.35.1

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 (168) hide show
  1. package/dest/acvm/acvm.d.ts +4 -1
  2. package/dest/acvm/acvm.d.ts.map +1 -1
  3. package/dest/acvm/acvm.js +5 -5
  4. package/dest/acvm/deserialize.d.ts +3 -5
  5. package/dest/acvm/deserialize.d.ts.map +1 -1
  6. package/dest/acvm/deserialize.js +6 -9
  7. package/dest/acvm/oracle/oracle.d.ts +2 -0
  8. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  9. package/dest/acvm/oracle/oracle.js +12 -4
  10. package/dest/acvm/oracle/typed_oracle.d.ts +2 -0
  11. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  12. package/dest/acvm/oracle/typed_oracle.js +7 -1
  13. package/dest/avm/avm_execution_environment.d.ts +4 -2
  14. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  15. package/dest/avm/avm_execution_environment.js +7 -5
  16. package/dest/avm/avm_gas.js +2 -2
  17. package/dest/avm/avm_machine_state.d.ts +2 -0
  18. package/dest/avm/avm_machine_state.d.ts.map +1 -1
  19. package/dest/avm/avm_machine_state.js +24 -6
  20. package/dest/avm/avm_memory_types.js +2 -2
  21. package/dest/avm/avm_simulator.js +2 -2
  22. package/dest/avm/fixtures/index.d.ts +3 -0
  23. package/dest/avm/fixtures/index.d.ts.map +1 -1
  24. package/dest/avm/fixtures/index.js +11 -4
  25. package/dest/avm/journal/journal.d.ts +1 -0
  26. package/dest/avm/journal/journal.d.ts.map +1 -1
  27. package/dest/avm/journal/journal.js +12 -1
  28. package/dest/avm/opcodes/accrued_substate.d.ts +2 -1
  29. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  30. package/dest/avm/opcodes/accrued_substate.js +13 -5
  31. package/dest/avm/opcodes/context_getters.js +2 -2
  32. package/dest/avm/opcodes/external_calls.d.ts +2 -2
  33. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  34. package/dest/avm/opcodes/external_calls.js +7 -6
  35. package/dest/avm/opcodes/hashing.d.ts +8 -8
  36. package/dest/avm/opcodes/hashing.d.ts.map +1 -1
  37. package/dest/avm/opcodes/hashing.js +35 -43
  38. package/dest/avm/serialization/instruction_serialization.d.ts +1 -1
  39. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  40. package/dest/avm/serialization/instruction_serialization.js +2 -2
  41. package/dest/client/client_execution_context.d.ts +13 -3
  42. package/dest/client/client_execution_context.d.ts.map +1 -1
  43. package/dest/client/client_execution_context.js +23 -8
  44. package/dest/client/private_execution.d.ts.map +1 -1
  45. package/dest/client/private_execution.js +8 -6
  46. package/dest/client/simulator.d.ts.map +1 -1
  47. package/dest/client/simulator.js +6 -5
  48. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  49. package/dest/client/unconstrained_execution.js +5 -4
  50. package/dest/common/index.d.ts +1 -1
  51. package/dest/common/index.d.ts.map +1 -1
  52. package/dest/common/index.js +2 -2
  53. package/dest/common/packed_values_cache.d.ts +28 -0
  54. package/dest/common/packed_values_cache.d.ts.map +1 -0
  55. package/dest/common/packed_values_cache.js +50 -0
  56. package/dest/index.d.ts +1 -0
  57. package/dest/index.d.ts.map +1 -1
  58. package/dest/index.js +2 -1
  59. package/dest/mocks/fixtures.d.ts +42 -0
  60. package/dest/mocks/fixtures.d.ts.map +1 -0
  61. package/dest/mocks/fixtures.js +84 -0
  62. package/dest/mocks/index.d.ts +2 -0
  63. package/dest/mocks/index.d.ts.map +1 -0
  64. package/dest/mocks/index.js +2 -0
  65. package/dest/public/abstract_phase_manager.d.ts +82 -0
  66. package/dest/public/abstract_phase_manager.d.ts.map +1 -0
  67. package/dest/public/abstract_phase_manager.js +320 -0
  68. package/dest/public/app_logic_phase_manager.d.ts +29 -0
  69. package/dest/public/app_logic_phase_manager.d.ts.map +1 -0
  70. package/dest/public/app_logic_phase_manager.js +50 -0
  71. package/dest/public/execution.d.ts +3 -0
  72. package/dest/public/execution.d.ts.map +1 -1
  73. package/dest/public/execution.js +1 -1
  74. package/dest/public/executor.d.ts.map +1 -1
  75. package/dest/public/executor.js +17 -13
  76. package/dest/public/hints_builder.d.ts +23 -0
  77. package/dest/public/hints_builder.d.ts.map +1 -0
  78. package/dest/public/hints_builder.js +62 -0
  79. package/dest/public/index.d.ts +5 -0
  80. package/dest/public/index.d.ts.map +1 -1
  81. package/dest/public/index.js +6 -1
  82. package/dest/public/phase_manager_factory.d.ts +18 -0
  83. package/dest/public/phase_manager_factory.d.ts.map +1 -0
  84. package/dest/public/phase_manager_factory.js +56 -0
  85. package/dest/public/public_execution_context.d.ts +15 -5
  86. package/dest/public/public_execution_context.d.ts.map +1 -1
  87. package/dest/public/public_execution_context.js +28 -12
  88. package/dest/public/public_executor.d.ts +79 -0
  89. package/dest/public/public_executor.d.ts.map +1 -0
  90. package/dest/public/public_executor.js +198 -0
  91. package/dest/public/public_kernel.d.ts +37 -0
  92. package/dest/public/public_kernel.d.ts.map +1 -0
  93. package/dest/public/public_kernel.js +97 -0
  94. package/dest/public/public_kernel_circuit_simulator.d.ts +31 -0
  95. package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -0
  96. package/dest/public/public_kernel_circuit_simulator.js +2 -0
  97. package/dest/public/public_processor.d.ts +53 -0
  98. package/dest/public/public_processor.d.ts.map +1 -0
  99. package/dest/public/public_processor.js +144 -0
  100. package/dest/public/setup_phase_manager.d.ts +30 -0
  101. package/dest/public/setup_phase_manager.d.ts.map +1 -0
  102. package/dest/public/setup_phase_manager.js +46 -0
  103. package/dest/public/tail_phase_manager.d.ts +30 -0
  104. package/dest/public/tail_phase_manager.d.ts.map +1 -0
  105. package/dest/public/tail_phase_manager.js +60 -0
  106. package/dest/public/teardown_phase_manager.d.ts +30 -0
  107. package/dest/public/teardown_phase_manager.d.ts.map +1 -0
  108. package/dest/public/teardown_phase_manager.js +46 -0
  109. package/dest/public/transitional_adaptors.d.ts +2 -1
  110. package/dest/public/transitional_adaptors.d.ts.map +1 -1
  111. package/dest/public/transitional_adaptors.js +11 -10
  112. package/dest/public/utils.d.ts +8 -0
  113. package/dest/public/utils.d.ts.map +1 -0
  114. package/dest/public/utils.js +29 -0
  115. package/dest/simulator/acvm_native.d.ts +19 -3
  116. package/dest/simulator/acvm_native.d.ts.map +1 -1
  117. package/dest/simulator/acvm_native.js +75 -48
  118. package/dest/simulator/acvm_wasm.d.ts.map +1 -1
  119. package/dest/simulator/acvm_wasm.js +3 -4
  120. package/package.json +8 -5
  121. package/src/acvm/acvm.ts +8 -5
  122. package/src/acvm/deserialize.ts +5 -9
  123. package/src/acvm/oracle/oracle.ts +13 -3
  124. package/src/acvm/oracle/typed_oracle.ts +8 -0
  125. package/src/avm/avm_execution_environment.ts +9 -1
  126. package/src/avm/avm_gas.ts +1 -1
  127. package/src/avm/avm_machine_state.ts +26 -5
  128. package/src/avm/avm_memory_types.ts +1 -1
  129. package/src/avm/avm_simulator.ts +1 -1
  130. package/src/avm/fixtures/index.ts +13 -1
  131. package/src/avm/journal/journal.ts +13 -0
  132. package/src/avm/opcodes/accrued_substate.ts +16 -4
  133. package/src/avm/opcodes/context_getters.ts +1 -1
  134. package/src/avm/opcodes/external_calls.ts +8 -5
  135. package/src/avm/opcodes/hashing.ts +38 -54
  136. package/src/avm/serialization/instruction_serialization.ts +1 -1
  137. package/src/client/client_execution_context.ts +25 -6
  138. package/src/client/private_execution.ts +7 -6
  139. package/src/client/simulator.ts +7 -3
  140. package/src/client/unconstrained_execution.ts +4 -3
  141. package/src/common/index.ts +1 -1
  142. package/src/common/packed_values_cache.ts +55 -0
  143. package/src/index.ts +1 -0
  144. package/src/mocks/fixtures.ts +169 -0
  145. package/src/mocks/index.ts +1 -0
  146. package/src/public/abstract_phase_manager.ts +571 -0
  147. package/src/public/app_logic_phase_manager.ts +76 -0
  148. package/src/public/execution.ts +4 -0
  149. package/src/public/executor.ts +18 -13
  150. package/src/public/hints_builder.ts +119 -0
  151. package/src/public/index.ts +5 -0
  152. package/src/public/phase_manager_factory.ts +126 -0
  153. package/src/public/public_execution_context.ts +29 -18
  154. package/src/public/public_executor.ts +267 -0
  155. package/src/public/public_kernel.ts +139 -0
  156. package/src/public/public_kernel_circuit_simulator.ts +36 -0
  157. package/src/public/public_processor.ts +212 -0
  158. package/src/public/setup_phase_manager.ts +66 -0
  159. package/src/public/tail_phase_manager.ts +120 -0
  160. package/src/public/teardown_phase_manager.ts +66 -0
  161. package/src/public/transitional_adaptors.ts +14 -5
  162. package/src/public/utils.ts +31 -0
  163. package/src/simulator/acvm_native.ts +94 -47
  164. package/src/simulator/acvm_wasm.ts +7 -3
  165. package/dest/common/packed_args_cache.d.ts +0 -28
  166. package/dest/common/packed_args_cache.d.ts.map +0 -1
  167. package/dest/common/packed_args_cache.js +0 -50
  168. package/src/common/packed_args_cache.ts +0 -55
@@ -0,0 +1,169 @@
1
+ import { type FunctionCall, type SimulationError, UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
2
+ import {
3
+ ARGS_LENGTH,
4
+ type AztecAddress,
5
+ CallContext,
6
+ CallRequest,
7
+ type ContractStorageUpdateRequest,
8
+ EthAddress,
9
+ Fr,
10
+ FunctionData,
11
+ Gas,
12
+ GasSettings,
13
+ MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
14
+ type PrivateKernelTailCircuitPublicInputs,
15
+ type PublicCallRequest,
16
+ } from '@aztec/circuits.js';
17
+ import { makeAztecAddress, makeSelector } from '@aztec/circuits.js/testing';
18
+ import { padArrayEnd } from '@aztec/foundation/collection';
19
+
20
+ import { type PublicExecution, type PublicExecutionResult } from '../public/execution.js';
21
+
22
+ export class PublicExecutionResultBuilder {
23
+ private _execution: PublicExecution;
24
+ private _nestedExecutions: PublicExecutionResult[] = [];
25
+ private _contractStorageUpdateRequests: ContractStorageUpdateRequest[] = [];
26
+ private _returnValues: Fr[] = [];
27
+ private _reverted = false;
28
+ private _revertReason: SimulationError | undefined = undefined;
29
+
30
+ constructor(execution: PublicExecution) {
31
+ this._execution = execution;
32
+ }
33
+
34
+ static fromPublicCallRequest({
35
+ request,
36
+ returnValues = [new Fr(1n)],
37
+ nestedExecutions = [],
38
+ contractStorageUpdateRequests = [],
39
+ }: {
40
+ request: PublicCallRequest;
41
+ returnValues?: Fr[];
42
+ nestedExecutions?: PublicExecutionResult[];
43
+ contractStorageUpdateRequests?: ContractStorageUpdateRequest[];
44
+ }): PublicExecutionResultBuilder {
45
+ const builder = new PublicExecutionResultBuilder(request);
46
+
47
+ builder.withNestedExecutions(...nestedExecutions);
48
+ builder.withContractStorageUpdateRequest(...contractStorageUpdateRequests);
49
+ builder.withReturnValues(...returnValues);
50
+
51
+ return builder;
52
+ }
53
+
54
+ static fromFunctionCall({
55
+ from,
56
+ tx,
57
+ returnValues = [new Fr(1n)],
58
+ nestedExecutions = [],
59
+ contractStorageUpdateRequests = [],
60
+ revertReason,
61
+ }: {
62
+ from: AztecAddress;
63
+ tx: FunctionCall;
64
+ returnValues?: Fr[];
65
+ nestedExecutions?: PublicExecutionResult[];
66
+ contractStorageUpdateRequests?: ContractStorageUpdateRequest[];
67
+ revertReason?: SimulationError;
68
+ }) {
69
+ const builder = new PublicExecutionResultBuilder({
70
+ callContext: new CallContext(
71
+ from,
72
+ tx.to,
73
+ EthAddress.ZERO,
74
+ tx.functionData.selector,
75
+ Gas.test(),
76
+ false,
77
+ false,
78
+ 0,
79
+ GasSettings.default(),
80
+ Fr.ZERO,
81
+ ),
82
+ contractAddress: tx.to,
83
+ functionData: tx.functionData,
84
+ args: tx.args,
85
+ });
86
+
87
+ builder.withNestedExecutions(...nestedExecutions);
88
+ builder.withContractStorageUpdateRequest(...contractStorageUpdateRequests);
89
+ builder.withReturnValues(...returnValues);
90
+ if (revertReason) {
91
+ builder.withReverted(revertReason);
92
+ }
93
+
94
+ return builder;
95
+ }
96
+
97
+ withNestedExecutions(...nested: PublicExecutionResult[]): PublicExecutionResultBuilder {
98
+ this._nestedExecutions.push(...nested);
99
+ return this;
100
+ }
101
+
102
+ withContractStorageUpdateRequest(...request: ContractStorageUpdateRequest[]): PublicExecutionResultBuilder {
103
+ this._contractStorageUpdateRequests.push(...request);
104
+ return this;
105
+ }
106
+
107
+ withReturnValues(...values: Fr[]): PublicExecutionResultBuilder {
108
+ this._returnValues.push(...values);
109
+ return this;
110
+ }
111
+
112
+ withReverted(reason: SimulationError): PublicExecutionResultBuilder {
113
+ this._reverted = true;
114
+ this._revertReason = reason;
115
+ return this;
116
+ }
117
+
118
+ build(): PublicExecutionResult {
119
+ return {
120
+ execution: this._execution,
121
+ nestedExecutions: this._nestedExecutions,
122
+ nullifierReadRequests: [],
123
+ nullifierNonExistentReadRequests: [],
124
+ contractStorageUpdateRequests: this._contractStorageUpdateRequests,
125
+ returnValues: padArrayEnd(this._returnValues, Fr.ZERO, 4), // TODO(#5450) Need to use the proper return values here
126
+ newNoteHashes: [],
127
+ newNullifiers: [],
128
+ newL2ToL1Messages: [],
129
+ contractStorageReads: [],
130
+ unencryptedLogs: UnencryptedFunctionL2Logs.empty(),
131
+ startSideEffectCounter: Fr.ZERO,
132
+ endSideEffectCounter: Fr.ZERO,
133
+ reverted: this._reverted,
134
+ revertReason: this._revertReason,
135
+ gasLeft: this._execution.callContext.gasLeft.mul(0.9),
136
+ };
137
+ }
138
+ }
139
+
140
+ export const makeFunctionCall = (
141
+ to = makeAztecAddress(30),
142
+ selector = makeSelector(5),
143
+ args = new Array(ARGS_LENGTH).fill(Fr.ZERO),
144
+ ) => ({ to, functionData: new FunctionData(selector, false), args });
145
+
146
+ export function addKernelPublicCallStack(
147
+ kernelOutput: PrivateKernelTailCircuitPublicInputs,
148
+ calls: {
149
+ setupCalls: PublicCallRequest[];
150
+ appLogicCalls: PublicCallRequest[];
151
+ teardownCall: PublicCallRequest;
152
+ },
153
+ ) {
154
+ // the first two calls are non-revertible
155
+ // the first is for setup, the second is for teardown
156
+ kernelOutput.forPublic!.endNonRevertibleData.publicCallStack = padArrayEnd(
157
+ // this is a stack, so the first item is the last call
158
+ // and callRequests is in the order of the calls
159
+ [calls.teardownCall.toCallRequest(), ...calls.setupCalls.map(c => c.toCallRequest())],
160
+ CallRequest.empty(),
161
+ MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
162
+ );
163
+
164
+ kernelOutput.forPublic!.end.publicCallStack = padArrayEnd(
165
+ calls.appLogicCalls.map(c => c.toCallRequest()),
166
+ CallRequest.empty(),
167
+ MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX,
168
+ );
169
+ }
@@ -0,0 +1 @@
1
+ export * from './fixtures.js';