@aztec/simulator 0.44.0 → 0.45.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 (110) hide show
  1. package/dest/acvm/oracle/oracle.d.ts +1 -1
  2. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  3. package/dest/acvm/oracle/oracle.js +3 -3
  4. package/dest/acvm/oracle/typed_oracle.d.ts +1 -1
  5. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  6. package/dest/acvm/oracle/typed_oracle.js +2 -2
  7. package/dest/avm/avm_context.d.ts +1 -1
  8. package/dest/avm/avm_context.d.ts.map +1 -1
  9. package/dest/avm/avm_context.js +3 -3
  10. package/dest/avm/{avm_message_call_result.d.ts → avm_contract_call_result.d.ts} +2 -2
  11. package/dest/avm/avm_contract_call_result.d.ts.map +1 -0
  12. package/dest/avm/avm_contract_call_result.js +18 -0
  13. package/dest/avm/avm_execution_environment.d.ts +7 -11
  14. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  15. package/dest/avm/avm_execution_environment.js +11 -20
  16. package/dest/avm/avm_gas.js +2 -2
  17. package/dest/avm/avm_simulator.d.ts +4 -4
  18. package/dest/avm/avm_simulator.d.ts.map +1 -1
  19. package/dest/avm/avm_simulator.js +7 -7
  20. package/dest/avm/bytecode_utils.d.ts +5 -0
  21. package/dest/avm/bytecode_utils.d.ts.map +1 -0
  22. package/dest/avm/bytecode_utils.js +29 -0
  23. package/dest/avm/errors.js +2 -2
  24. package/dest/avm/fixtures/index.d.ts.map +1 -1
  25. package/dest/avm/fixtures/index.js +3 -3
  26. package/dest/avm/journal/journal.d.ts +5 -5
  27. package/dest/avm/journal/journal.d.ts.map +1 -1
  28. package/dest/avm/journal/journal.js +9 -7
  29. package/dest/avm/journal/public_storage.d.ts +1 -1
  30. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  31. package/dest/avm/journal/public_storage.js +2 -2
  32. package/dest/avm/opcodes/accrued_substate.d.ts +1 -2
  33. package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
  34. package/dest/avm/opcodes/accrued_substate.js +6 -15
  35. package/dest/avm/opcodes/environment_getters.d.ts +13 -8
  36. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  37. package/dest/avm/opcodes/environment_getters.js +20 -13
  38. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  39. package/dest/avm/opcodes/external_calls.js +1 -2
  40. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  41. package/dest/avm/serialization/bytecode_serialization.js +5 -5
  42. package/dest/avm/serialization/instruction_serialization.d.ts +9 -9
  43. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  44. package/dest/avm/serialization/instruction_serialization.js +10 -10
  45. package/dest/client/client_execution_context.d.ts +3 -1
  46. package/dest/client/client_execution_context.d.ts.map +1 -1
  47. package/dest/client/client_execution_context.js +6 -4
  48. package/dest/client/view_data_oracle.d.ts +3 -1
  49. package/dest/client/view_data_oracle.d.ts.map +1 -1
  50. package/dest/client/view_data_oracle.js +6 -4
  51. package/dest/mocks/fixtures.d.ts +3 -3
  52. package/dest/mocks/fixtures.d.ts.map +1 -1
  53. package/dest/mocks/fixtures.js +4 -4
  54. package/dest/public/abstract_phase_manager.js +12 -12
  55. package/dest/public/execution.d.ts +6 -5
  56. package/dest/public/execution.d.ts.map +1 -1
  57. package/dest/public/execution.js +2 -2
  58. package/dest/public/executor.d.ts +4 -4
  59. package/dest/public/executor.d.ts.map +1 -1
  60. package/dest/public/executor.js +19 -14
  61. package/dest/public/hints_builder.d.ts +1 -1
  62. package/dest/public/index.d.ts +1 -1
  63. package/dest/public/index.d.ts.map +1 -1
  64. package/dest/public/index.js +1 -1
  65. package/dest/public/public_kernel.d.ts +1 -1
  66. package/dest/public/public_kernel.d.ts.map +1 -1
  67. package/dest/public/public_kernel.js +2 -2
  68. package/dest/public/side_effect_trace.d.ts +5 -4
  69. package/dest/public/side_effect_trace.d.ts.map +1 -1
  70. package/dest/public/side_effect_trace.js +23 -9
  71. package/dest/public/side_effect_trace_interface.d.ts +3 -3
  72. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  73. package/dest/rollup/rollup.d.ts +1 -1
  74. package/dest/rollup/rollup.d.ts.map +1 -1
  75. package/dest/rollup/rollup.js +2 -2
  76. package/package.json +9 -9
  77. package/src/acvm/oracle/oracle.ts +12 -2
  78. package/src/acvm/oracle/typed_oracle.ts +6 -1
  79. package/src/avm/avm_context.ts +2 -2
  80. package/src/avm/{avm_message_call_result.ts → avm_contract_call_result.ts} +1 -1
  81. package/src/avm/avm_execution_environment.ts +10 -27
  82. package/src/avm/avm_gas.ts +1 -1
  83. package/src/avm/avm_simulator.ts +9 -11
  84. package/src/avm/bytecode_utils.ts +32 -0
  85. package/src/avm/errors.ts +1 -1
  86. package/src/avm/fixtures/index.ts +3 -6
  87. package/src/avm/journal/journal.ts +14 -11
  88. package/src/avm/journal/public_storage.ts +2 -2
  89. package/src/avm/opcodes/accrued_substate.ts +6 -19
  90. package/src/avm/opcodes/environment_getters.ts +23 -14
  91. package/src/avm/opcodes/external_calls.ts +2 -3
  92. package/src/avm/serialization/bytecode_serialization.ts +4 -3
  93. package/src/avm/serialization/instruction_serialization.ts +3 -3
  94. package/src/client/client_execution_context.ts +12 -3
  95. package/src/client/view_data_oracle.ts +12 -3
  96. package/src/mocks/fixtures.ts +5 -5
  97. package/src/public/abstract_phase_manager.ts +15 -15
  98. package/src/public/execution.ts +10 -6
  99. package/src/public/executor.ts +35 -20
  100. package/src/public/index.ts +1 -1
  101. package/src/public/public_kernel.ts +2 -1
  102. package/src/public/side_effect_trace.ts +31 -13
  103. package/src/public/side_effect_trace_interface.ts +3 -3
  104. package/src/rollup/rollup.ts +3 -1
  105. package/dest/avm/avm_message_call_result.d.ts.map +0 -1
  106. package/dest/avm/avm_message_call_result.js +0 -18
  107. package/dest/public/transitional_adaptors.d.ts +0 -17
  108. package/dest/public/transitional_adaptors.d.ts.map +0 -1
  109. package/dest/public/transitional_adaptors.js +0 -42
  110. package/src/public/transitional_adaptors.ts +0 -70
@@ -18,17 +18,20 @@ import {
18
18
  } from '@aztec/circuits.js';
19
19
  import { EventSelector } from '@aztec/foundation/abi';
20
20
  import { Fr } from '@aztec/foundation/fields';
21
+ import { createDebugLogger } from '@aztec/foundation/log';
21
22
  import { type ContractInstanceWithAddress } from '@aztec/types/contracts';
22
23
 
24
+ import { type AvmContractCallResult } from '../avm/avm_contract_call_result.js';
23
25
  import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
24
- import { type AvmContractCallResults } from '../avm/avm_message_call_result.js';
25
26
  import { createSimulationError } from '../common/errors.js';
26
- import { type PublicExecution, type PublicExecutionResult } from './execution.js';
27
+ import { type PublicExecutionRequest, type PublicExecutionResult } from './execution.js';
27
28
  import { type PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
28
29
 
29
30
  export type TracedContractInstance = { exists: boolean } & ContractInstanceWithAddress;
30
31
 
31
32
  export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
33
+ public logger = createDebugLogger('aztec:public_side_effect_trace');
34
+
32
35
  /** The side effect counter increments with every call to the trace. */
33
36
  private sideEffectCounter: number; // kept as number until finalized for efficiency
34
37
 
@@ -85,6 +88,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
85
88
  this.avmCircuitHints.storageValues.items.push(
86
89
  new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ value),
87
90
  );
91
+ this.logger.debug(`SLOAD cnt: ${this.sideEffectCounter} val: ${value} slot: ${slot}`);
88
92
  this.incrementSideEffectCounter();
89
93
  }
90
94
 
@@ -94,6 +98,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
94
98
  this.contractStorageUpdateRequests.push(
95
99
  new ContractStorageUpdateRequest(slot, value, this.sideEffectCounter, storageAddress),
96
100
  );
101
+ this.logger.debug(`SSTORE cnt: ${this.sideEffectCounter} val: ${value} slot: ${slot}`);
97
102
  this.incrementSideEffectCounter();
98
103
  }
99
104
 
@@ -106,6 +111,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
106
111
  this.avmCircuitHints.noteHashExists.items.push(
107
112
  new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ new Fr(exists ? 1 : 0)),
108
113
  );
114
+ this.logger.debug(`NOTE_HASH_CHECK cnt: ${this.sideEffectCounter}`);
109
115
  this.incrementSideEffectCounter();
110
116
  }
111
117
 
@@ -117,6 +123,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
117
123
  // the noteHash against the one provided by the user code to determine what to return to the user (exists or not),
118
124
  // and will then propagate the actually-present noteHash to its public inputs.
119
125
  this.newNoteHashes.push(new NoteHash(noteHash, this.sideEffectCounter));
126
+ this.logger.debug(`NEW_NOTE_HASH cnt: ${this.sideEffectCounter}`);
120
127
  this.incrementSideEffectCounter();
121
128
  }
122
129
 
@@ -133,6 +140,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
133
140
  this.avmCircuitHints.nullifierExists.items.push(
134
141
  new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ new Fr(exists ? 1 : 0)),
135
142
  );
143
+ this.logger.debug(`NULLIFIER_EXISTS cnt: ${this.sideEffectCounter}`);
136
144
  this.incrementSideEffectCounter();
137
145
  }
138
146
 
@@ -140,6 +148,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
140
148
  // TODO(4805): check if some threshold is reached for max new nullifier
141
149
  // NOTE: storageAddress is unused but will be important when an AVM circuit processes an entire enqueued call
142
150
  this.newNullifiers.push(new Nullifier(nullifier, this.sideEffectCounter, /*noteHash=*/ Fr.ZERO));
151
+ this.logger.debug(`NEW_NULLIFIER cnt: ${this.sideEffectCounter}`);
143
152
  this.incrementSideEffectCounter();
144
153
  }
145
154
 
@@ -152,6 +161,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
152
161
  this.avmCircuitHints.l1ToL2MessageExists.items.push(
153
162
  new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ new Fr(exists ? 1 : 0)),
154
163
  );
164
+ this.logger.debug(`L1_TO_L2_MSG_CHECK cnt: ${this.sideEffectCounter}`);
155
165
  this.incrementSideEffectCounter();
156
166
  }
157
167
 
@@ -159,14 +169,16 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
159
169
  // TODO(4805): check if some threshold is reached for max messages
160
170
  const recipientAddress = EthAddress.fromField(recipient);
161
171
  this.newL2ToL1Messages.push(new L2ToL1Message(recipientAddress, content, this.sideEffectCounter));
172
+ this.logger.debug(`NEW_L2_TO_L1_MSG cnt: ${this.sideEffectCounter}`);
162
173
  this.incrementSideEffectCounter();
163
174
  }
164
175
 
165
- public traceUnencryptedLog(contractAddress: Fr, event: Fr, log: Fr[]) {
176
+ public traceUnencryptedLog(contractAddress: Fr, log: Fr[]) {
166
177
  // TODO(4805): check if some threshold is reached for max logs
167
178
  const ulog = new UnencryptedL2Log(
168
179
  AztecAddress.fromField(contractAddress),
169
- EventSelector.fromField(event),
180
+ // TODO(#7198): Remove event selector from UnencryptedL2Log
181
+ EventSelector.fromField(new Fr(0)),
170
182
  Buffer.concat(log.map(f => f.toBuffer())),
171
183
  );
172
184
  const basicLogHash = Fr.fromBuffer(ulog.hash());
@@ -174,6 +186,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
174
186
  this.allUnencryptedLogs.push(ulog);
175
187
  // TODO(6578): explain magic number 4 here
176
188
  this.unencryptedLogsHashes.push(new LogHash(basicLogHash, this.sideEffectCounter, new Fr(ulog.length + 4)));
189
+ this.logger.debug(`NEW_UNENCRYPTED_LOG cnt: ${this.sideEffectCounter}`);
177
190
  this.incrementSideEffectCounter();
178
191
  }
179
192
 
@@ -191,6 +204,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
191
204
  instance.publicKeysHash,
192
205
  ),
193
206
  );
207
+ this.logger.debug(`CONTRACT_INSTANCE cnt: ${this.sideEffectCounter}`);
194
208
  this.incrementSideEffectCounter();
195
209
  }
196
210
 
@@ -210,7 +224,7 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
210
224
  /** Bytecode used for this execution. */
211
225
  bytecode: Buffer,
212
226
  /** The call's results */
213
- avmCallResults: AvmContractCallResults,
227
+ avmCallResults: AvmContractCallResult,
214
228
  /** Function name for logging */
215
229
  functionName: string = 'unknown',
216
230
  ) {
@@ -234,7 +248,12 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
234
248
  result.startGasLeft.l2Gas - result.endGasLeft.l2Gas,
235
249
  );
236
250
  this.avmCircuitHints.externalCalls.items.push(
237
- new AvmExternalCallHint(/*success=*/ new Fr(result.reverted ? 0 : 1), result.returnValues, gasUsed),
251
+ new AvmExternalCallHint(
252
+ /*success=*/ new Fr(result.reverted ? 0 : 1),
253
+ result.returnValues,
254
+ gasUsed,
255
+ result.endSideEffectCounter,
256
+ ),
238
257
  );
239
258
  }
240
259
 
@@ -251,14 +270,14 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
251
270
  /** Bytecode used for this execution. */
252
271
  bytecode: Buffer,
253
272
  /** The call's results */
254
- avmCallResults: AvmContractCallResults,
273
+ avmCallResults: AvmContractCallResult,
255
274
  /** Function name for logging */
256
275
  functionName: string = 'unknown',
257
276
  /** The side effect counter of the execution request itself */
258
277
  requestSideEffectCounter: number = this.startSideEffectCounter,
259
278
  ): PublicExecutionResult {
260
279
  return {
261
- execution: createPublicExecutionRequest(requestSideEffectCounter, avmEnvironment),
280
+ executionRequest: createPublicExecutionRequest(requestSideEffectCounter, avmEnvironment),
262
281
 
263
282
  startSideEffectCounter: new Fr(this.startSideEffectCounter),
264
283
  endSideEffectCounter: new Fr(this.sideEffectCounter),
@@ -303,21 +322,20 @@ export class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
303
322
  function createPublicExecutionRequest(
304
323
  requestSideEffectCounter: number,
305
324
  avmEnvironment: AvmExecutionEnvironment,
306
- ): PublicExecution {
325
+ ): PublicExecutionRequest {
307
326
  const callContext = CallContext.from({
308
327
  msgSender: avmEnvironment.sender,
309
328
  storageContractAddress: avmEnvironment.storageAddress,
310
- functionSelector: avmEnvironment.temporaryFunctionSelector,
329
+ functionSelector: avmEnvironment.functionSelector,
311
330
  isDelegateCall: avmEnvironment.isDelegateCall,
312
331
  isStaticCall: avmEnvironment.isStaticCall,
313
332
  sideEffectCounter: requestSideEffectCounter,
314
333
  });
315
- const execution: PublicExecution = {
334
+ return {
316
335
  contractAddress: avmEnvironment.address,
317
- functionSelector: avmEnvironment.temporaryFunctionSelector,
336
+ functionSelector: avmEnvironment.functionSelector,
318
337
  callContext,
319
338
  // execution request does not contain AvmContextInputs prefix
320
339
  args: avmEnvironment.getCalldataWithoutPrefix(),
321
340
  };
322
- return execution;
323
341
  }
@@ -1,8 +1,8 @@
1
1
  import { type Gas } from '@aztec/circuits.js';
2
2
  import { type Fr } from '@aztec/foundation/fields';
3
3
 
4
+ import { type AvmContractCallResult } from '../avm/avm_contract_call_result.js';
4
5
  import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
5
- import { type AvmContractCallResults } from '../avm/avm_message_call_result.js';
6
6
  import { type TracedContractInstance } from './side_effect_trace.js';
7
7
 
8
8
  export interface PublicSideEffectTraceInterface {
@@ -17,7 +17,7 @@ export interface PublicSideEffectTraceInterface {
17
17
  traceL1ToL2MessageCheck(contractAddress: Fr, msgHash: Fr, msgLeafIndex: Fr, exists: boolean): void;
18
18
  // TODO(dbanks12): should new message accept contract address as arg?
19
19
  traceNewL2ToL1Message(recipient: Fr, content: Fr): void;
20
- traceUnencryptedLog(contractAddress: Fr, event: Fr, log: Fr[]): void;
20
+ traceUnencryptedLog(contractAddress: Fr, log: Fr[]): void;
21
21
  // TODO(dbanks12): odd that getContractInstance is a one-off in that it accepts an entire object instead of components
22
22
  traceGetContractInstance(instance: TracedContractInstance): void;
23
23
  traceNestedCall(
@@ -34,7 +34,7 @@ export interface PublicSideEffectTraceInterface {
34
34
  /** Bytecode used for this execution. */
35
35
  bytecode: Buffer,
36
36
  /** The call's results */
37
- avmCallResults: AvmContractCallResults,
37
+ avmCallResults: AvmContractCallResult,
38
38
  /** Function name */
39
39
  functionName: string,
40
40
  ): void;
@@ -28,7 +28,9 @@ import {
28
28
  convertSimulatedBaseRollupInputsToWitnessMap,
29
29
  convertSimulatedBaseRollupOutputsFromWitnessMap,
30
30
  } from '@aztec/noir-protocol-circuits-types';
31
- import { type SimulationProvider, WASMSimulator } from '@aztec/simulator';
31
+
32
+ import { WASMSimulator } from '../providers/acvm_wasm.js';
33
+ import { type SimulationProvider } from '../providers/simulation_provider.js';
32
34
 
33
35
  /**
34
36
  * Circuit simulator for the rollup circuits.
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_message_call_result.d.ts","sourceRoot":"","sources":["../../src/avm/avm_message_call_result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,qBAAa,sBAAsB;IACd,QAAQ,EAAE,OAAO;IAAS,MAAM,EAAE,EAAE,EAAE;IAAS,YAAY,CAAC;gBAA5D,QAAQ,EAAE,OAAO,EAAS,MAAM,EAAE,EAAE,EAAE,EAAS,YAAY,CAAC,6BAAiB;IAEhG,QAAQ,IAAI,MAAM;CAOnB"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Results of an contract call's execution in the AVM.
3
- */
4
- export class AvmContractCallResults {
5
- constructor(reverted, output, revertReason) {
6
- this.reverted = reverted;
7
- this.output = output;
8
- this.revertReason = revertReason;
9
- }
10
- toString() {
11
- let resultsStr = `reverted: ${this.reverted}, output: ${this.output}`;
12
- if (this.revertReason) {
13
- resultsStr += `, revertReason: ${this.revertReason}`;
14
- }
15
- return resultsStr;
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21lc3NhZ2VfY2FsbF9yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXZtL2F2bV9tZXNzYWdlX2NhbGxfcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFtQixRQUFpQixFQUFTLE1BQVksRUFBUyxZQUE4QjtRQUE3RSxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtJQUFHLENBQUM7SUFFcEcsUUFBUTtRQUNOLElBQUksVUFBVSxHQUFHLGFBQWEsSUFBSSxDQUFDLFFBQVEsYUFBYSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsVUFBVSxJQUFJLG1CQUFtQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkQsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRiJ9
@@ -1,17 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import { type GasSettings, type GlobalVariables, type Header } from '@aztec/circuits.js';
3
- import { Fr } from '@aztec/foundation/fields';
4
- import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
5
- import { type PublicExecution } from './execution.js';
6
- /**
7
- * Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
8
- *
9
- * @param current
10
- * @param globalVariables
11
- * @returns
12
- */
13
- export declare function createAvmExecutionEnvironment(current: PublicExecution, header: Header, globalVariables: GlobalVariables, gasSettings: GasSettings, transactionFee: Fr): AvmExecutionEnvironment;
14
- export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
15
- export declare function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer>;
16
- export declare function isAvmBytecode(bytecode: Buffer): Promise<boolean>;
17
- //# sourceMappingURL=transitional_adaptors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,EAAE,GACjB,uBAAuB,CAiBzB;AASD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAGD,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAItE"}
@@ -1,42 +0,0 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import { promisify } from 'util';
3
- import { gunzip } from 'zlib';
4
- import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
5
- import { Mov } from '../avm/opcodes/memory.js';
6
- /**
7
- * Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
8
- *
9
- * @param current
10
- * @param globalVariables
11
- * @returns
12
- */
13
- export function createAvmExecutionEnvironment(current, header, globalVariables, gasSettings, transactionFee) {
14
- return new AvmExecutionEnvironment(current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, globalVariables.gasFees.feePerL2Gas, globalVariables.gasFees.feePerDaGas,
15
- /*contractCallDepth=*/ Fr.zero(), header, globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, gasSettings, transactionFee, current.functionSelector);
16
- }
17
- const AVM_MAGIC_SUFFIX = Buffer.from([
18
- Mov.opcode, // opcode
19
- 0x00, // indirect
20
- ...Buffer.from('000018ca', 'hex'), // srcOffset
21
- ...Buffer.from('000018ca', 'hex'), // dstOffset
22
- ]);
23
- export function markBytecodeAsAvm(bytecode) {
24
- return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
25
- }
26
- // This is just a helper function for the AVM circuit.
27
- export async function decompressBytecodeIfCompressed(bytecode) {
28
- try {
29
- return await promisify(gunzip)(bytecode);
30
- }
31
- catch {
32
- // If the bytecode is not compressed, the gunzip call will throw an error
33
- // In this case, we assume the bytecode is not compressed and continue.
34
- return Promise.resolve(bytecode);
35
- }
36
- }
37
- export async function isAvmBytecode(bytecode) {
38
- const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
39
- const magicSize = AVM_MAGIC_SUFFIX.length;
40
- return decompressedBytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbmFsX2FkYXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90cmFuc2l0aW9uYWxfYWRhcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHL0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxPQUF3QixFQUN4QixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsV0FBd0IsRUFDeEIsY0FBa0I7SUFFbEIsT0FBTyxJQUFJLHVCQUF1QixDQUNoQyxPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUMxQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDN0IsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQ25DLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVztJQUNuQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQ2hDLE1BQU0sRUFDTixlQUFlLEVBQ2YsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQ2hDLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNsQyxPQUFPLENBQUMsSUFBSSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsT0FBTyxDQUFDLGdCQUFnQixDQUN6QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNuQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVM7SUFDckIsSUFBSSxFQUFFLFdBQVc7SUFDakIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxZQUFZO0lBQy9DLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsWUFBWTtDQUNoRCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsUUFBZ0I7SUFDaEQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQsc0RBQXNEO0FBQ3RELE1BQU0sQ0FBQyxLQUFLLFVBQVUsOEJBQThCLENBQUMsUUFBZ0I7SUFDbkUsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AseUVBQXlFO1FBQ3pFLHVFQUF1RTtRQUN2RSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxRQUFnQjtJQUNsRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUUsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQzFDLE9BQU8sb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDNUUsQ0FBQyJ9
@@ -1,70 +0,0 @@
1
- // All code in this file needs to die once the public executor is phased out in favor of the AVM.
2
- import { type GasSettings, type GlobalVariables, type Header } from '@aztec/circuits.js';
3
- import { Fr } from '@aztec/foundation/fields';
4
-
5
- import { promisify } from 'util';
6
- import { gunzip } from 'zlib';
7
-
8
- import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
9
- import { Mov } from '../avm/opcodes/memory.js';
10
- import { type PublicExecution } from './execution.js';
11
-
12
- /**
13
- * Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
14
- *
15
- * @param current
16
- * @param globalVariables
17
- * @returns
18
- */
19
- export function createAvmExecutionEnvironment(
20
- current: PublicExecution,
21
- header: Header,
22
- globalVariables: GlobalVariables,
23
- gasSettings: GasSettings,
24
- transactionFee: Fr,
25
- ): AvmExecutionEnvironment {
26
- return new AvmExecutionEnvironment(
27
- current.contractAddress,
28
- current.callContext.storageContractAddress,
29
- current.callContext.msgSender,
30
- globalVariables.gasFees.feePerL2Gas,
31
- globalVariables.gasFees.feePerDaGas,
32
- /*contractCallDepth=*/ Fr.zero(),
33
- header,
34
- globalVariables,
35
- current.callContext.isStaticCall,
36
- current.callContext.isDelegateCall,
37
- current.args,
38
- gasSettings,
39
- transactionFee,
40
- current.functionSelector,
41
- );
42
- }
43
-
44
- const AVM_MAGIC_SUFFIX = Buffer.from([
45
- Mov.opcode, // opcode
46
- 0x00, // indirect
47
- ...Buffer.from('000018ca', 'hex'), // srcOffset
48
- ...Buffer.from('000018ca', 'hex'), // dstOffset
49
- ]);
50
-
51
- export function markBytecodeAsAvm(bytecode: Buffer): Buffer {
52
- return Buffer.concat([bytecode, AVM_MAGIC_SUFFIX]);
53
- }
54
-
55
- // This is just a helper function for the AVM circuit.
56
- export async function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer> {
57
- try {
58
- return await promisify(gunzip)(bytecode);
59
- } catch {
60
- // If the bytecode is not compressed, the gunzip call will throw an error
61
- // In this case, we assume the bytecode is not compressed and continue.
62
- return Promise.resolve(bytecode);
63
- }
64
- }
65
-
66
- export async function isAvmBytecode(bytecode: Buffer): Promise<boolean> {
67
- const decompressedBytecode = await decompressBytecodeIfCompressed(bytecode);
68
- const magicSize = AVM_MAGIC_SUFFIX.length;
69
- return decompressedBytecode.subarray(-magicSize).equals(AVM_MAGIC_SUFFIX);
70
- }