@aztec/simulator 0.33.0 → 0.34.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 (66) hide show
  1. package/dest/acvm/acvm.js +2 -2
  2. package/dest/acvm/oracle/oracle.d.ts +1 -1
  3. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  4. package/dest/acvm/oracle/oracle.js +3 -3
  5. package/dest/avm/avm_execution_environment.d.ts +4 -3
  6. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  7. package/dest/avm/avm_execution_environment.js +8 -7
  8. package/dest/avm/avm_memory_types.js +5 -5
  9. package/dest/avm/avm_simulator.js +6 -6
  10. package/dest/avm/fixtures/index.d.ts.map +1 -1
  11. package/dest/avm/fixtures/index.js +3 -3
  12. package/dest/avm/journal/journal.d.ts +14 -13
  13. package/dest/avm/journal/journal.d.ts.map +1 -1
  14. package/dest/avm/journal/journal.js +5 -5
  15. package/dest/avm/journal/trace.d.ts +8 -19
  16. package/dest/avm/journal/trace.d.ts.map +1 -1
  17. package/dest/avm/journal/trace.js +48 -116
  18. package/dest/avm/journal/trace_types.d.ts +23 -4
  19. package/dest/avm/journal/trace_types.d.ts.map +1 -1
  20. package/dest/avm/opcodes/accrued_substate.js +2 -2
  21. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  22. package/dest/avm/opcodes/external_calls.js +20 -5
  23. package/dest/client/client_execution_context.d.ts +2 -2
  24. package/dest/client/client_execution_context.d.ts.map +1 -1
  25. package/dest/client/client_execution_context.js +6 -6
  26. package/dest/client/private_execution.d.ts +1 -1
  27. package/dest/client/private_execution.d.ts.map +1 -1
  28. package/dest/client/private_execution.js +3 -3
  29. package/dest/client/unconstrained_execution.d.ts +1 -1
  30. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  31. package/dest/client/unconstrained_execution.js +2 -2
  32. package/dest/client/view_data_oracle.d.ts +2 -2
  33. package/dest/client/view_data_oracle.d.ts.map +1 -1
  34. package/dest/client/view_data_oracle.js +2 -2
  35. package/dest/public/executor.d.ts +1 -15
  36. package/dest/public/executor.d.ts.map +1 -1
  37. package/dest/public/executor.js +70 -77
  38. package/dest/public/public_execution_context.d.ts +6 -6
  39. package/dest/public/public_execution_context.d.ts.map +1 -1
  40. package/dest/public/public_execution_context.js +8 -12
  41. package/dest/public/transitional_adaptors.d.ts +32 -0
  42. package/dest/public/transitional_adaptors.d.ts.map +1 -0
  43. package/dest/public/transitional_adaptors.js +161 -0
  44. package/package.json +5 -5
  45. package/src/acvm/acvm.ts +1 -1
  46. package/src/acvm/oracle/oracle.ts +2 -2
  47. package/src/avm/avm_execution_environment.ts +9 -17
  48. package/src/avm/avm_memory_types.ts +4 -4
  49. package/src/avm/avm_simulator.ts +5 -5
  50. package/src/avm/fixtures/index.ts +2 -1
  51. package/src/avm/journal/journal.ts +24 -17
  52. package/src/avm/journal/trace.ts +59 -121
  53. package/src/avm/journal/trace_types.ts +39 -39
  54. package/src/avm/opcodes/accrued_substate.ts +1 -1
  55. package/src/avm/opcodes/external_calls.ts +24 -4
  56. package/src/client/client_execution_context.ts +5 -5
  57. package/src/client/private_execution.ts +2 -2
  58. package/src/client/unconstrained_execution.ts +1 -1
  59. package/src/client/view_data_oracle.ts +1 -1
  60. package/src/public/executor.ts +82 -87
  61. package/src/public/public_execution_context.ts +14 -19
  62. package/src/public/transitional_adaptors.ts +240 -0
  63. package/dest/avm/temporary_executor_migration.d.ts +0 -27
  64. package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
  65. package/dest/avm/temporary_executor_migration.js +0 -94
  66. package/src/avm/temporary_executor_migration.ts +0 -136
@@ -1,94 +0,0 @@
1
- // All code in this file needs to die once the public executor is phased out.
2
- import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
3
- import { ContractStorageRead, ContractStorageUpdateRequest, L2ToL1Message, SideEffect, SideEffectLinkedToNoteHash, } from '@aztec/circuits.js';
4
- import { Fr } from '@aztec/foundation/fields';
5
- import { createSimulationError } from '../common/errors.js';
6
- import { AvmExecutionEnvironment } from './avm_execution_environment.js';
7
- import { Mov } from './opcodes/memory.js';
8
- /** Temporary Method
9
- *
10
- * Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
11
- *
12
- * @param current
13
- * @param globalVariables
14
- * @returns
15
- */
16
- export function temporaryCreateAvmExecutionEnvironment(current, globalVariables) {
17
- // Function selector is included temporarily until noir codegens public contract bytecode in a single blob
18
- return new AvmExecutionEnvironment(current.contractAddress, current.callContext.storageContractAddress, current.callContext.msgSender, // TODO: origin is not available
19
- current.callContext.msgSender, current.callContext.portalContractAddress,
20
- /*feePerL1Gas=*/ Fr.zero(),
21
- /*feePerL2Gas=*/ Fr.zero(),
22
- /*feePerDaGas=*/ Fr.zero(),
23
- /*contractCallDepth=*/ Fr.zero(), globalVariables, current.callContext.isStaticCall, current.callContext.isDelegateCall, current.args, current.functionData.selector);
24
- }
25
- /** Temporary Method
26
- *
27
- * Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
28
- *
29
- * @param execution
30
- * @param newWorldState
31
- * @param result
32
- * @returns
33
- */
34
- export function temporaryConvertAvmResults(execution, newWorldState, result) {
35
- const newNoteHashes = newWorldState.newNoteHashes.map(noteHash => new SideEffect(noteHash, Fr.zero()));
36
- const contractStorageReads = [];
37
- const reduceStorageReadRequests = (contractAddress, storageReads) => {
38
- return storageReads.forEach((innerArray, key) => {
39
- innerArray.forEach(value => {
40
- contractStorageReads.push(new ContractStorageRead(new Fr(key), new Fr(value), 0));
41
- });
42
- });
43
- };
44
- newWorldState.storageReads.forEach((storageMap, address) => reduceStorageReadRequests(address, storageMap));
45
- const contractStorageUpdateRequests = [];
46
- const reduceStorageUpdateRequests = (contractAddress, storageUpdateRequests) => {
47
- return storageUpdateRequests.forEach((innerArray, key) => {
48
- innerArray.forEach(value => {
49
- contractStorageUpdateRequests.push(new ContractStorageUpdateRequest(new Fr(key), new Fr(value), 0));
50
- });
51
- });
52
- };
53
- newWorldState.storageWrites.forEach((storageMap, address) => reduceStorageUpdateRequests(address, storageMap));
54
- const returnValues = result.output;
55
- // TODO(follow up in pr tree): NOT SUPPORTED YET, make sure hashing and log resolution is done correctly
56
- // Disabled.
57
- const nestedExecutions = [];
58
- const nullifierReadRequests = [];
59
- const nullifierNonExistentReadRequests = [];
60
- const newNullifiers = newWorldState.newNullifiers.map((nullifier, i) => new SideEffectLinkedToNoteHash(nullifier.toField(), Fr.zero(), new Fr(i + 1)));
61
- const unencryptedLogs = UnencryptedFunctionL2Logs.empty();
62
- const newL2ToL1Messages = newWorldState.newL1Messages.map(() => L2ToL1Message.empty());
63
- // TODO keep track of side effect counters
64
- const startSideEffectCounter = Fr.ZERO;
65
- const endSideEffectCounter = Fr.ZERO;
66
- return {
67
- execution,
68
- nullifierReadRequests,
69
- nullifierNonExistentReadRequests,
70
- newNoteHashes,
71
- newL2ToL1Messages,
72
- startSideEffectCounter,
73
- endSideEffectCounter,
74
- newNullifiers,
75
- contractStorageReads,
76
- contractStorageUpdateRequests,
77
- returnValues,
78
- nestedExecutions,
79
- unencryptedLogs,
80
- reverted: result.reverted,
81
- revertReason: result.revertReason ? createSimulationError(result.revertReason) : undefined,
82
- };
83
- }
84
- export function isAvmBytecode(bytecode) {
85
- const magicBuf = Buffer.from([
86
- Mov.opcode, // opcode
87
- 0x00, // indirect
88
- ...Buffer.from('000018ca', 'hex'), // srcOffset
89
- ...Buffer.from('000018ca', 'hex'), // dstOffset
90
- ]);
91
- const magicSize = magicBuf.length;
92
- return bytecode.subarray(-magicSize).equals(magicBuf);
93
- }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcG9yYXJ5X2V4ZWN1dG9yX21pZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vdGVtcG9yYXJ5X2V4ZWN1dG9yX21pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFFNUIsYUFBYSxFQUViLFVBQVUsRUFDViwwQkFBMEIsR0FDM0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHekUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTFDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsc0NBQXNDLENBQ3BELE9BQXdCLEVBQ3hCLGVBQWdDO0lBRWhDLDBHQUEwRztJQUMxRyxPQUFPLElBQUksdUJBQXVCLENBQ2hDLE9BQU8sQ0FBQyxlQUFlLEVBQ3ZCLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQzFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGdDQUFnQztJQUMvRCxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFDN0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBcUI7SUFDekMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRTtJQUMxQixnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFO0lBQzFCLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7SUFDMUIsc0JBQXNCLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUNoQyxlQUFl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
@@ -1,136 +0,0 @@
1
- // All code in this file needs to die once the public executor is phased out.
2
- import { UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
3
- import {
4
- ContractStorageRead,
5
- ContractStorageUpdateRequest,
6
- type GlobalVariables,
7
- L2ToL1Message,
8
- type ReadRequest,
9
- SideEffect,
10
- SideEffectLinkedToNoteHash,
11
- } from '@aztec/circuits.js';
12
- import { Fr } from '@aztec/foundation/fields';
13
-
14
- import { createSimulationError } from '../common/errors.js';
15
- import { type PublicExecution, type PublicExecutionResult } from '../public/execution.js';
16
- import { AvmExecutionEnvironment } from './avm_execution_environment.js';
17
- import { type AvmContractCallResults } from './avm_message_call_result.js';
18
- import { type JournalData } from './journal/journal.js';
19
- import { Mov } from './opcodes/memory.js';
20
-
21
- /** Temporary Method
22
- *
23
- * Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
24
- *
25
- * @param current
26
- * @param globalVariables
27
- * @returns
28
- */
29
- export function temporaryCreateAvmExecutionEnvironment(
30
- current: PublicExecution,
31
- globalVariables: GlobalVariables,
32
- ): AvmExecutionEnvironment {
33
- // Function selector is included temporarily until noir codegens public contract bytecode in a single blob
34
- return new AvmExecutionEnvironment(
35
- current.contractAddress,
36
- current.callContext.storageContractAddress,
37
- current.callContext.msgSender, // TODO: origin is not available
38
- current.callContext.msgSender,
39
- current.callContext.portalContractAddress,
40
- /*feePerL1Gas=*/ Fr.zero(),
41
- /*feePerL2Gas=*/ Fr.zero(),
42
- /*feePerDaGas=*/ Fr.zero(),
43
- /*contractCallDepth=*/ Fr.zero(),
44
- globalVariables,
45
- current.callContext.isStaticCall,
46
- current.callContext.isDelegateCall,
47
- current.args,
48
- current.functionData.selector,
49
- );
50
- }
51
-
52
- /** Temporary Method
53
- *
54
- * Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
55
- *
56
- * @param execution
57
- * @param newWorldState
58
- * @param result
59
- * @returns
60
- */
61
- export function temporaryConvertAvmResults(
62
- execution: PublicExecution,
63
- newWorldState: JournalData,
64
- result: AvmContractCallResults,
65
- ): PublicExecutionResult {
66
- const newNoteHashes = newWorldState.newNoteHashes.map(noteHash => new SideEffect(noteHash, Fr.zero()));
67
-
68
- const contractStorageReads: ContractStorageRead[] = [];
69
- const reduceStorageReadRequests = (contractAddress: bigint, storageReads: Map<bigint, Fr[]>) => {
70
- return storageReads.forEach((innerArray, key) => {
71
- innerArray.forEach(value => {
72
- contractStorageReads.push(new ContractStorageRead(new Fr(key), new Fr(value), 0));
73
- });
74
- });
75
- };
76
- newWorldState.storageReads.forEach((storageMap: Map<bigint, Fr[]>, address: bigint) =>
77
- reduceStorageReadRequests(address, storageMap),
78
- );
79
-
80
- const contractStorageUpdateRequests: ContractStorageUpdateRequest[] = [];
81
- const reduceStorageUpdateRequests = (contractAddress: bigint, storageUpdateRequests: Map<bigint, Fr[]>) => {
82
- return storageUpdateRequests.forEach((innerArray, key) => {
83
- innerArray.forEach(value => {
84
- contractStorageUpdateRequests.push(new ContractStorageUpdateRequest(new Fr(key), new Fr(value), 0));
85
- });
86
- });
87
- };
88
- newWorldState.storageWrites.forEach((storageMap: Map<bigint, Fr[]>, address: bigint) =>
89
- reduceStorageUpdateRequests(address, storageMap),
90
- );
91
-
92
- const returnValues = result.output;
93
-
94
- // TODO(follow up in pr tree): NOT SUPPORTED YET, make sure hashing and log resolution is done correctly
95
- // Disabled.
96
- const nestedExecutions: PublicExecutionResult[] = [];
97
- const nullifierReadRequests: ReadRequest[] = [];
98
- const nullifierNonExistentReadRequests: ReadRequest[] = [];
99
- const newNullifiers: SideEffectLinkedToNoteHash[] = newWorldState.newNullifiers.map(
100
- (nullifier, i) => new SideEffectLinkedToNoteHash(nullifier.toField(), Fr.zero(), new Fr(i + 1)),
101
- );
102
- const unencryptedLogs = UnencryptedFunctionL2Logs.empty();
103
- const newL2ToL1Messages = newWorldState.newL1Messages.map(() => L2ToL1Message.empty());
104
- // TODO keep track of side effect counters
105
- const startSideEffectCounter = Fr.ZERO;
106
- const endSideEffectCounter = Fr.ZERO;
107
-
108
- return {
109
- execution,
110
- nullifierReadRequests,
111
- nullifierNonExistentReadRequests,
112
- newNoteHashes,
113
- newL2ToL1Messages,
114
- startSideEffectCounter,
115
- endSideEffectCounter,
116
- newNullifiers,
117
- contractStorageReads,
118
- contractStorageUpdateRequests,
119
- returnValues,
120
- nestedExecutions,
121
- unencryptedLogs,
122
- reverted: result.reverted,
123
- revertReason: result.revertReason ? createSimulationError(result.revertReason) : undefined,
124
- };
125
- }
126
-
127
- export function isAvmBytecode(bytecode: Buffer): boolean {
128
- const magicBuf = Buffer.from([
129
- Mov.opcode, // opcode
130
- 0x00, // indirect
131
- ...Buffer.from('000018ca', 'hex'), // srcOffset
132
- ...Buffer.from('000018ca', 'hex'), // dstOffset
133
- ]);
134
- const magicSize = magicBuf.length;
135
- return bytecode.subarray(-magicSize).equals(magicBuf);
136
- }