@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.
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/oracle.d.ts +1 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +3 -3
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +8 -7
- package/dest/avm/avm_memory_types.js +5 -5
- package/dest/avm/avm_simulator.js +6 -6
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +3 -3
- package/dest/avm/journal/journal.d.ts +14 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +5 -5
- package/dest/avm/journal/trace.d.ts +8 -19
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +48 -116
- package/dest/avm/journal/trace_types.d.ts +23 -4
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +2 -2
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +20 -5
- package/dest/client/client_execution_context.d.ts +2 -2
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +6 -6
- package/dest/client/private_execution.d.ts +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +3 -3
- package/dest/client/unconstrained_execution.d.ts +1 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +2 -2
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +2 -2
- package/dest/public/executor.d.ts +1 -15
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +70 -77
- package/dest/public/public_execution_context.d.ts +6 -6
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +8 -12
- package/dest/public/transitional_adaptors.d.ts +32 -0
- package/dest/public/transitional_adaptors.d.ts.map +1 -0
- package/dest/public/transitional_adaptors.js +161 -0
- package/package.json +5 -5
- package/src/acvm/acvm.ts +1 -1
- package/src/acvm/oracle/oracle.ts +2 -2
- package/src/avm/avm_execution_environment.ts +9 -17
- package/src/avm/avm_memory_types.ts +4 -4
- package/src/avm/avm_simulator.ts +5 -5
- package/src/avm/fixtures/index.ts +2 -1
- package/src/avm/journal/journal.ts +24 -17
- package/src/avm/journal/trace.ts +59 -121
- package/src/avm/journal/trace_types.ts +39 -39
- package/src/avm/opcodes/accrued_substate.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +24 -4
- package/src/client/client_execution_context.ts +5 -5
- package/src/client/private_execution.ts +2 -2
- package/src/client/unconstrained_execution.ts +1 -1
- package/src/client/view_data_oracle.ts +1 -1
- package/src/public/executor.ts +82 -87
- package/src/public/public_execution_context.ts +14 -19
- package/src/public/transitional_adaptors.ts +240 -0
- package/dest/avm/temporary_executor_migration.d.ts +0 -27
- package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
- package/dest/avm/temporary_executor_migration.js +0 -94
- 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
|
-
}
|