@aztec/simulator 0.59.0 → 0.61.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.d.ts +1 -0
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.d.ts +5 -3
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +15 -7
- package/dest/acvm/oracle/typed_oracle.d.ts +7 -4
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +10 -4
- package/dest/acvm/serialize.d.ts +1 -0
- package/dest/acvm/serialize.d.ts.map +1 -1
- package/dest/avm/avm_context.d.ts +1 -1
- package/dest/avm/avm_context.js +1 -1
- package/dest/avm/avm_execution_environment.d.ts +2 -5
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +7 -15
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +6 -10
- package/dest/avm/avm_machine_state.d.ts +2 -0
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +3 -1
- package/dest/avm/avm_memory_types.d.ts +1 -0
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_simulator.d.ts +16 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +45 -4
- package/dest/avm/bytecode_utils.d.ts +1 -0
- package/dest/avm/bytecode_utils.d.ts.map +1 -1
- package/dest/avm/fixtures/index.d.ts +3 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +8 -2
- package/dest/avm/journal/journal.d.ts +19 -19
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +73 -48
- package/dest/avm/journal/nullifiers.d.ts +9 -9
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +24 -24
- package/dest/avm/journal/public_storage.d.ts +10 -10
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +21 -21
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +5 -5
- package/dest/avm/opcodes/contract.d.ts +8 -1
- package/dest/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/avm/opcodes/contract.js +41 -21
- package/dest/avm/opcodes/conversion.d.ts +1 -1
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +12 -9
- package/dest/avm/opcodes/environment_getters.d.ts +13 -14
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +17 -16
- package/dest/avm/opcodes/external_calls.d.ts +3 -6
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +23 -43
- package/dest/avm/opcodes/hashing.d.ts +2 -26
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +11 -95
- package/dest/avm/opcodes/index.d.ts +0 -1
- package/dest/avm/opcodes/index.d.ts.map +1 -1
- package/dest/avm/opcodes/index.js +1 -2
- package/dest/avm/opcodes/instruction.d.ts +1 -0
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.d.ts +20 -0
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +59 -3
- package/dest/avm/opcodes/storage.js +3 -3
- package/dest/avm/serialization/buffer_cursor.d.ts +1 -0
- package/dest/avm/serialization/buffer_cursor.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.d.ts +1 -0
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +5 -7
- package/dest/avm/serialization/instruction_serialization.d.ts +34 -35
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +34 -36
- package/dest/avm/test_utils.d.ts +3 -1
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/avm/test_utils.js +4 -1
- package/dest/client/client_execution_context.d.ts +9 -18
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +30 -50
- package/dest/client/db_oracle.d.ts +17 -1
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +3 -4
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +3 -3
- package/dest/client/view_data_oracle.d.ts +17 -1
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +21 -1
- package/dest/common/index.d.ts +0 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +1 -2
- package/dest/mocks/fixtures.js +2 -2
- package/dest/providers/acvm_native.d.ts +1 -0
- package/dest/providers/acvm_native.d.ts.map +1 -1
- package/dest/public/db_interfaces.d.ts +1 -0
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.d.ts +10 -11
- package/dest/public/dual_side_effect_trace.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.js +26 -22
- package/dest/public/enqueued_call_side_effect_trace.d.ts +11 -12
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
- package/dest/public/enqueued_call_side_effect_trace.js +33 -23
- package/dest/public/enqueued_call_simulator.d.ts +3 -3
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
- package/dest/public/enqueued_call_simulator.js +30 -39
- package/dest/public/enqueued_calls_processor.d.ts +2 -3
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
- package/dest/public/enqueued_calls_processor.js +19 -26
- package/dest/public/execution.d.ts +1 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +2 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +6 -5
- package/dest/public/public_db_sources.d.ts +1 -0
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_kernel.d.ts +0 -1
- package/dest/public/public_kernel.d.ts.map +1 -1
- package/dest/public/public_kernel.js +5 -8
- package/dest/public/public_kernel_tail_simulator.d.ts +1 -5
- package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -1
- package/dest/public/public_kernel_tail_simulator.js +6 -12
- package/dest/public/public_processor.js +4 -4
- package/dest/public/side_effect_trace.d.ts +11 -9
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +40 -30
- package/dest/public/side_effect_trace_interface.d.ts +10 -9
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/acvm/oracle/oracle.ts +13 -6
- package/src/acvm/oracle/typed_oracle.ts +9 -3
- package/src/avm/avm_context.ts +1 -1
- package/src/avm/avm_execution_environment.ts +0 -15
- package/src/avm/avm_gas.ts +5 -9
- package/src/avm/avm_machine_state.ts +2 -0
- package/src/avm/avm_simulator.ts +69 -6
- package/src/avm/fixtures/index.ts +7 -2
- package/src/avm/journal/journal.ts +93 -50
- package/src/avm/journal/nullifiers.ts +23 -23
- package/src/avm/journal/public_storage.ts +20 -20
- package/src/avm/opcodes/accrued_substate.ts +4 -8
- package/src/avm/opcodes/contract.ts +45 -21
- package/src/avm/opcodes/conversion.ts +9 -6
- package/src/avm/opcodes/environment_getters.ts +7 -5
- package/src/avm/opcodes/external_calls.ts +21 -45
- package/src/avm/opcodes/hashing.ts +9 -122
- package/src/avm/opcodes/index.ts +0 -1
- package/src/avm/opcodes/memory.ts +69 -2
- package/src/avm/opcodes/storage.ts +2 -2
- package/src/avm/serialization/bytecode_serialization.ts +6 -9
- package/src/avm/serialization/instruction_serialization.ts +3 -5
- package/src/avm/test_utils.ts +5 -1
- package/src/client/client_execution_context.ts +21 -71
- package/src/client/db_oracle.ts +26 -0
- package/src/client/private_execution.ts +1 -9
- package/src/client/simulator.ts +0 -2
- package/src/client/view_data_oracle.ts +31 -1
- package/src/common/index.ts +0 -1
- package/src/mocks/fixtures.ts +1 -1
- package/src/public/dual_side_effect_trace.ts +38 -24
- package/src/public/enqueued_call_side_effect_trace.ts +60 -28
- package/src/public/enqueued_call_simulator.ts +52 -49
- package/src/public/enqueued_calls_processor.ts +27 -41
- package/src/public/execution.ts +1 -1
- package/src/public/executor.ts +11 -5
- package/src/public/public_kernel.ts +9 -12
- package/src/public/public_kernel_tail_simulator.ts +6 -15
- package/src/public/public_processor.ts +3 -3
- package/src/public/side_effect_trace.ts +73 -29
- package/src/public/side_effect_trace_interface.ts +15 -10
- package/dest/avm/opcodes/commitment.d.ts +0 -16
- package/dest/avm/opcodes/commitment.d.ts.map +0 -1
- package/dest/avm/opcodes/commitment.js +0 -51
- package/dest/client/test_utils.d.ts +0 -9
- package/dest/client/test_utils.d.ts.map +0 -1
- package/dest/client/test_utils.js +0 -27
- package/dest/common/side_effect_counter.d.ts +0 -10
- package/dest/common/side_effect_counter.d.ts.map +0 -1
- package/dest/common/side_effect_counter.js +0 -18
- package/dest/rollup/index.d.ts +0 -2
- package/dest/rollup/index.d.ts.map +0 -1
- package/dest/rollup/index.js +0 -2
- package/dest/rollup/rollup.d.ts +0 -101
- package/dest/rollup/rollup.d.ts.map +0 -1
- package/dest/rollup/rollup.js +0 -100
- package/src/avm/opcodes/commitment.ts +0 -65
- package/src/client/test_utils.ts +0 -57
- package/src/common/side_effect_counter.ts +0 -17
- package/src/rollup/index.ts +0 -1
- package/src/rollup/rollup.ts +0 -228
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AztecAddress, SerializableContractInstance } from '@aztec/circuits.js';
|
|
1
|
+
import { AztecAddress, SerializableContractInstance, computePublicBytecodeCommitment, } from '@aztec/circuits.js';
|
|
2
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
|
+
import assert from 'assert';
|
|
4
5
|
import { getPublicFunctionDebugName } from '../../common/debug_fn_name.js';
|
|
5
6
|
import { NullifierManager } from './nullifiers.js';
|
|
6
7
|
import { PublicStorage } from './public_storage.js';
|
|
@@ -48,90 +49,90 @@ export class AvmPersistableStateManager {
|
|
|
48
49
|
/**
|
|
49
50
|
* Write to public storage, journal/trace the write.
|
|
50
51
|
*
|
|
51
|
-
* @param
|
|
52
|
+
* @param contractAddress - the address of the contract whose storage is being written to
|
|
52
53
|
* @param slot - the slot in the contract's storage being written to
|
|
53
54
|
* @param value - the value being written to the slot
|
|
54
55
|
*/
|
|
55
|
-
writeStorage(
|
|
56
|
-
this.log.debug(`Storage write (address=${
|
|
56
|
+
writeStorage(contractAddress, slot, value) {
|
|
57
|
+
this.log.debug(`Storage write (address=${contractAddress}, slot=${slot}): value=${value}`);
|
|
57
58
|
// Cache storage writes for later reference/reads
|
|
58
|
-
this.publicStorage.write(
|
|
59
|
-
this.trace.tracePublicStorageWrite(
|
|
59
|
+
this.publicStorage.write(contractAddress, slot, value);
|
|
60
|
+
this.trace.tracePublicStorageWrite(contractAddress, slot, value);
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Read from public storage, trace the read.
|
|
63
64
|
*
|
|
64
|
-
* @param
|
|
65
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
65
66
|
* @param slot - the slot in the contract's storage being read from
|
|
66
67
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
67
68
|
*/
|
|
68
|
-
async readStorage(
|
|
69
|
-
const { value, exists, cached } = await this.publicStorage.read(
|
|
70
|
-
this.log.debug(`Storage read (address=${
|
|
71
|
-
this.trace.tracePublicStorageRead(
|
|
69
|
+
async readStorage(contractAddress, slot) {
|
|
70
|
+
const { value, exists, cached } = await this.publicStorage.read(contractAddress, slot);
|
|
71
|
+
this.log.debug(`Storage read (address=${contractAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
72
|
+
this.trace.tracePublicStorageRead(contractAddress, slot, value, exists, cached);
|
|
72
73
|
return Promise.resolve(value);
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
76
|
* Read from public storage, don't trace the read.
|
|
76
77
|
*
|
|
77
|
-
* @param
|
|
78
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
78
79
|
* @param slot - the slot in the contract's storage being read from
|
|
79
80
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
80
81
|
*/
|
|
81
|
-
async peekStorage(
|
|
82
|
-
const { value, exists, cached } = await this.publicStorage.read(
|
|
83
|
-
this.log.debug(`Storage peek (address=${
|
|
82
|
+
async peekStorage(contractAddress, slot) {
|
|
83
|
+
const { value, exists, cached } = await this.publicStorage.read(contractAddress, slot);
|
|
84
|
+
this.log.debug(`Storage peek (address=${contractAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
84
85
|
return Promise.resolve(value);
|
|
85
86
|
}
|
|
86
87
|
// TODO(4886): We currently don't silo note hashes.
|
|
87
88
|
/**
|
|
88
89
|
* Check if a note hash exists at the given leaf index, trace the check.
|
|
89
90
|
*
|
|
90
|
-
* @param
|
|
91
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
91
92
|
* @param noteHash - the unsiloed note hash being checked
|
|
92
93
|
* @param leafIndex - the leaf index being checked
|
|
93
94
|
* @returns true if the note hash exists at the given leaf index, false otherwise
|
|
94
95
|
*/
|
|
95
|
-
async checkNoteHashExists(
|
|
96
|
+
async checkNoteHashExists(contractAddress, noteHash, leafIndex) {
|
|
96
97
|
const gotLeafValue = (await this.worldStateDB.getCommitmentValue(leafIndex.toBigInt())) ?? Fr.ZERO;
|
|
97
98
|
const exists = gotLeafValue.equals(noteHash);
|
|
98
|
-
this.log.debug(`noteHashes(${
|
|
99
|
+
this.log.debug(`noteHashes(${contractAddress})@${noteHash} ?? leafIndex: ${leafIndex} | gotLeafValue: ${gotLeafValue}, exists: ${exists}.`);
|
|
99
100
|
// TODO(8287): We still return exists here, but we need to transmit both the requested noteHash and the gotLeafValue
|
|
100
101
|
// such that the VM can constrain the equality and decide on exists based on that.
|
|
101
|
-
this.trace.traceNoteHashCheck(
|
|
102
|
+
this.trace.traceNoteHashCheck(contractAddress, gotLeafValue, leafIndex, exists);
|
|
102
103
|
return Promise.resolve(exists);
|
|
103
104
|
}
|
|
104
105
|
/**
|
|
105
106
|
* Write a note hash, trace the write.
|
|
106
107
|
* @param noteHash - the unsiloed note hash to write
|
|
107
108
|
*/
|
|
108
|
-
writeNoteHash(
|
|
109
|
-
this.log.debug(`noteHashes(${
|
|
110
|
-
this.trace.traceNewNoteHash(
|
|
109
|
+
writeNoteHash(contractAddress, noteHash) {
|
|
110
|
+
this.log.debug(`noteHashes(${contractAddress}) += @${noteHash}.`);
|
|
111
|
+
this.trace.traceNewNoteHash(contractAddress, noteHash);
|
|
111
112
|
}
|
|
112
113
|
/**
|
|
113
114
|
* Check if a nullifier exists, trace the check.
|
|
114
|
-
* @param
|
|
115
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
115
116
|
* @param nullifier - the unsiloed nullifier to check
|
|
116
117
|
* @returns exists - whether the nullifier exists in the nullifier set
|
|
117
118
|
*/
|
|
118
|
-
async checkNullifierExists(
|
|
119
|
-
const [exists, isPending, leafIndex] = await this.nullifiers.checkExists(
|
|
120
|
-
this.log.debug(`nullifiers(${
|
|
121
|
-
this.trace.traceNullifierCheck(
|
|
119
|
+
async checkNullifierExists(contractAddress, nullifier) {
|
|
120
|
+
const [exists, isPending, leafIndex] = await this.nullifiers.checkExists(contractAddress, nullifier);
|
|
121
|
+
this.log.debug(`nullifiers(${contractAddress})@${nullifier} ?? leafIndex: ${leafIndex}, exists: ${exists}, pending: ${isPending}.`);
|
|
122
|
+
this.trace.traceNullifierCheck(contractAddress, nullifier, leafIndex, exists, isPending);
|
|
122
123
|
return Promise.resolve(exists);
|
|
123
124
|
}
|
|
124
125
|
/**
|
|
125
126
|
* Write a nullifier to the nullifier set, trace the write.
|
|
126
|
-
* @param
|
|
127
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
127
128
|
* @param nullifier - the unsiloed nullifier to write
|
|
128
129
|
*/
|
|
129
|
-
async writeNullifier(
|
|
130
|
-
this.log.debug(`nullifiers(${
|
|
130
|
+
async writeNullifier(contractAddress, nullifier) {
|
|
131
|
+
this.log.debug(`nullifiers(${contractAddress}) += ${nullifier}.`);
|
|
131
132
|
// Cache pending nullifiers for later access
|
|
132
|
-
await this.nullifiers.append(
|
|
133
|
+
await this.nullifiers.append(contractAddress, nullifier);
|
|
133
134
|
// Trace all nullifier creations (even reverted ones)
|
|
134
|
-
this.trace.traceNewNullifier(
|
|
135
|
+
this.trace.traceNewNullifier(contractAddress, nullifier);
|
|
135
136
|
}
|
|
136
137
|
/**
|
|
137
138
|
* Check if an L1 to L2 message exists, trace the check.
|
|
@@ -171,20 +172,23 @@ export class AvmPersistableStateManager {
|
|
|
171
172
|
/**
|
|
172
173
|
* Get a contract instance.
|
|
173
174
|
* @param contractAddress - address of the contract instance to retrieve.
|
|
174
|
-
* @returns the contract instance
|
|
175
|
+
* @returns the contract instance or undefined if it does not exist.
|
|
175
176
|
*/
|
|
176
177
|
async getContractInstance(contractAddress) {
|
|
177
|
-
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
if (
|
|
181
|
-
instance = SerializableContractInstance
|
|
182
|
-
exists
|
|
178
|
+
this.log.debug(`Getting contract instance for address ${contractAddress}`);
|
|
179
|
+
const instanceWithAddress = await this.worldStateDB.getContractInstance(AztecAddress.fromField(contractAddress));
|
|
180
|
+
const exists = instanceWithAddress !== undefined;
|
|
181
|
+
if (exists) {
|
|
182
|
+
const instance = new SerializableContractInstance(instanceWithAddress);
|
|
183
|
+
this.log.debug(`Got contract instance (address=${contractAddress}): exists=${exists}, instance=${JSON.stringify(instance)}`);
|
|
184
|
+
this.trace.traceGetContractInstance(contractAddress, exists, instance);
|
|
185
|
+
return Promise.resolve(instance);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.log.debug(`Contract instance NOT FOUND (address=${contractAddress})`);
|
|
189
|
+
this.trace.traceGetContractInstance(contractAddress, exists);
|
|
190
|
+
return Promise.resolve(undefined);
|
|
183
191
|
}
|
|
184
|
-
this.log.debug(`Get Contract instance (address=${contractAddress}): exists=${exists}, instance=${JSON.stringify(instance)}`);
|
|
185
|
-
const tracedInstance = { ...instance, exists };
|
|
186
|
-
this.trace.traceGetContractInstance(tracedInstance);
|
|
187
|
-
return Promise.resolve(tracedInstance);
|
|
188
192
|
}
|
|
189
193
|
/**
|
|
190
194
|
* Accept nested world state modifications
|
|
@@ -194,10 +198,31 @@ export class AvmPersistableStateManager {
|
|
|
194
198
|
this.nullifiers.acceptAndMerge(nestedState.nullifiers);
|
|
195
199
|
}
|
|
196
200
|
/**
|
|
197
|
-
* Get a contract's bytecode from the contracts DB
|
|
198
|
-
*/
|
|
199
|
-
async getBytecode(contractAddress
|
|
200
|
-
|
|
201
|
+
* Get a contract's bytecode from the contracts DB, also trace the contract class and instance
|
|
202
|
+
*/
|
|
203
|
+
async getBytecode(contractAddress) {
|
|
204
|
+
this.log.debug(`Getting bytecode for contract address ${contractAddress}`);
|
|
205
|
+
const instanceWithAddress = await this.worldStateDB.getContractInstance(contractAddress);
|
|
206
|
+
const exists = instanceWithAddress !== undefined;
|
|
207
|
+
if (exists) {
|
|
208
|
+
const instance = new SerializableContractInstance(instanceWithAddress);
|
|
209
|
+
const contractClass = await this.worldStateDB.getContractClass(instance.contractClassId);
|
|
210
|
+
assert(contractClass, `Contract class not found in DB, but a contract instance was found with this class ID (${instance.contractClassId}). This should not happen!`);
|
|
211
|
+
const contractClassPreimage = {
|
|
212
|
+
artifactHash: contractClass.artifactHash,
|
|
213
|
+
privateFunctionsRoot: contractClass.privateFunctionsRoot,
|
|
214
|
+
publicBytecodeCommitment: computePublicBytecodeCommitment(contractClass.packedBytecode),
|
|
215
|
+
};
|
|
216
|
+
this.trace.traceGetBytecode(contractAddress, exists, contractClass.packedBytecode, instance, contractClassPreimage);
|
|
217
|
+
return contractClass.packedBytecode;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// If the contract instance is not found, we assume it has not been deployed.
|
|
221
|
+
// It doesnt matter what the values of the contract instance are in this case, as long as we tag it with exists=false.
|
|
222
|
+
// This will hint to the avm circuit to just perform the non-membership check on the address and disregard the bytecode hash
|
|
223
|
+
this.trace.traceGetBytecode(contractAddress, exists); // bytecode, instance, class undefined
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
201
226
|
}
|
|
202
227
|
/**
|
|
203
228
|
* Accept the nested call's state and trace the nested call
|
|
@@ -211,4 +236,4 @@ export class AvmPersistableStateManager {
|
|
|
211
236
|
this.trace.traceNestedCall(nestedState.trace, nestedEnvironment, startGasLeft, endGasLeft, bytecode, avmCallResults, functionName);
|
|
212
237
|
}
|
|
213
238
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9qb3VybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBRVosNEJBQTRCLEVBQzVCLCtCQUErQixHQUNoQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQztJQUNFLGdDQUFnQztJQUNmLFlBQTBCO0lBQzNDLHdCQUF3QjtJQUNQLEtBQXFDO0lBQ3RELDhDQUE4QztJQUM5QywrREFBK0Q7SUFDL0MsYUFBNEI7SUFDNUMsa0VBQWtFO0lBQ2pELFVBQTRCO1FBUDVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRTFCLFVBQUssR0FBTCxLQUFLLENBQWdDO1FBR3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTNCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBWDlCLFFBQUcsR0FBRyxpQkFBaUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBWTNFLENBQUM7SUFFSjs7T0FFRztJQUNJLE1BQU0sQ0FBQyw4QkFBOEIsQ0FDMUMsWUFBMEIsRUFDMUIsS0FBcUMsRUFDckMsdUJBQTZCO1FBRTdCLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsOEJBQThCLENBQUMsWUFBWSxFQUFFLHVCQUF1QixDQUFD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
|
|
@@ -30,7 +30,7 @@ export declare class NullifierManager {
|
|
|
30
30
|
/**
|
|
31
31
|
* Get a nullifier's existence in this' cache or parent's (recursively).
|
|
32
32
|
* DOES NOT CHECK HOST STORAGE!
|
|
33
|
-
* @param
|
|
33
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
34
34
|
* @param nullifier - the nullifier to check for
|
|
35
35
|
* @returns exists: whether the nullifier exists in cache here or in parent's
|
|
36
36
|
*/
|
|
@@ -42,20 +42,20 @@ export declare class NullifierManager {
|
|
|
42
42
|
* 3. Fall back to the host state.
|
|
43
43
|
* 4. Not found! Nullifier does not exist.
|
|
44
44
|
*
|
|
45
|
-
* @param
|
|
45
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
46
46
|
* @param nullifier - the nullifier to check for
|
|
47
47
|
* @returns exists: whether the nullifier exists at all,
|
|
48
48
|
* isPending: whether the nullifier was found in a cache,
|
|
49
49
|
* leafIndex: the nullifier's leaf index if it exists and is not pending (comes from host state).
|
|
50
50
|
*/
|
|
51
|
-
checkExists(
|
|
51
|
+
checkExists(contractAddress: Fr, nullifier: Fr): Promise<[/*exists=*/ boolean, /*isPending=*/ boolean, /*leafIndex=*/ Fr]>;
|
|
52
52
|
/**
|
|
53
53
|
* Stage a new nullifier (append it to the cache).
|
|
54
54
|
*
|
|
55
|
-
* @param
|
|
55
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
56
56
|
* @param nullifier - the nullifier to stage
|
|
57
57
|
*/
|
|
58
|
-
append(
|
|
58
|
+
append(contractAddress: Fr, nullifier: Fr): Promise<void>;
|
|
59
59
|
/**
|
|
60
60
|
* Merges another nullifier cache into this one.
|
|
61
61
|
*
|
|
@@ -83,18 +83,18 @@ export declare class NullifierCache {
|
|
|
83
83
|
/**
|
|
84
84
|
* Check whether a nullifier exists in the cache.
|
|
85
85
|
*
|
|
86
|
-
* @param
|
|
86
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
87
87
|
* @param nullifier - the nullifier to check existence of
|
|
88
88
|
* @returns whether the nullifier is found in the cache
|
|
89
89
|
*/
|
|
90
|
-
exists(
|
|
90
|
+
exists(contractAddress: Fr, nullifier: Fr): boolean;
|
|
91
91
|
/**
|
|
92
92
|
* Stage a new nullifier (append it to the cache).
|
|
93
93
|
*
|
|
94
|
-
* @param
|
|
94
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
95
95
|
* @param nullifier - the nullifier to stage
|
|
96
96
|
*/
|
|
97
|
-
append(
|
|
97
|
+
append(contractAddress: Fr, nullifier: Fr): void;
|
|
98
98
|
/**
|
|
99
99
|
* Merge another cache's nullifiers into this instance's.
|
|
100
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,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,
|
|
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,eAAe,EAAE,EAAE,EACnB,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,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAUtD;;;;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,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO;IAO1D;;;;;OAKG;IACI,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAgBhD;;;;;;;;OAQG;IACI,cAAc,CAAC,kBAAkB,EAAE,cAAc;CAwBzD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAI5C"}
|
|
@@ -34,17 +34,17 @@ export class NullifierManager {
|
|
|
34
34
|
/**
|
|
35
35
|
* Get a nullifier's existence in this' cache or parent's (recursively).
|
|
36
36
|
* DOES NOT CHECK HOST STORAGE!
|
|
37
|
-
* @param
|
|
37
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
38
38
|
* @param nullifier - the nullifier to check for
|
|
39
39
|
* @returns exists: whether the nullifier exists in cache here or in parent's
|
|
40
40
|
*/
|
|
41
|
-
checkExistsHereOrParent(
|
|
41
|
+
checkExistsHereOrParent(contractAddress, nullifier) {
|
|
42
42
|
// First check this cache
|
|
43
|
-
let existsAsPending = this.cache.exists(
|
|
43
|
+
let existsAsPending = this.cache.exists(contractAddress, nullifier);
|
|
44
44
|
// Then try parent's nullifier cache
|
|
45
45
|
if (!existsAsPending && this.parent) {
|
|
46
46
|
// Note: this will recurse to grandparent/etc until a cache-hit is encountered.
|
|
47
|
-
existsAsPending = this.parent.checkExistsHereOrParent(
|
|
47
|
+
existsAsPending = this.parent.checkExistsHereOrParent(contractAddress, nullifier);
|
|
48
48
|
}
|
|
49
49
|
return existsAsPending;
|
|
50
50
|
}
|
|
@@ -55,21 +55,21 @@ export class NullifierManager {
|
|
|
55
55
|
* 3. Fall back to the host state.
|
|
56
56
|
* 4. Not found! Nullifier does not exist.
|
|
57
57
|
*
|
|
58
|
-
* @param
|
|
58
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
59
59
|
* @param nullifier - the nullifier to check for
|
|
60
60
|
* @returns exists: whether the nullifier exists at all,
|
|
61
61
|
* isPending: whether the nullifier was found in a cache,
|
|
62
62
|
* leafIndex: the nullifier's leaf index if it exists and is not pending (comes from host state).
|
|
63
63
|
*/
|
|
64
|
-
async checkExists(
|
|
64
|
+
async checkExists(contractAddress, nullifier) {
|
|
65
65
|
// Check this cache and parent's (recursively)
|
|
66
|
-
const existsAsPending = this.checkExistsHereOrParent(
|
|
66
|
+
const existsAsPending = this.checkExistsHereOrParent(contractAddress, nullifier);
|
|
67
67
|
// Finally try the host's Aztec state (a trip to the database)
|
|
68
68
|
// If the value is found in the database, it will be associated with a leaf index!
|
|
69
69
|
let leafIndex = undefined;
|
|
70
70
|
if (!existsAsPending) {
|
|
71
71
|
// silo the nullifier before checking for its existence in the host
|
|
72
|
-
leafIndex = await this.hostNullifiers.getNullifierIndex(siloNullifier(
|
|
72
|
+
leafIndex = await this.hostNullifiers.getNullifierIndex(siloNullifier(contractAddress, nullifier));
|
|
73
73
|
}
|
|
74
74
|
const exists = existsAsPending || leafIndex !== undefined;
|
|
75
75
|
leafIndex = leafIndex === undefined ? BigInt(0) : leafIndex;
|
|
@@ -78,15 +78,15 @@ export class NullifierManager {
|
|
|
78
78
|
/**
|
|
79
79
|
* Stage a new nullifier (append it to the cache).
|
|
80
80
|
*
|
|
81
|
-
* @param
|
|
81
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
82
82
|
* @param nullifier - the nullifier to stage
|
|
83
83
|
*/
|
|
84
|
-
async append(
|
|
85
|
-
const [exists, ,] = await this.checkExists(
|
|
84
|
+
async append(contractAddress, nullifier) {
|
|
85
|
+
const [exists, ,] = await this.checkExists(contractAddress, nullifier);
|
|
86
86
|
if (exists) {
|
|
87
|
-
throw new NullifierCollisionError(`Nullifier ${nullifier} at contract ${
|
|
87
|
+
throw new NullifierCollisionError(`Nullifier ${nullifier} at contract ${contractAddress} already exists in parent cache or host.`);
|
|
88
88
|
}
|
|
89
|
-
this.cache.append(
|
|
89
|
+
this.cache.append(contractAddress, nullifier);
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
92
|
* Merges another nullifier cache into this one.
|
|
@@ -121,30 +121,30 @@ export class NullifierCache {
|
|
|
121
121
|
/**
|
|
122
122
|
* Check whether a nullifier exists in the cache.
|
|
123
123
|
*
|
|
124
|
-
* @param
|
|
124
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
125
125
|
* @param nullifier - the nullifier to check existence of
|
|
126
126
|
* @returns whether the nullifier is found in the cache
|
|
127
127
|
*/
|
|
128
|
-
exists(
|
|
129
|
-
const exists = this.cachePerContract.get(
|
|
130
|
-
this.siloedNullifiers.has(siloNullifier(AztecAddress.fromField(
|
|
128
|
+
exists(contractAddress, nullifier) {
|
|
129
|
+
const exists = this.cachePerContract.get(contractAddress.toBigInt())?.has(nullifier.toBigInt()) ||
|
|
130
|
+
this.siloedNullifiers.has(siloNullifier(AztecAddress.fromField(contractAddress), nullifier).toBigInt());
|
|
131
131
|
return !!exists;
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Stage a new nullifier (append it to the cache).
|
|
135
135
|
*
|
|
136
|
-
* @param
|
|
136
|
+
* @param contractAddress - the address of the contract that the nullifier is associated with
|
|
137
137
|
* @param nullifier - the nullifier to stage
|
|
138
138
|
*/
|
|
139
|
-
append(
|
|
140
|
-
if (this.exists(
|
|
141
|
-
throw new NullifierCollisionError(`Nullifier ${nullifier} at contract ${
|
|
139
|
+
append(contractAddress, nullifier) {
|
|
140
|
+
if (this.exists(contractAddress, nullifier)) {
|
|
141
|
+
throw new NullifierCollisionError(`Nullifier ${nullifier} at contract ${contractAddress} already exists in cache.`);
|
|
142
142
|
}
|
|
143
|
-
let nullifiersForContract = this.cachePerContract.get(
|
|
143
|
+
let nullifiersForContract = this.cachePerContract.get(contractAddress.toBigInt());
|
|
144
144
|
// If this contract's nullifier set has no cached nullifiers, create a new Set to store them
|
|
145
145
|
if (!nullifiersForContract) {
|
|
146
146
|
nullifiersForContract = new Set();
|
|
147
|
-
this.cachePerContract.set(
|
|
147
|
+
this.cachePerContract.set(contractAddress.toBigInt(), nullifiersForContract);
|
|
148
148
|
}
|
|
149
149
|
nullifiersForContract.add(nullifier.toBigInt());
|
|
150
150
|
}
|
|
@@ -187,4 +187,4 @@ export class NullifierCollisionError extends Error {
|
|
|
187
187
|
this.name = 'NullifierCollisionError';
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9udWxsaWZpZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO0lBQ0UsK0RBQStEO0lBQzlDLGNBQTZCO0lBQzlDLHlCQUF5QjtJQUNSLFFBQXdCLElBQUksY0FBYyxFQUFFO0lBQzdELCtDQUErQztJQUM5QixNQUF5QjtRQUp6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUU3QixVQUFLLEdBQUwsS0FBSyxDQUF1QztRQUU1QyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQUN6QyxDQUFDO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQUMsY0FBNkIsRUFBRSx1QkFBNkI7UUFDdkcsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDVCxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxlQUFtQixFQUFFLFNBQWE7UUFDaEUseUJBQXlCO1FBQ3pCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FB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
|
|
@@ -34,11 +34,11 @@ export declare class PublicStorage {
|
|
|
34
34
|
* Read a storage value from this' cache or parent's (recursively).
|
|
35
35
|
* DOES NOT CHECK HOST STORAGE!
|
|
36
36
|
*
|
|
37
|
-
* @param
|
|
37
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
38
38
|
* @param slot - the slot in the contract's storage being read from
|
|
39
39
|
* @returns value: the latest value written according to this cache or the parent's. undefined on cache miss.
|
|
40
40
|
*/
|
|
41
|
-
readHereOrParent(
|
|
41
|
+
readHereOrParent(contractAddress: Fr, slot: Fr): Fr | undefined;
|
|
42
42
|
/**
|
|
43
43
|
* Read a value from storage.
|
|
44
44
|
* 1. Check cache.
|
|
@@ -46,19 +46,19 @@ export declare class PublicStorage {
|
|
|
46
46
|
* 3. Fall back to the host state.
|
|
47
47
|
* 4. Not found! Value has never been written to before. Flag it as non-existent and return value zero.
|
|
48
48
|
*
|
|
49
|
-
* @param
|
|
49
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
50
50
|
* @param slot - the slot in the contract's storage being read from
|
|
51
51
|
* @returns exists: whether the slot has EVER been written to before, value: the latest value written to slot, or 0 if never written to before
|
|
52
52
|
*/
|
|
53
|
-
read(
|
|
53
|
+
read(contractAddress: Fr, slot: Fr): Promise<PublicStorageReadResult>;
|
|
54
54
|
/**
|
|
55
55
|
* Stage a storage write.
|
|
56
56
|
*
|
|
57
|
-
* @param
|
|
57
|
+
* @param contractAddress - the address of the contract whose storage is being written to
|
|
58
58
|
* @param slot - the slot in the contract's storage being written to
|
|
59
59
|
* @param value - the value being written to the slot
|
|
60
60
|
*/
|
|
61
|
-
write(
|
|
61
|
+
write(contractAddress: Fr, slot: Fr, value: Fr): void;
|
|
62
62
|
/**
|
|
63
63
|
* Merges another PublicStorage's cache (pending writes) into this one.
|
|
64
64
|
*
|
|
@@ -85,19 +85,19 @@ declare class PublicStorageCache {
|
|
|
85
85
|
/**
|
|
86
86
|
* Read a staged value from storage, if it has been previously written to.
|
|
87
87
|
*
|
|
88
|
-
* @param
|
|
88
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
89
89
|
* @param slot - the slot in the contract's storage being read from
|
|
90
90
|
* @returns the latest value written to slot, or undefined if no value has been written
|
|
91
91
|
*/
|
|
92
|
-
read(
|
|
92
|
+
read(contractAddress: Fr, slot: Fr): Fr | undefined;
|
|
93
93
|
/**
|
|
94
94
|
* Stage a storage write.
|
|
95
95
|
*
|
|
96
|
-
* @param
|
|
96
|
+
* @param contractAddress - the address of the contract whose storage is being written to
|
|
97
97
|
* @param slot - the slot in the contract's storage being written to
|
|
98
98
|
* @param value - the value being written to the slot
|
|
99
99
|
*/
|
|
100
|
-
write(
|
|
100
|
+
write(contractAddress: Fr, slot: Fr, value: Fr): void;
|
|
101
101
|
/**
|
|
102
102
|
* Merges another cache's staged writes into this instance's cache.
|
|
103
103
|
*
|
|
@@ -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,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,
|
|
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,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWtE;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmBlF;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAIrD;;;;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,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAI1D;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAUrD;;;;;;;;;OASG;IACI,cAAc,CAAC,oBAAoB,EAAE,kBAAkB;CAiB/D"}
|