@aztec/simulator 0.43.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.
- package/dest/acvm/oracle/oracle.d.ts +3 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +12 -6
- package/dest/acvm/oracle/typed_oracle.d.ts +6 -4
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +8 -2
- package/dest/avm/avm_context.d.ts +1 -1
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +3 -3
- package/dest/avm/{avm_message_call_result.d.ts → avm_contract_call_result.d.ts} +2 -2
- package/dest/avm/avm_contract_call_result.d.ts.map +1 -0
- package/dest/avm/avm_contract_call_result.js +18 -0
- package/dest/avm/avm_execution_environment.d.ts +8 -10
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +15 -19
- package/dest/avm/avm_gas.js +2 -2
- package/dest/avm/avm_simulator.d.ts +4 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +7 -8
- package/dest/avm/bytecode_utils.d.ts +5 -0
- package/dest/avm/bytecode_utils.d.ts.map +1 -0
- package/dest/avm/bytecode_utils.js +29 -0
- package/dest/avm/errors.js +2 -2
- package/dest/avm/fixtures/index.d.ts +10 -6
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +10 -17
- package/dest/avm/journal/journal.d.ts +56 -65
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +80 -117
- package/dest/avm/journal/nullifiers.d.ts +21 -8
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +26 -8
- package/dest/avm/journal/public_storage.d.ts +5 -1
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +11 -2
- package/dest/avm/opcodes/accrued_substate.d.ts +1 -2
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +8 -17
- package/dest/avm/opcodes/environment_getters.d.ts +13 -8
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +20 -13
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +11 -27
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +5 -5
- package/dest/avm/serialization/instruction_serialization.d.ts +9 -9
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +10 -10
- package/dest/avm/test_utils.d.ts +14 -0
- package/dest/avm/test_utils.d.ts.map +1 -0
- package/dest/avm/test_utils.js +36 -0
- package/dest/client/client_execution_context.d.ts +6 -4
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +8 -6
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +1 -1
- package/dest/client/execution_result.d.ts +2 -1
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +1 -1
- package/dest/client/index.d.ts +2 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +3 -1
- package/dest/client/simulator.d.ts +3 -3
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +1 -1
- package/dest/client/view_data_oracle.d.ts +5 -1
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +12 -4
- package/dest/mocks/fixtures.d.ts +3 -3
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +6 -5
- package/dest/public/abstract_phase_manager.d.ts +1 -0
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +17 -14
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +2 -1
- package/dest/public/execution.d.ts +33 -30
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +2 -2
- package/dest/public/executor.d.ts +12 -7
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +42 -33
- package/dest/public/hints_builder.d.ts +1 -1
- package/dest/public/index.d.ts +1 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -1
- package/dest/public/public_kernel.d.ts +1 -1
- package/dest/public/public_kernel.d.ts.map +1 -1
- package/dest/public/public_kernel.js +2 -2
- package/dest/public/public_processor.d.ts +5 -2
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +142 -123
- package/dest/public/side_effect_trace.d.ts +87 -0
- package/dest/public/side_effect_trace.d.ts.map +1 -0
- package/dest/public/side_effect_trace.js +236 -0
- package/dest/public/side_effect_trace_interface.d.ts +36 -0
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
- package/dest/public/side_effect_trace_interface.js +2 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +2 -1
- package/dest/rollup/rollup.d.ts +1 -1
- package/dest/rollup/rollup.d.ts.map +1 -1
- package/dest/rollup/rollup.js +2 -2
- package/package.json +18 -9
- package/src/acvm/oracle/oracle.ts +23 -5
- package/src/acvm/oracle/typed_oracle.ts +23 -4
- package/src/avm/avm_context.ts +2 -2
- package/src/avm/{avm_message_call_result.ts → avm_contract_call_result.ts} +1 -1
- package/src/avm/avm_execution_environment.ts +16 -26
- package/src/avm/avm_gas.ts +1 -1
- package/src/avm/avm_simulator.ts +10 -13
- package/src/avm/bytecode_utils.ts +32 -0
- package/src/avm/errors.ts +1 -1
- package/src/avm/fixtures/index.ts +21 -23
- package/src/avm/journal/journal.ts +118 -224
- package/src/avm/journal/nullifiers.ts +30 -13
- package/src/avm/journal/public_storage.ts +12 -2
- package/src/avm/opcodes/accrued_substate.ts +12 -21
- package/src/avm/opcodes/environment_getters.ts +23 -14
- package/src/avm/opcodes/external_calls.ts +13 -36
- package/src/avm/serialization/bytecode_serialization.ts +4 -3
- package/src/avm/serialization/instruction_serialization.ts +3 -3
- package/src/avm/test_utils.ts +53 -0
- package/src/client/client_execution_context.ts +22 -7
- package/src/client/execution_note_cache.ts +0 -1
- package/src/client/execution_result.ts +2 -1
- package/src/client/index.ts +2 -0
- package/src/client/simulator.ts +8 -2
- package/src/client/view_data_oracle.ts +20 -3
- package/src/mocks/fixtures.ts +7 -6
- package/src/public/abstract_phase_manager.ts +32 -21
- package/src/public/app_logic_phase_manager.ts +1 -0
- package/src/public/execution.ts +45 -31
- package/src/public/executor.ts +71 -49
- package/src/public/index.ts +1 -1
- package/src/public/public_kernel.ts +2 -1
- package/src/public/public_processor.ts +11 -2
- package/src/public/side_effect_trace.ts +341 -0
- package/src/public/side_effect_trace_interface.ts +41 -0
- package/src/public/teardown_phase_manager.ts +1 -0
- package/src/rollup/rollup.ts +3 -1
- package/dest/avm/avm_message_call_result.d.ts.map +0 -1
- package/dest/avm/avm_message_call_result.js +0 -18
- package/dest/avm/journal/trace.d.ts +0 -33
- package/dest/avm/journal/trace.d.ts.map +0 -1
- package/dest/avm/journal/trace.js +0 -152
- package/dest/avm/journal/trace_types.d.ts +0 -55
- package/dest/avm/journal/trace_types.d.ts.map +0 -1
- package/dest/avm/journal/trace_types.js +0 -2
- package/dest/public/transitional_adaptors.d.ts +0 -21
- package/dest/public/transitional_adaptors.d.ts.map +0 -1
- package/dest/public/transitional_adaptors.js +0 -90
- package/src/avm/journal/trace.ts +0 -181
- package/src/avm/journal/trace_types.ts +0 -91
- package/src/public/transitional_adaptors.ts +0 -168
|
@@ -1,54 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
import { UnencryptedL2Log } from '@aztec/circuit-types';
|
|
3
|
-
import { AztecAddress, ContractStorageRead, ContractStorageUpdateRequest, EthAddress, L2ToL1Message, LogHash, NoteHash, Nullifier, ReadRequest, } from '@aztec/circuits.js';
|
|
4
|
-
import { EventSelector } from '@aztec/foundation/abi';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
1
|
+
import { AztecAddress } from '@aztec/circuits.js';
|
|
6
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
7
3
|
import { SerializableContractInstance } from '@aztec/types/contracts';
|
|
8
|
-
import {
|
|
4
|
+
import { NullifierManager } from './nullifiers.js';
|
|
9
5
|
import { PublicStorage } from './public_storage.js';
|
|
10
|
-
import { WorldStateAccessTrace } from './trace.js';
|
|
11
6
|
/**
|
|
12
7
|
* A class to manage persistable AVM state for contract calls.
|
|
13
8
|
* Maintains a cache of the current world state,
|
|
14
|
-
* a trace of all
|
|
9
|
+
* a trace of all side effects.
|
|
15
10
|
*
|
|
16
|
-
* The simulator should make any world state
|
|
11
|
+
* The simulator should make any world state / tree queries through this object.
|
|
17
12
|
*
|
|
18
13
|
* Manages merging of successful/reverted child state into current state.
|
|
19
14
|
*/
|
|
20
15
|
export class AvmPersistableStateManager {
|
|
21
|
-
constructor(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
constructor(
|
|
17
|
+
/** Reference to node storage */
|
|
18
|
+
hostStorage,
|
|
19
|
+
/** Side effect trace */
|
|
20
|
+
trace,
|
|
21
|
+
/** Public storage, including cached writes */
|
|
22
|
+
// TODO(5818): make private once no longer accessed in executor
|
|
23
|
+
publicStorage,
|
|
24
|
+
/** Nullifier set, including cached/recently-emitted nullifiers */
|
|
25
|
+
nullifiers) {
|
|
26
26
|
this.hostStorage = hostStorage;
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
contractStorageUpdateRequests: [],
|
|
41
|
-
unencryptedLogsHashes: [],
|
|
42
|
-
unencryptedLogs: [],
|
|
43
|
-
allUnencryptedLogs: [],
|
|
44
|
-
nestedExecutions: [],
|
|
45
|
-
};
|
|
27
|
+
this.trace = trace;
|
|
28
|
+
this.publicStorage = publicStorage;
|
|
29
|
+
this.nullifiers = nullifiers;
|
|
30
|
+
this.log = createDebugLogger('aztec:avm_simulator:state_manager');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a new state manager with some preloaded pending siloed nullifiers
|
|
34
|
+
*/
|
|
35
|
+
static newWithPendingSiloedNullifiers(hostStorage, trace, pendingSiloedNullifiers) {
|
|
36
|
+
const parentNullifiers = NullifierManager.newWithPendingSiloedNullifiers(hostStorage.commitmentsDb, pendingSiloedNullifiers);
|
|
37
|
+
return new AvmPersistableStateManager(hostStorage, trace,
|
|
38
|
+
/*publicStorage=*/ new PublicStorage(hostStorage.publicStateDb),
|
|
39
|
+
/*nullifiers=*/ parentNullifiers.fork());
|
|
46
40
|
}
|
|
47
41
|
/**
|
|
48
42
|
* Create a new state manager forked from this one
|
|
49
43
|
*/
|
|
50
44
|
fork() {
|
|
51
|
-
return new AvmPersistableStateManager(this.hostStorage, this);
|
|
45
|
+
return new AvmPersistableStateManager(this.hostStorage, this.trace.fork(), this.publicStorage.fork(), this.nullifiers.fork());
|
|
52
46
|
}
|
|
53
47
|
/**
|
|
54
48
|
* Write to public storage, journal/trace the write.
|
|
@@ -61,9 +55,6 @@ export class AvmPersistableStateManager {
|
|
|
61
55
|
this.log.debug(`Storage write (address=${storageAddress}, slot=${slot}): value=${value}`);
|
|
62
56
|
// Cache storage writes for later reference/reads
|
|
63
57
|
this.publicStorage.write(storageAddress, slot, value);
|
|
64
|
-
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
65
|
-
this.transitionalExecutionResult.contractStorageUpdateRequests.push(new ContractStorageUpdateRequest(slot, value, this.trace.accessCounter, storageAddress));
|
|
66
|
-
// Trace all storage writes (even reverted ones)
|
|
67
58
|
this.trace.tracePublicStorageWrite(storageAddress, slot, value);
|
|
68
59
|
}
|
|
69
60
|
/**
|
|
@@ -76,12 +67,21 @@ export class AvmPersistableStateManager {
|
|
|
76
67
|
async readStorage(storageAddress, slot) {
|
|
77
68
|
const { value, exists, cached } = await this.publicStorage.read(storageAddress, slot);
|
|
78
69
|
this.log.debug(`Storage read (address=${storageAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
79
|
-
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
80
|
-
this.transitionalExecutionResult.contractStorageReads.push(new ContractStorageRead(slot, value, this.trace.accessCounter, storageAddress));
|
|
81
|
-
// We want to keep track of all performed reads (even reverted ones)
|
|
82
70
|
this.trace.tracePublicStorageRead(storageAddress, slot, value, exists, cached);
|
|
83
71
|
return Promise.resolve(value);
|
|
84
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Read from public storage, don't trace the read.
|
|
75
|
+
*
|
|
76
|
+
* @param storageAddress - the address of the contract whose storage is being read from
|
|
77
|
+
* @param slot - the slot in the contract's storage being read from
|
|
78
|
+
* @returns the latest value written to slot, or 0 if never written to before
|
|
79
|
+
*/
|
|
80
|
+
async peekStorage(storageAddress, slot) {
|
|
81
|
+
const { value, exists, cached } = await this.publicStorage.read(storageAddress, slot);
|
|
82
|
+
this.log.debug(`Storage peek (address=${storageAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
83
|
+
return Promise.resolve(value);
|
|
84
|
+
}
|
|
85
85
|
// TODO(4886): We currently don't silo note hashes.
|
|
86
86
|
/**
|
|
87
87
|
* Check if a note hash exists at the given leaf index, trace the check.
|
|
@@ -95,9 +95,7 @@ export class AvmPersistableStateManager {
|
|
|
95
95
|
const gotLeafIndex = await this.hostStorage.commitmentsDb.getCommitmentIndex(noteHash);
|
|
96
96
|
const exists = gotLeafIndex === leafIndex.toBigInt();
|
|
97
97
|
this.log.debug(`noteHashes(${storageAddress})@${noteHash} ?? leafIndex: ${leafIndex}, exists: ${exists}.`);
|
|
98
|
-
|
|
99
|
-
this.transitionalExecutionResult.noteHashReadRequests.push(new ReadRequest(noteHash, this.trace.accessCounter));
|
|
100
|
-
this.trace.traceNoteHashCheck(storageAddress, noteHash, exists, leafIndex);
|
|
98
|
+
this.trace.traceNoteHashCheck(storageAddress, noteHash, leafIndex, exists);
|
|
101
99
|
return Promise.resolve(exists);
|
|
102
100
|
}
|
|
103
101
|
/**
|
|
@@ -105,8 +103,6 @@ export class AvmPersistableStateManager {
|
|
|
105
103
|
* @param noteHash - the unsiloed note hash to write
|
|
106
104
|
*/
|
|
107
105
|
writeNoteHash(storageAddress, noteHash) {
|
|
108
|
-
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
109
|
-
this.transitionalExecutionResult.newNoteHashes.push(new NoteHash(noteHash, this.trace.accessCounter));
|
|
110
106
|
this.log.debug(`noteHashes(${storageAddress}) += @${noteHash}.`);
|
|
111
107
|
this.trace.traceNewNoteHash(storageAddress, noteHash);
|
|
112
108
|
}
|
|
@@ -118,15 +114,8 @@ export class AvmPersistableStateManager {
|
|
|
118
114
|
*/
|
|
119
115
|
async checkNullifierExists(storageAddress, nullifier) {
|
|
120
116
|
const [exists, isPending, leafIndex] = await this.nullifiers.checkExists(storageAddress, nullifier);
|
|
121
|
-
this.log.debug(`nullifiers(${storageAddress})@${nullifier} ?? leafIndex: ${leafIndex},
|
|
122
|
-
|
|
123
|
-
if (exists) {
|
|
124
|
-
this.transitionalExecutionResult.nullifierReadRequests.push(new ReadRequest(nullifier, this.trace.accessCounter));
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
this.transitionalExecutionResult.nullifierNonExistentReadRequests.push(new ReadRequest(nullifier, this.trace.accessCounter));
|
|
128
|
-
}
|
|
129
|
-
this.trace.traceNullifierCheck(storageAddress, nullifier, exists, isPending, leafIndex);
|
|
117
|
+
this.log.debug(`nullifiers(${storageAddress})@${nullifier} ?? leafIndex: ${leafIndex}, exists: ${exists}, pending: ${isPending}.`);
|
|
118
|
+
this.trace.traceNullifierCheck(storageAddress, nullifier, leafIndex, exists, isPending);
|
|
130
119
|
return Promise.resolve(exists);
|
|
131
120
|
}
|
|
132
121
|
/**
|
|
@@ -135,8 +124,6 @@ export class AvmPersistableStateManager {
|
|
|
135
124
|
* @param nullifier - the unsiloed nullifier to write
|
|
136
125
|
*/
|
|
137
126
|
async writeNullifier(storageAddress, nullifier) {
|
|
138
|
-
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
139
|
-
this.transitionalExecutionResult.newNullifiers.push(new Nullifier(nullifier, this.trace.accessCounter, /*noteHash=*/ Fr.ZERO));
|
|
140
127
|
this.log.debug(`nullifiers(${storageAddress}) += ${nullifier}.`);
|
|
141
128
|
// Cache pending nullifiers for later access
|
|
142
129
|
await this.nullifiers.append(storageAddress, nullifier);
|
|
@@ -149,12 +136,11 @@ export class AvmPersistableStateManager {
|
|
|
149
136
|
* @param msgLeafIndex - the message leaf index to use in the check
|
|
150
137
|
* @returns exists - whether the message exists in the L1 to L2 Messages tree
|
|
151
138
|
*/
|
|
152
|
-
async checkL1ToL2MessageExists(msgHash, msgLeafIndex) {
|
|
139
|
+
async checkL1ToL2MessageExists(contractAddress, msgHash, msgLeafIndex) {
|
|
153
140
|
const valueAtIndex = await this.hostStorage.commitmentsDb.getL1ToL2LeafValue(msgLeafIndex.toBigInt());
|
|
154
141
|
const exists = valueAtIndex?.equals(msgHash) ?? false;
|
|
155
142
|
this.log.debug(`l1ToL2Messages(@${msgLeafIndex}) ?? exists: ${exists}, expected: ${msgHash}, found: ${valueAtIndex}.`);
|
|
156
|
-
this.
|
|
157
|
-
this.trace.traceL1ToL2MessageCheck(msgHash, msgLeafIndex, exists);
|
|
143
|
+
this.trace.traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists);
|
|
158
144
|
return Promise.resolve(exists);
|
|
159
145
|
}
|
|
160
146
|
/**
|
|
@@ -162,30 +148,25 @@ export class AvmPersistableStateManager {
|
|
|
162
148
|
* @param recipient - L1 contract address to send the message to.
|
|
163
149
|
* @param content - Message content.
|
|
164
150
|
*/
|
|
165
|
-
|
|
151
|
+
writeL2ToL1Message(recipient, content) {
|
|
166
152
|
this.log.debug(`L1Messages(${recipient}) += ${content}.`);
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
this.transitionalExecutionResult.unencryptedLogs.push(ulog);
|
|
179
|
-
this.transitionalExecutionResult.allUnencryptedLogs.push(ulog);
|
|
180
|
-
// this duplicates exactly what happens in the trace just for the purpose of transitional integration with the kernel
|
|
181
|
-
this.transitionalExecutionResult.unencryptedLogsHashes.push(
|
|
182
|
-
// TODO(6578): explain magic number 4 here
|
|
183
|
-
new LogHash(logHash, this.trace.accessCounter, new Fr(ulog.length + 4)));
|
|
184
|
-
// TODO(6206): likely need to track this here and not just in the transitional logic.
|
|
185
|
-
// TODO(6205): why are logs pushed here but logs hashes are traced?
|
|
186
|
-
this.newLogs.push(ulog);
|
|
187
|
-
this.trace.traceNewLog(logHash);
|
|
153
|
+
this.trace.traceNewL2ToL1Message(recipient, content);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Write an unencrypted log
|
|
157
|
+
* @param contractAddress - address of the contract that emitted the log
|
|
158
|
+
* @param event - log event selector
|
|
159
|
+
* @param log - log contents
|
|
160
|
+
*/
|
|
161
|
+
writeUnencryptedLog(contractAddress, log) {
|
|
162
|
+
this.log.debug(`UnencryptedL2Log(${contractAddress}) += event with ${log.length} fields.`);
|
|
163
|
+
this.trace.traceUnencryptedLog(contractAddress, log);
|
|
188
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Get a contract instance.
|
|
167
|
+
* @param contractAddress - address of the contract instance to retrieve.
|
|
168
|
+
* @returns the contract instance with an "exists" flag
|
|
169
|
+
*/
|
|
189
170
|
async getContractInstance(contractAddress) {
|
|
190
171
|
let exists = true;
|
|
191
172
|
const aztecAddress = AztecAddress.fromField(contractAddress);
|
|
@@ -194,52 +175,34 @@ export class AvmPersistableStateManager {
|
|
|
194
175
|
instance = SerializableContractInstance.empty().withAddress(aztecAddress);
|
|
195
176
|
exists = false;
|
|
196
177
|
}
|
|
178
|
+
this.log.debug(`Get Contract instance (address=${contractAddress}): exists=${exists}, instance=${JSON.stringify(instance)}`);
|
|
197
179
|
const tracedInstance = { ...instance, exists };
|
|
198
180
|
this.trace.traceGetContractInstance(tracedInstance);
|
|
199
181
|
return Promise.resolve(tracedInstance);
|
|
200
182
|
}
|
|
201
183
|
/**
|
|
202
|
-
* Accept nested world state modifications
|
|
184
|
+
* Accept nested world state modifications
|
|
203
185
|
*/
|
|
204
|
-
acceptNestedCallState(
|
|
205
|
-
|
|
206
|
-
this.
|
|
207
|
-
// Merge World State Access Trace
|
|
208
|
-
this.trace.acceptAndMerge(nestedJournal.trace);
|
|
209
|
-
// Accrued Substate
|
|
210
|
-
this.newL1Messages.push(...nestedJournal.newL1Messages);
|
|
211
|
-
this.newLogs.push(...nestedJournal.newLogs);
|
|
212
|
-
// TRANSITIONAL: This should be removed once the kernel handles and entire enqueued call per circuit
|
|
213
|
-
this.transitionalExecutionResult.allUnencryptedLogs.push(...nestedJournal.transitionalExecutionResult.allUnencryptedLogs);
|
|
186
|
+
acceptNestedCallState(nestedState) {
|
|
187
|
+
this.publicStorage.acceptAndMerge(nestedState.publicStorage);
|
|
188
|
+
this.nullifiers.acceptAndMerge(nestedState.nullifiers);
|
|
214
189
|
}
|
|
215
190
|
/**
|
|
216
|
-
*
|
|
191
|
+
* Get a contract's bytecode from the contracts DB
|
|
217
192
|
*/
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
this.trace.acceptAndMerge(nestedJournal.trace);
|
|
193
|
+
async getBytecode(contractAddress, selector) {
|
|
194
|
+
return await this.hostStorage.contractsDb.getBytecode(contractAddress, selector);
|
|
221
195
|
}
|
|
222
|
-
// TODO:(5818): do we need this type anymore?
|
|
223
196
|
/**
|
|
224
|
-
*
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
newNullifiers: this.trace.newNullifiers,
|
|
234
|
-
l1ToL2MessageChecks: this.trace.l1ToL2MessageChecks,
|
|
235
|
-
newL1Messages: this.newL1Messages,
|
|
236
|
-
newLogs: this.newLogs,
|
|
237
|
-
newLogsHashes: this.trace.newLogsHashes,
|
|
238
|
-
currentStorageValue: this.publicStorage.getCache().cachePerContract,
|
|
239
|
-
storageReads: this.trace.publicStorageReads,
|
|
240
|
-
storageWrites: this.trace.publicStorageWrites,
|
|
241
|
-
sideEffectCounter: this.trace.accessCounter,
|
|
242
|
-
};
|
|
197
|
+
* Accept the nested call's state and trace the nested call
|
|
198
|
+
*/
|
|
199
|
+
async processNestedCall(nestedState, nestedEnvironment, startGasLeft, endGasLeft, bytecode, avmCallResults) {
|
|
200
|
+
if (!avmCallResults.reverted) {
|
|
201
|
+
this.acceptNestedCallState(nestedState);
|
|
202
|
+
}
|
|
203
|
+
const functionName = (await nestedState.hostStorage.contractsDb.getDebugFunctionName(nestedEnvironment.address, nestedEnvironment.functionSelector)) ?? `${nestedEnvironment.address}:${nestedEnvironment.functionSelector}`;
|
|
204
|
+
this.log.verbose(`[AVM] Calling nested function ${functionName}`);
|
|
205
|
+
this.trace.traceNestedCall(nestedState.trace, nestedEnvironment, startGasLeft, endGasLeft, bytecode, avmCallResults, functionName);
|
|
243
206
|
}
|
|
244
207
|
}
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9qb3VybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsVUFBVSxFQUNWLGFBQWEsRUFDYixPQUFPLEVBQ1AsUUFBUSxFQUNSLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUl0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQXNEbkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLE9BQU8sMEJBQTBCO0lBc0JyQyxZQUFZLFdBQXdCLEVBQUUsTUFBbUM7UUFyQnhELFFBQUcsR0FBZ0IsaUJBQWlCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQWMzRix3QkFBd0I7UUFDakIsa0JBQWEsR0FBb0IsRUFBRSxDQUFDO1FBQ3BDLFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBTXRDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxNQUFN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
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9qb3VybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQW1DLE1BQU0sb0JBQW9CLENBQUM7QUFFbkYsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBT3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFHckM7SUFDRSxnQ0FBZ0M7SUFDZixXQUF3QjtJQUN6Qyx3QkFBd0I7SUFDUCxLQUFxQztJQUN0RCw4Q0FBOEM7SUFDOUMsK0RBQStEO0lBQy9DLGFBQTRCO0lBQzVDLGtFQUFrRTtJQUNqRCxVQUE0QjtRQVA1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUV4QixVQUFLLEdBQUwsS0FBSyxDQUFnQztRQUd0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUUzQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQVg5QixRQUFHLEdBQWdCLGlCQUFpQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFZeEYsQ0FBQztJQUVKOztPQUVHO0lBQ0ksTUFBTSxDQUFDLDhCQUE4QixDQUMxQyxXQUF3QixFQUN4QixLQUFxQyxFQUNyQyx1QkFBNkI7UUFFN0IsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyw4QkFBOEIsQ0FDdEUsV0FBVyxDQUFDLGFBQWEsRUFDekIsdUJBQXVCLENBQ3hCLENBQUM7UUFDRixPQUFPLElBQUksMEJBQTBCLENBQ25DLFdBQVcsRUFDWCxLQUFLO1FBQ0wsa0JBQWtCLENBQUMsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUMvRCxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsT0FBTyxJQUFJLDBCQUEwQixDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFlBQVksQ0FBQyxjQUFrQixFQUFFLElBQVEsRUFBRSxLQUFTO1FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixjQUFjLFVBQVUsSUFBSSxZQUFZLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUYsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWtCLEVBQUUsSUFBUTtRQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWiwwQkFBMEIsY0FBYyxVQUFVLElBQUksWUFBWSxLQUFLLFlBQVksTUFBTSxZQUFZLE1BQU0sRUFBRSxDQUM5RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0UsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWtCLEVBQUUsSUFBUTtRQUNuRCxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWiwwQkFBMEIsY0FBYyxVQUFVLElBQUksWUFBWSxLQUFLLFlBQVksTUFBTSxZQUFZLE1BQU0sRUFBRSxDQUM5RyxDQUFDO1FBQ0YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtREFBbUQ7SUFDbkQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxjQUFrQixFQUFFLFFBQVksRUFBRSxTQUFhO1FBQzlFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkYsTUFBTSxNQUFNLEdBQUcsWUFBWSxLQUFLLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLGNBQWMsS0FBSyxRQUFRLGtCQUFrQixTQUFTLGFBQWEsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMzRyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksYUFBYSxDQUFDLGNBQWtCLEVBQUUsUUFBWTtRQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLGNBQWMsU0FBUyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxjQUFrQixFQUFFLFNBQWE7UUFDakUsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1osY0FBYyxjQUFjLEtBQUssU0FBUyxrQkFBa0IsU0FBUyxhQUFhLE1BQU0sY0FBYyxTQUFTLEdBQUcsQ0FDbkgsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsY0FBa0IsRUFBRSxTQUFhO1FBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsY0FBYyxRQUFRLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDakUsNENBQTRDO1FBQzVDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsZUFBbUIsRUFBRSxPQUFXLEVBQUUsWUFBZ0I7UUFDdEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0RyxNQUFNLE1BQU0sR0FBRyxZQUFZLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWixtQkFBbUIsWUFBWSxnQkFBZ0IsTUFBTSxlQUFlLE9BQU8sWUFBWSxZQUFZLEdBQUcsQ0FDdkcsQ0FBQztRQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCLENBQUMsU0FBYSxFQUFFLE9BQVc7UUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxTQUFTLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxtQkFBbUIsQ0FBQyxlQUFtQixFQUFFLEdBQVM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLGVBQWUsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQixDQUFDLGVBQW1CO1FBQ2xELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEYsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0IsUUFBUSxHQUFHLDRCQUE0QixDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxRSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWixrQ0FBa0MsZUFBZSxhQUFhLE1BQU0sY0FBYyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQzdHLENBQUM7UUFDRixNQUFNLGNBQWMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFxQixDQUFDLFdBQXVDO1FBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUE2QixFQUFFLFFBQTBCO1FBQ2hGLE9BQU8sTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FDNUIsV0FBdUMsRUFDdkMsaUJBQTBDLEVBQzFDLFlBQWlCLEVBQ2pCLFVBQWUsRUFDZixRQUFnQixFQUNoQixjQUFxQztRQUVyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQ2hCLENBQUMsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FDN0QsaUJBQWlCLENBQUMsT0FBTyxFQUN6QixpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDbkMsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ3hCLFdBQVcsQ0FBQyxLQUFLLEVBQ2pCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osVUFBVSxFQUNWLFFBQVEsRUFDUixjQUFjLEVBQ2QsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -5,18 +5,28 @@ import type { CommitmentsDB } from '../../index.js';
|
|
|
5
5
|
* Maintains a nullifier cache, and ensures that existence checks fall back to the correct source.
|
|
6
6
|
* When a contract call completes, its cached nullifier set can be merged into its parent's.
|
|
7
7
|
*/
|
|
8
|
-
export declare class
|
|
8
|
+
export declare class NullifierManager {
|
|
9
9
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
10
10
|
private readonly hostNullifiers;
|
|
11
|
-
/** Parent's nullifiers. Checked on this' cache-miss. */
|
|
12
|
-
private readonly parent?;
|
|
13
11
|
/** Cached nullifiers. */
|
|
14
|
-
cache
|
|
12
|
+
private readonly cache;
|
|
13
|
+
/** Parent nullifier manager to fall back on */
|
|
14
|
+
private readonly parent?;
|
|
15
15
|
constructor(
|
|
16
16
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
17
17
|
hostNullifiers: CommitmentsDB,
|
|
18
|
-
/**
|
|
19
|
-
|
|
18
|
+
/** Cached nullifiers. */
|
|
19
|
+
cache?: NullifierCache,
|
|
20
|
+
/** Parent nullifier manager to fall back on */
|
|
21
|
+
parent?: NullifierManager | undefined);
|
|
22
|
+
/**
|
|
23
|
+
* Create a new nullifiers manager with some preloaded pending siloed nullifiers
|
|
24
|
+
*/
|
|
25
|
+
static newWithPendingSiloedNullifiers(hostNullifiers: CommitmentsDB, pendingSiloedNullifiers: Fr[]): NullifierManager;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new nullifiers manager forked from this one
|
|
28
|
+
*/
|
|
29
|
+
fork(): NullifierManager;
|
|
20
30
|
/**
|
|
21
31
|
* Get a nullifier's existence in this' cache or parent's (recursively).
|
|
22
32
|
* DOES NOT CHECK HOST STORAGE!
|
|
@@ -51,7 +61,7 @@ export declare class Nullifiers {
|
|
|
51
61
|
*
|
|
52
62
|
* @param incomingNullifiers - the incoming cached nullifiers to merge into this instance's
|
|
53
63
|
*/
|
|
54
|
-
acceptAndMerge(incomingNullifiers:
|
|
64
|
+
acceptAndMerge(incomingNullifiers: NullifierManager): void;
|
|
55
65
|
}
|
|
56
66
|
/**
|
|
57
67
|
* A class to cache nullifiers created during a contract call's AVM simulation.
|
|
@@ -66,6 +76,10 @@ export declare class NullifierCache {
|
|
|
66
76
|
*/
|
|
67
77
|
private cachePerContract;
|
|
68
78
|
private siloedNullifiers;
|
|
79
|
+
/**
|
|
80
|
+
* @parem siloedNullifierFrs: optional list of pending siloed nullifiers to initialize this cache with
|
|
81
|
+
*/
|
|
82
|
+
constructor(siloedNullifierFrs?: Fr[]);
|
|
69
83
|
/**
|
|
70
84
|
* Check whether a nullifier exists in the cache.
|
|
71
85
|
*
|
|
@@ -81,7 +95,6 @@ export declare class NullifierCache {
|
|
|
81
95
|
* @param nullifier - the nullifier to stage
|
|
82
96
|
*/
|
|
83
97
|
append(storageAddress: Fr, nullifier: Fr): void;
|
|
84
|
-
appendSiloed(siloedNullifier: Fr): void;
|
|
85
98
|
/**
|
|
86
99
|
* Merge another cache's nullifiers into this instance's.
|
|
87
100
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullifiers.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/nullifiers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,
|
|
1
|
+
{"version":3,"file":"nullifiers.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/nullifiers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,gBAAgB;IAEzB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,yBAAyB;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IALxB,+DAA+D;IAC9C,cAAc,EAAE,aAAa;IAC9C,yBAAyB;IACR,KAAK,GAAE,cAAqC;IAC7D,+CAA+C;IAC9B,MAAM,CAAC,8BAAkB;IAG5C;;OAEG;WACW,8BAA8B,CAAC,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,EAAE,EAAE;IAKzG;;OAEG;IACI,IAAI;IAIX;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;;;;;;;;;;OAYG;IACU,WAAW,CACtB,cAAc,EAAE,EAAE,EAClB,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IAe5E;;;;;OAKG;IACU,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAUrD;;;;OAIG;IACI,cAAc,CAAC,kBAAkB,EAAE,gBAAgB;CAG3D;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,gBAAgB,CAA0B;IAElD;;OAEG;gBACS,kBAAkB,CAAC,EAAE,EAAE,EAAE;IAMrC;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO;IAOzD;;;;;OAKG;IACI,MAAM,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAgB/C;;;;;;;;OAQG;IACI,cAAc,CAAC,kBAAkB,EAAE,cAAc;CAwBzD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAI5C"}
|
|
@@ -6,15 +6,30 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
6
6
|
* Maintains a nullifier cache, and ensures that existence checks fall back to the correct source.
|
|
7
7
|
* When a contract call completes, its cached nullifier set can be merged into its parent's.
|
|
8
8
|
*/
|
|
9
|
-
export class
|
|
9
|
+
export class NullifierManager {
|
|
10
10
|
constructor(
|
|
11
11
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
12
12
|
hostNullifiers,
|
|
13
|
-
/**
|
|
13
|
+
/** Cached nullifiers. */
|
|
14
|
+
cache = new NullifierCache(),
|
|
15
|
+
/** Parent nullifier manager to fall back on */
|
|
14
16
|
parent) {
|
|
15
17
|
this.hostNullifiers = hostNullifiers;
|
|
18
|
+
this.cache = cache;
|
|
16
19
|
this.parent = parent;
|
|
17
|
-
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a new nullifiers manager with some preloaded pending siloed nullifiers
|
|
23
|
+
*/
|
|
24
|
+
static newWithPendingSiloedNullifiers(hostNullifiers, pendingSiloedNullifiers) {
|
|
25
|
+
const cache = new NullifierCache(pendingSiloedNullifiers);
|
|
26
|
+
return new NullifierManager(hostNullifiers, cache);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a new nullifiers manager forked from this one
|
|
30
|
+
*/
|
|
31
|
+
fork() {
|
|
32
|
+
return new NullifierManager(this.hostNullifiers, new NullifierCache(), this);
|
|
18
33
|
}
|
|
19
34
|
/**
|
|
20
35
|
* Get a nullifier's existence in this' cache or parent's (recursively).
|
|
@@ -88,7 +103,10 @@ export class Nullifiers {
|
|
|
88
103
|
* An instance of this class can merge another instance's cached nullifiers into its own.
|
|
89
104
|
*/
|
|
90
105
|
export class NullifierCache {
|
|
91
|
-
|
|
106
|
+
/**
|
|
107
|
+
* @parem siloedNullifierFrs: optional list of pending siloed nullifiers to initialize this cache with
|
|
108
|
+
*/
|
|
109
|
+
constructor(siloedNullifierFrs) {
|
|
92
110
|
/**
|
|
93
111
|
* Map for staging nullifiers.
|
|
94
112
|
* One inner-set per contract storage address,
|
|
@@ -96,6 +114,9 @@ export class NullifierCache {
|
|
|
96
114
|
*/
|
|
97
115
|
this.cachePerContract = new Map();
|
|
98
116
|
this.siloedNullifiers = new Set();
|
|
117
|
+
if (siloedNullifierFrs !== undefined) {
|
|
118
|
+
siloedNullifierFrs.forEach(nullifier => this.siloedNullifiers.add(nullifier.toBigInt()));
|
|
119
|
+
}
|
|
99
120
|
}
|
|
100
121
|
/**
|
|
101
122
|
* Check whether a nullifier exists in the cache.
|
|
@@ -127,9 +148,6 @@ export class NullifierCache {
|
|
|
127
148
|
}
|
|
128
149
|
nullifiersForContract.add(nullifier.toBigInt());
|
|
129
150
|
}
|
|
130
|
-
appendSiloed(siloedNullifier) {
|
|
131
|
-
this.siloedNullifiers.add(siloedNullifier.toBigInt());
|
|
132
|
-
}
|
|
133
151
|
/**
|
|
134
152
|
* Merge another cache's nullifiers into this instance's.
|
|
135
153
|
*
|
|
@@ -169,4 +187,4 @@ export class NullifierCollisionError extends Error {
|
|
|
169
187
|
this.name = 'NullifierCollisionError';
|
|
170
188
|
}
|
|
171
189
|
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9udWxsaWZpZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO0lBQ0UsK0RBQStEO0lBQzlDLGNBQTZCO0lBQzlDLHlCQUF5QjtJQUNSLFFBQXdCLElBQUksY0FBYyxFQUFFO0lBQzdELCtDQUErQztJQUM5QixNQUF5QjtRQUp6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUU3QixVQUFLLEdBQUwsS0FBSyxDQUF1QztRQUU1QyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQUN6QyxDQUFDO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQUMsY0FBNkIsRUFBRSx1QkFBNkI7UUFDdkcsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDVCxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxjQUFrQixFQUFFLFNBQWE7UUFDL0QseUJBQXlCO1FBQ3pCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FB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
|
|
@@ -16,12 +16,16 @@ export declare class PublicStorage {
|
|
|
16
16
|
/** Parent's storage. Checked on this' cache-miss. */
|
|
17
17
|
private readonly parent?;
|
|
18
18
|
/** Cached storage writes. */
|
|
19
|
-
private cache;
|
|
19
|
+
private readonly cache;
|
|
20
20
|
constructor(
|
|
21
21
|
/** Reference to node storage. Checked on parent cache-miss. */
|
|
22
22
|
hostPublicStorage: PublicStateDB,
|
|
23
23
|
/** Parent's storage. Checked on this' cache-miss. */
|
|
24
24
|
parent?: PublicStorage | undefined);
|
|
25
|
+
/**
|
|
26
|
+
* Create a new public storage manager forked from this one
|
|
27
|
+
*/
|
|
28
|
+
fork(): PublicStorage;
|
|
25
29
|
/**
|
|
26
30
|
* Get the pending storage.
|
|
27
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/public_storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAqB;;
|
|
1
|
+
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/public_storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,aAAa;IACjD,qDAAqD;IACpC,MAAM,CAAC,2BAAe;IAKzC;;OAEG;IACI,IAAI;IAIX;;OAEG;IACI,QAAQ;IAIf;;;;;;;OAOG;IACI,gBAAgB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWrE;;;;;;;;;;OAUG;IACU,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmBjF;;;;;;OAMG;IACI,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAIpD;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;IAI1D;;OAEG;IACU,UAAU;CAOxB;AAED;;;;GAIG;AACH,cAAM,kBAAkB;IACtB;;;;OAIG;IACI,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAa;IAGlE;;;;;;OAMG;IACI,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAIzD;;;;;;OAMG;IACI,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAUpD;;;;;;;;;OASG;IACI,cAAc,CAAC,oBAAoB,EAAE,kBAAkB;CAiB/D"}
|
|
@@ -15,6 +15,12 @@ export class PublicStorage {
|
|
|
15
15
|
this.parent = parent;
|
|
16
16
|
this.cache = new PublicStorageCache();
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a new public storage manager forked from this one
|
|
20
|
+
*/
|
|
21
|
+
fork() {
|
|
22
|
+
return new PublicStorage(this.hostPublicStorage, this);
|
|
23
|
+
}
|
|
18
24
|
/**
|
|
19
25
|
* Get the pending storage.
|
|
20
26
|
*/
|
|
@@ -57,6 +63,9 @@ export class PublicStorage {
|
|
|
57
63
|
// Finally try the host's Aztec state (a trip to the database)
|
|
58
64
|
if (!value) {
|
|
59
65
|
value = await this.hostPublicStorage.storageRead(storageAddress, slot);
|
|
66
|
+
// TODO(dbanks12): if value retrieved from host storage, we can cache it here
|
|
67
|
+
// any future reads to the same slot can read from cache instead of more expensive
|
|
68
|
+
// DB access
|
|
60
69
|
}
|
|
61
70
|
else {
|
|
62
71
|
cached = true;
|
|
@@ -109,7 +118,7 @@ class PublicStorageCache {
|
|
|
109
118
|
*/
|
|
110
119
|
this.cachePerContract = new Map();
|
|
111
120
|
}
|
|
112
|
-
// FIXME: storage ^ should be private, but its value is used in
|
|
121
|
+
// FIXME: storage ^ should be private, but its value is used in commitToDB
|
|
113
122
|
/**
|
|
114
123
|
* Read a staged value from storage, if it has been previously written to.
|
|
115
124
|
*
|
|
@@ -165,4 +174,4 @@ class PublicStorageCache {
|
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3N0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvcHVibGljX3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVU5Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFJeEI7SUFDRSwrREFBK0Q7SUFDOUMsaUJBQWdDO0lBQ2pELHFEQUFxRDtJQUNwQyxNQUFzQjtRQUZ0QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWU7UUFFaEMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFFdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNULE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxnQkFBZ0IsQ0FBQyxjQUFrQixFQUFFLElBQVE7UUFDbEQscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsK0VBQStFO1lBQy9FLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENB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
|
|
@@ -54,13 +54,12 @@ export declare class L1ToL2MessageExists extends Instruction {
|
|
|
54
54
|
}
|
|
55
55
|
export declare class EmitUnencryptedLog extends Instruction {
|
|
56
56
|
private indirect;
|
|
57
|
-
private eventSelectorOffset;
|
|
58
57
|
private logOffset;
|
|
59
58
|
private logSizeOffset;
|
|
60
59
|
static type: string;
|
|
61
60
|
static readonly opcode: Opcode;
|
|
62
61
|
static readonly wireFormat: OperandType[];
|
|
63
|
-
constructor(indirect: number,
|
|
62
|
+
constructor(indirect: number, logOffset: number, logSizeOffset: number);
|
|
64
63
|
execute(context: AvmContext): Promise<void>;
|
|
65
64
|
}
|
|
66
65
|
export declare class SendL2ToL1Message extends Instruction {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,cAAe,SAAQ,WAAW;IAa3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAoB;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBzD;AAED,qBAAa,YAAa,SAAQ,WAAW;IAM/B,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,cAAc;IAL5D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAkB;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;gBAEpE,QAAQ,EAAE,MAAM,EAAU,cAAc,EAAE,MAAM;IAIvD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBzD;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAa5C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBzD;AAED,qBAAa,aAAc,SAAQ,WAAW;IAMhC,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,eAAe;IAL7D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAmB;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAwB;IAEtD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;gBAEpE,QAAQ,EAAE,MAAM,EAAU,eAAe,EAAE,MAAM;IAIxD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BzD;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAahD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"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"}
|