@aztec/simulator 0.24.0 → 0.26.1
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/deserialize.d.ts +5 -0
- package/dest/acvm/deserialize.d.ts.map +1 -1
- package/dest/acvm/deserialize.js +8 -1
- package/dest/acvm/oracle/oracle.d.ts +5 -4
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +24 -11
- package/dest/acvm/oracle/typed_oracle.d.ts +7 -9
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +9 -9
- package/dest/avm/avm_context.d.ts +4 -4
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +6 -6
- package/dest/avm/avm_memory_types.d.ts +11 -2
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +11 -1
- package/dest/avm/avm_simulator.d.ts +6 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +17 -18
- package/dest/avm/fixtures/index.d.ts +17 -5
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +19 -8
- package/dest/avm/journal/host_storage.d.ts.map +1 -1
- package/dest/avm/journal/host_storage.js +1 -1
- package/dest/avm/journal/journal.d.ts +78 -50
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +125 -169
- package/dest/avm/journal/nullifiers.d.ts +85 -0
- package/dest/avm/journal/nullifiers.d.ts.map +1 -0
- package/dest/avm/journal/nullifiers.js +147 -0
- package/dest/avm/journal/public_storage.d.ts +88 -0
- package/dest/avm/journal/public_storage.d.ts.map +1 -0
- package/dest/avm/journal/public_storage.js +135 -0
- package/dest/avm/journal/trace.d.ts +43 -0
- package/dest/avm/journal/trace.d.ts.map +1 -0
- package/dest/avm/journal/trace.js +204 -0
- package/dest/avm/journal/trace_types.d.ts +26 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -0
- package/dest/avm/journal/trace_types.js +6 -0
- package/dest/avm/opcodes/accrued_substate.d.ts +37 -4
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +109 -12
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +5 -8
- package/dest/avm/opcodes/environment_getters.d.ts +14 -13
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +1 -1
- package/dest/avm/opcodes/external_calls.js +5 -5
- package/dest/avm/opcodes/hashing.d.ts +48 -0
- package/dest/avm/opcodes/hashing.d.ts.map +1 -0
- package/dest/avm/opcodes/hashing.js +127 -0
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +1 -1
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +3 -3
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +12 -8
- package/dest/avm/serialization/instruction_serialization.d.ts +10 -7
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +12 -9
- package/dest/avm/temporary_executor_migration.d.ts.map +1 -1
- package/dest/avm/temporary_executor_migration.js +5 -5
- package/dest/client/client_execution_context.d.ts +9 -5
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +46 -24
- package/dest/client/db_oracle.d.ts +7 -0
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/execution_note_cache.js +1 -1
- package/dest/client/execution_result.d.ts +2 -2
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +4 -4
- package/dest/client/simulator.d.ts +1 -1
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +3 -2
- package/dest/client/view_data_oracle.d.ts +9 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +13 -5
- package/dest/public/db.d.ts +17 -4
- package/dest/public/db.d.ts.map +1 -1
- package/dest/public/execution.d.ts +9 -4
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +17 -4
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +18 -9
- package/dest/public/public_execution_context.d.ts +5 -4
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +23 -12
- package/dest/public/state_actions.js +2 -2
- package/dest/test/utils.js +4 -4
- package/dest/utils.js +2 -3
- package/package.json +6 -5
- package/src/acvm/deserialize.ts +8 -0
- package/src/acvm/oracle/oracle.ts +30 -6
- package/src/acvm/oracle/typed_oracle.ts +13 -5
- package/src/avm/avm_context.ts +5 -5
- package/src/avm/avm_memory_types.ts +18 -3
- package/src/avm/avm_simulator.ts +22 -24
- package/src/avm/fixtures/index.ts +34 -9
- package/src/avm/journal/host_storage.ts +5 -11
- package/src/avm/journal/journal.ts +147 -182
- package/src/avm/journal/nullifiers.ts +170 -0
- package/src/avm/journal/public_storage.ts +149 -0
- package/src/avm/journal/trace.ts +223 -0
- package/src/avm/journal/trace_types.ts +79 -0
- package/src/avm/opcodes/accrued_substate.ts +132 -10
- package/src/avm/opcodes/comparators.ts +4 -7
- package/src/avm/opcodes/environment_getters.ts +15 -13
- package/src/avm/opcodes/external_calls.ts +4 -4
- package/src/avm/opcodes/hashing.ts +170 -0
- package/src/avm/opcodes/memory.ts +1 -0
- package/src/avm/opcodes/storage.ts +5 -2
- package/src/avm/serialization/bytecode_serialization.ts +13 -6
- package/src/avm/serialization/instruction_serialization.ts +6 -3
- package/src/avm/temporary_executor_migration.ts +4 -3
- package/src/client/client_execution_context.ts +53 -23
- package/src/client/db_oracle.ts +8 -0
- package/src/client/execution_note_cache.ts +1 -1
- package/src/client/execution_result.ts +2 -2
- package/src/client/private_execution.ts +5 -4
- package/src/client/simulator.ts +2 -1
- package/src/client/view_data_oracle.ts +14 -4
- package/src/public/db.ts +19 -4
- package/src/public/execution.ts +30 -6
- package/src/public/executor.ts +29 -9
- package/src/public/public_execution_context.ts +36 -12
- package/src/public/state_actions.ts +1 -1
- package/src/test/utils.ts +3 -3
- package/src/utils.ts +1 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { PublicStateDB } from '../../index.js';
|
|
3
|
+
/**
|
|
4
|
+
* A class to manage public storage reads and writes during a contract call's AVM simulation.
|
|
5
|
+
* Maintains a storage write cache, and ensures that reads fall back to the correct source.
|
|
6
|
+
* When a contract call completes, its storage cache can be merged into its parent's.
|
|
7
|
+
*/
|
|
8
|
+
export declare class PublicStorage {
|
|
9
|
+
/** Cached storage writes. */
|
|
10
|
+
private cache;
|
|
11
|
+
/** Parent's storage cache. Checked on cache-miss. */
|
|
12
|
+
private readonly parentCache;
|
|
13
|
+
/** Reference to node storage. Checked on parent cache-miss. */
|
|
14
|
+
private readonly hostPublicStorage;
|
|
15
|
+
constructor(hostPublicStorage: PublicStateDB, parent?: PublicStorage);
|
|
16
|
+
/**
|
|
17
|
+
* Get the pending storage.
|
|
18
|
+
*/
|
|
19
|
+
getCache(): PublicStorageCache;
|
|
20
|
+
/**
|
|
21
|
+
* Read a value from storage.
|
|
22
|
+
* 1. Check cache.
|
|
23
|
+
* 2. Check parent's cache.
|
|
24
|
+
* 3. Fall back to the host state.
|
|
25
|
+
* 4. Not found! Value has never been written to before. Flag it as non-existent and return value zero.
|
|
26
|
+
*
|
|
27
|
+
* @param storageAddress - the address of the contract whose storage is being read from
|
|
28
|
+
* @param slot - the slot in the contract's storage being read from
|
|
29
|
+
* @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
|
|
30
|
+
*/
|
|
31
|
+
read(storageAddress: Fr, slot: Fr): Promise<[/*exists=*/ boolean, /*value=*/ Fr]>;
|
|
32
|
+
/**
|
|
33
|
+
* Stage a storage write.
|
|
34
|
+
*
|
|
35
|
+
* @param storageAddress - the address of the contract whose storage is being written to
|
|
36
|
+
* @param slot - the slot in the contract's storage being written to
|
|
37
|
+
* @param value - the value being written to the slot
|
|
38
|
+
*/
|
|
39
|
+
write(storageAddress: Fr, key: Fr, value: Fr): void;
|
|
40
|
+
/**
|
|
41
|
+
* Merges another PublicStorage's cache (pending writes) into this one.
|
|
42
|
+
*
|
|
43
|
+
* @param incomingPublicStorage - the incoming public storage to merge into this instance's
|
|
44
|
+
*/
|
|
45
|
+
acceptAndMerge(incomingPublicStorage: PublicStorage): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A class to cache writes to public storage during a contract call's AVM simulation.
|
|
49
|
+
* "Writes" update a map, "reads" check that map or return undefined.
|
|
50
|
+
* An instance of this class can merge another instance's staged writes into its own.
|
|
51
|
+
*/
|
|
52
|
+
declare class PublicStorageCache {
|
|
53
|
+
/**
|
|
54
|
+
* Map for staging storage writes.
|
|
55
|
+
* One inner-map per contract storage address,
|
|
56
|
+
* mapping storage slot to latest staged write value.
|
|
57
|
+
*/
|
|
58
|
+
cachePerContract: Map<bigint, Map<bigint, Fr>>;
|
|
59
|
+
/**
|
|
60
|
+
* Read a staged value from storage, if it has been previously written to.
|
|
61
|
+
*
|
|
62
|
+
* @param storageAddress - the address of the contract whose storage is being read from
|
|
63
|
+
* @param slot - the slot in the contract's storage being read from
|
|
64
|
+
* @returns the latest value written to slot, or undefined if no value has been written
|
|
65
|
+
*/
|
|
66
|
+
read(storageAddress: Fr, slot: Fr): Fr | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Stage a storage write.
|
|
69
|
+
*
|
|
70
|
+
* @param storageAddress - the address of the contract whose storage is being written to
|
|
71
|
+
* @param slot - the slot in the contract's storage being written to
|
|
72
|
+
* @param value - the value being written to the slot
|
|
73
|
+
*/
|
|
74
|
+
write(storageAddress: Fr, slot: Fr, value: Fr): void;
|
|
75
|
+
/**
|
|
76
|
+
* Merges another cache's staged writes into this instance's cache.
|
|
77
|
+
*
|
|
78
|
+
* Staged modifications in "incoming" take precedence over those
|
|
79
|
+
* present in "this" as they are assumed to occur after this' writes.
|
|
80
|
+
*
|
|
81
|
+
* In practice, "this" is a parent call's storage cache, and "incoming" is a nested call's.
|
|
82
|
+
*
|
|
83
|
+
* @param incomingStorageCache - the incoming storage write cache to merge into this instance's
|
|
84
|
+
*/
|
|
85
|
+
acceptAndMerge(incomingStorageCache: PublicStorageCache): void;
|
|
86
|
+
}
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=public_storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,aAAa;IACxB,6BAA6B;IAC7B,OAAO,CAAC,KAAK,CAAqB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAC7D,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;gBAEtC,iBAAiB,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa;IAMpE;;OAEG;IACI,QAAQ;IAIf;;;;;;;;;;OAUG;IACU,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAiB9F;;;;;;OAMG;IACI,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAInD;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D;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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
/**
|
|
3
|
+
* A class to manage public storage reads and writes during a contract call's AVM simulation.
|
|
4
|
+
* Maintains a storage write cache, and ensures that reads fall back to the correct source.
|
|
5
|
+
* When a contract call completes, its storage cache can be merged into its parent's.
|
|
6
|
+
*/
|
|
7
|
+
export class PublicStorage {
|
|
8
|
+
constructor(hostPublicStorage, parent) {
|
|
9
|
+
this.hostPublicStorage = hostPublicStorage;
|
|
10
|
+
this.parentCache = parent?.cache;
|
|
11
|
+
this.cache = new PublicStorageCache();
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the pending storage.
|
|
15
|
+
*/
|
|
16
|
+
getCache() {
|
|
17
|
+
return this.cache;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Read a value from storage.
|
|
21
|
+
* 1. Check cache.
|
|
22
|
+
* 2. Check parent's cache.
|
|
23
|
+
* 3. Fall back to the host state.
|
|
24
|
+
* 4. Not found! Value has never been written to before. Flag it as non-existent and return value zero.
|
|
25
|
+
*
|
|
26
|
+
* @param storageAddress - the address of the contract whose storage is being read from
|
|
27
|
+
* @param slot - the slot in the contract's storage being read from
|
|
28
|
+
* @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
|
|
29
|
+
*/
|
|
30
|
+
async read(storageAddress, slot) {
|
|
31
|
+
// First try check this storage cache
|
|
32
|
+
let value = this.cache.read(storageAddress, slot);
|
|
33
|
+
// Then try parent's storage cache (if it exists / written to earlier in this TX)
|
|
34
|
+
if (!value && this.parentCache) {
|
|
35
|
+
value = this.parentCache?.read(storageAddress, slot);
|
|
36
|
+
}
|
|
37
|
+
// Finally try the host's Aztec state (a trip to the database)
|
|
38
|
+
if (!value) {
|
|
39
|
+
value = await this.hostPublicStorage.storageRead(storageAddress, slot);
|
|
40
|
+
}
|
|
41
|
+
// if value is undefined, that means this slot has never been written to!
|
|
42
|
+
const exists = value !== undefined;
|
|
43
|
+
const valueOrZero = exists ? value : Fr.ZERO;
|
|
44
|
+
return Promise.resolve([exists, valueOrZero]);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Stage a storage write.
|
|
48
|
+
*
|
|
49
|
+
* @param storageAddress - the address of the contract whose storage is being written to
|
|
50
|
+
* @param slot - the slot in the contract's storage being written to
|
|
51
|
+
* @param value - the value being written to the slot
|
|
52
|
+
*/
|
|
53
|
+
write(storageAddress, key, value) {
|
|
54
|
+
this.cache.write(storageAddress, key, value);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Merges another PublicStorage's cache (pending writes) into this one.
|
|
58
|
+
*
|
|
59
|
+
* @param incomingPublicStorage - the incoming public storage to merge into this instance's
|
|
60
|
+
*/
|
|
61
|
+
acceptAndMerge(incomingPublicStorage) {
|
|
62
|
+
this.cache.acceptAndMerge(incomingPublicStorage.cache);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* A class to cache writes to public storage during a contract call's AVM simulation.
|
|
67
|
+
* "Writes" update a map, "reads" check that map or return undefined.
|
|
68
|
+
* An instance of this class can merge another instance's staged writes into its own.
|
|
69
|
+
*/
|
|
70
|
+
class PublicStorageCache {
|
|
71
|
+
constructor() {
|
|
72
|
+
/**
|
|
73
|
+
* Map for staging storage writes.
|
|
74
|
+
* One inner-map per contract storage address,
|
|
75
|
+
* mapping storage slot to latest staged write value.
|
|
76
|
+
*/
|
|
77
|
+
this.cachePerContract = new Map();
|
|
78
|
+
}
|
|
79
|
+
// FIXME: storage ^ should be private, but its value is used in tests for "currentStorageValue"
|
|
80
|
+
/**
|
|
81
|
+
* Read a staged value from storage, if it has been previously written to.
|
|
82
|
+
*
|
|
83
|
+
* @param storageAddress - the address of the contract whose storage is being read from
|
|
84
|
+
* @param slot - the slot in the contract's storage being read from
|
|
85
|
+
* @returns the latest value written to slot, or undefined if no value has been written
|
|
86
|
+
*/
|
|
87
|
+
read(storageAddress, slot) {
|
|
88
|
+
return this.cachePerContract.get(storageAddress.toBigInt())?.get(slot.toBigInt());
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Stage a storage write.
|
|
92
|
+
*
|
|
93
|
+
* @param storageAddress - the address of the contract whose storage is being written to
|
|
94
|
+
* @param slot - the slot in the contract's storage being written to
|
|
95
|
+
* @param value - the value being written to the slot
|
|
96
|
+
*/
|
|
97
|
+
write(storageAddress, slot, value) {
|
|
98
|
+
let cacheAtContract = this.cachePerContract.get(storageAddress.toBigInt());
|
|
99
|
+
if (!cacheAtContract) {
|
|
100
|
+
// If this contract's storage has no staged modifications, create a new inner map to store them
|
|
101
|
+
cacheAtContract = new Map();
|
|
102
|
+
this.cachePerContract.set(storageAddress.toBigInt(), cacheAtContract);
|
|
103
|
+
}
|
|
104
|
+
cacheAtContract.set(slot.toBigInt(), value);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Merges another cache's staged writes into this instance's cache.
|
|
108
|
+
*
|
|
109
|
+
* Staged modifications in "incoming" take precedence over those
|
|
110
|
+
* present in "this" as they are assumed to occur after this' writes.
|
|
111
|
+
*
|
|
112
|
+
* In practice, "this" is a parent call's storage cache, and "incoming" is a nested call's.
|
|
113
|
+
*
|
|
114
|
+
* @param incomingStorageCache - the incoming storage write cache to merge into this instance's
|
|
115
|
+
*/
|
|
116
|
+
acceptAndMerge(incomingStorageCache) {
|
|
117
|
+
// Iterate over all incoming contracts with staged writes.
|
|
118
|
+
for (const [incomingAddress, incomingCacheAtContract] of incomingStorageCache.cachePerContract) {
|
|
119
|
+
const thisCacheAtContract = this.cachePerContract.get(incomingAddress);
|
|
120
|
+
if (!thisCacheAtContract) {
|
|
121
|
+
// The contract has no storage writes staged here
|
|
122
|
+
// so just accept the incoming cache as-is for this contract.
|
|
123
|
+
this.cachePerContract.set(incomingAddress, incomingCacheAtContract);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// "Incoming" and "this" both have staged writes for this contract.
|
|
127
|
+
// Merge in incoming staged writes, giving them precedence over this'.
|
|
128
|
+
for (const [slot, value] of incomingCacheAtContract) {
|
|
129
|
+
thisCacheAtContract.set(slot, value);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3N0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvcHVibGljX3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQVF4QixZQUFZLGlCQUFnQyxFQUFFLE1BQXNCO1FBQ2xFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBa0IsRUFBRSxJQUFRO1FBQzVDLHFDQUFxQztRQUNyQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUNELDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QseUVBQXlFO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUM7UUFDbkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDN0MsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxjQUFrQixFQUFFLEdBQU8sRUFBRSxLQUFTO1FBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUMscUJBQW9DO1FBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQjtJQUF4QjtRQUNFOzs7O1dBSUc7UUFDSSxxQkFBZ0IsR0FBaUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQTBEcEUsQ0FBQztJQXpEQywrRkFBK0Y7SUFFL0Y7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLGNBQWtCLEVBQUUsSUFBUTtRQUN0QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsY0FBa0IsRUFBRSxJQUFRLEVBQUUsS0FBUztRQUNsRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQiwrRkFBK0Y7WUFDL0YsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUNELGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxjQUFjLENBQUMsb0JBQXdDO1FBQzVELDBEQUEwRDtRQUMxRCxLQUFLLE1BQU0sQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9GLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDekIsaURBQWlEO2dCQUNqRCw2REFBNkQ7Z0JBQzdELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFDdEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLG1FQUFtRTtnQkFDbkUsc0VBQXNFO2dCQUN0RSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDcEQsbUJBQW1CLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import { TracedL1toL2MessageCheck, TracedNoteHashCheck, TracedNullifierCheck } from './trace_types.js';
|
|
3
|
+
export declare class WorldStateAccessTrace {
|
|
4
|
+
accessCounter: number;
|
|
5
|
+
publicStorageReads: Map<bigint, Map<bigint, Fr[]>>;
|
|
6
|
+
publicStorageWrites: Map<bigint, Map<bigint, Fr[]>>;
|
|
7
|
+
noteHashChecks: TracedNoteHashCheck[];
|
|
8
|
+
newNoteHashes: Fr[];
|
|
9
|
+
nullifierChecks: TracedNullifierCheck[];
|
|
10
|
+
newNullifiers: Fr[];
|
|
11
|
+
l1ToL2MessageChecks: TracedL1toL2MessageCheck[];
|
|
12
|
+
constructor(parentTrace?: WorldStateAccessTrace);
|
|
13
|
+
getAccessCounter(): number;
|
|
14
|
+
tracePublicStorageRead(storageAddress: Fr, slot: Fr, value: Fr): void;
|
|
15
|
+
tracePublicStorageWrite(storageAddress: Fr, slot: Fr, value: Fr): void;
|
|
16
|
+
traceNoteHashCheck(storageAddress: Fr, noteHash: Fr, exists: boolean, leafIndex: Fr): void;
|
|
17
|
+
traceNewNoteHash(_storageAddress: Fr, noteHash: Fr): void;
|
|
18
|
+
traceNullifierCheck(storageAddress: Fr, nullifier: Fr, exists: boolean, isPending: boolean, leafIndex: Fr): void;
|
|
19
|
+
traceNewNullifier(_storageAddress: Fr, nullifier: Fr): void;
|
|
20
|
+
traceL1ToL2MessageCheck(msgHash: Fr, msgLeafIndex: Fr, exists: boolean): void;
|
|
21
|
+
private incrementAccessCounter;
|
|
22
|
+
/**
|
|
23
|
+
* Merges another trace into this one
|
|
24
|
+
*
|
|
25
|
+
* - Public state journals (r/w logs), with the accessing being appended in chronological order
|
|
26
|
+
* - Utxo objects are concatenated
|
|
27
|
+
*
|
|
28
|
+
* @param incomingTrace - the incoming trace to merge into this instance
|
|
29
|
+
*/
|
|
30
|
+
acceptAndMerge(incomingTrace: WorldStateAccessTrace): void;
|
|
31
|
+
/**
|
|
32
|
+
* We want to keep track of all performed reads in the journal
|
|
33
|
+
* This information is hinted to the avm circuit
|
|
34
|
+
|
|
35
|
+
* @param contractAddress -
|
|
36
|
+
* @param key -
|
|
37
|
+
* @param value -
|
|
38
|
+
*/
|
|
39
|
+
journalUpdate(map: Map<bigint, Map<bigint, Fr[]>>, contractAddress: Fr, key: Fr, value: Fr): void;
|
|
40
|
+
private journalRead;
|
|
41
|
+
private journalWrite;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEvG,qBAAa,qBAAqB;IACzB,aAAa,EAAE,MAAM,CAAC;IAItB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAa;IAE/D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAa;IAEhE,cAAc,EAAE,mBAAmB,EAAE,CAAM;IAE3C,aAAa,EAAE,EAAE,EAAE,CAAM;IACzB,eAAe,EAAE,oBAAoB,EAAE,CAAM;IAE7C,aAAa,EAAE,EAAE,EAAE,CAAM;IACzB,mBAAmB,EAAE,wBAAwB,EAAE,CAAM;gBAGhD,WAAW,CAAC,EAAE,qBAAqB;IAIxC,gBAAgB;IAIhB,sBAAsB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAiB9D,uBAAuB,CAAC,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAgB/D,kBAAkB,CAAC,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAcnF,gBAAgB,CAAC,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IAclD,mBAAmB,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAgBzG,iBAAiB,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;IAcpD,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO;IAa7E,OAAO,CAAC,sBAAsB;IAI9B;;;;;;;OAOG;IACI,cAAc,CAAC,aAAa,EAAE,qBAAqB;IAc1D;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI;IAgBjG,OAAO,CAAC,WAAW,CAA0D;IAE7E,OAAO,CAAC,YAAY,CAA2D;CAChF"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export class WorldStateAccessTrace {
|
|
3
|
+
//public archiveChecks: TracedArchiveLeafCheck[] = [];
|
|
4
|
+
constructor(parentTrace) {
|
|
5
|
+
//public contractCalls: Array<TracedContractCall> = [];
|
|
6
|
+
//public publicStorageReads: Array<TracedPublicStorageRead> = [];
|
|
7
|
+
this.publicStorageReads = new Map();
|
|
8
|
+
//public publicStorageWrites: Array<TracedPublicStorageWrite> = [];
|
|
9
|
+
this.publicStorageWrites = new Map();
|
|
10
|
+
this.noteHashChecks = [];
|
|
11
|
+
//public newNoteHashes: TracedNoteHash[] = [];
|
|
12
|
+
this.newNoteHashes = [];
|
|
13
|
+
this.nullifierChecks = [];
|
|
14
|
+
//public newNullifiers: TracedNullifier[] = [];
|
|
15
|
+
this.newNullifiers = [];
|
|
16
|
+
this.l1ToL2MessageChecks = [];
|
|
17
|
+
// Create an instance of journalUpdate that appends to the read array
|
|
18
|
+
this.journalRead = this.journalUpdate.bind(this, this.publicStorageReads);
|
|
19
|
+
// Create an instance of journalUpdate that appends to the writes array
|
|
20
|
+
this.journalWrite = this.journalUpdate.bind(this, this.publicStorageWrites);
|
|
21
|
+
this.accessCounter = parentTrace ? parentTrace.accessCounter : 0;
|
|
22
|
+
}
|
|
23
|
+
getAccessCounter() {
|
|
24
|
+
return this.accessCounter;
|
|
25
|
+
}
|
|
26
|
+
tracePublicStorageRead(storageAddress, slot, value /*, _exists: boolean*/) {
|
|
27
|
+
// TODO(4805): check if some threshold is reached for max storage reads
|
|
28
|
+
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
29
|
+
//const traced: TracedPublicStorageRead = {
|
|
30
|
+
// callPointer: Fr.ZERO,
|
|
31
|
+
// storageAddress,
|
|
32
|
+
// slot,
|
|
33
|
+
// value,
|
|
34
|
+
// exists,
|
|
35
|
+
// counter: new Fr(this.accessCounter),
|
|
36
|
+
// endLifetime: Fr.ZERO,
|
|
37
|
+
//};
|
|
38
|
+
//this.publicStorageReads.push(traced);
|
|
39
|
+
this.journalRead(storageAddress, slot, value);
|
|
40
|
+
this.incrementAccessCounter();
|
|
41
|
+
}
|
|
42
|
+
tracePublicStorageWrite(storageAddress, slot, value) {
|
|
43
|
+
// TODO(4805): check if some threshold is reached for max storage writes
|
|
44
|
+
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
45
|
+
//const traced: TracedPublicStorageWrite = {
|
|
46
|
+
// callPointer: Fr.ZERO,
|
|
47
|
+
// storageAddress,
|
|
48
|
+
// slot,
|
|
49
|
+
// value,
|
|
50
|
+
// counter: new Fr(this.accessCounter),
|
|
51
|
+
// endLifetime: Fr.ZERO,
|
|
52
|
+
//};
|
|
53
|
+
//this.publicStorageWrites.push(traced);
|
|
54
|
+
this.journalWrite(storageAddress, slot, value);
|
|
55
|
+
this.incrementAccessCounter();
|
|
56
|
+
}
|
|
57
|
+
traceNoteHashCheck(storageAddress, noteHash, exists, leafIndex) {
|
|
58
|
+
const traced = {
|
|
59
|
+
callPointer: Fr.ZERO, // FIXME
|
|
60
|
+
storageAddress,
|
|
61
|
+
noteHash,
|
|
62
|
+
exists,
|
|
63
|
+
counter: new Fr(this.accessCounter),
|
|
64
|
+
endLifetime: Fr.ZERO,
|
|
65
|
+
leafIndex,
|
|
66
|
+
};
|
|
67
|
+
this.noteHashChecks.push(traced);
|
|
68
|
+
this.incrementAccessCounter();
|
|
69
|
+
}
|
|
70
|
+
traceNewNoteHash(_storageAddress, noteHash) {
|
|
71
|
+
// TODO(4805): check if some threshold is reached for max new note hash
|
|
72
|
+
//const traced: TracedNoteHash = {
|
|
73
|
+
// callPointer: Fr.ZERO,
|
|
74
|
+
// storageAddress,
|
|
75
|
+
// noteHash,
|
|
76
|
+
// counter: new Fr(this.accessCounter),
|
|
77
|
+
// endLifetime: Fr.ZERO,
|
|
78
|
+
//};
|
|
79
|
+
//this.newNoteHashes.push(traced);
|
|
80
|
+
this.newNoteHashes.push(noteHash);
|
|
81
|
+
this.incrementAccessCounter();
|
|
82
|
+
}
|
|
83
|
+
traceNullifierCheck(storageAddress, nullifier, exists, isPending, leafIndex) {
|
|
84
|
+
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
85
|
+
const traced = {
|
|
86
|
+
callPointer: Fr.ZERO, // FIXME
|
|
87
|
+
storageAddress,
|
|
88
|
+
nullifier,
|
|
89
|
+
exists,
|
|
90
|
+
counter: new Fr(this.accessCounter),
|
|
91
|
+
endLifetime: Fr.ZERO,
|
|
92
|
+
isPending,
|
|
93
|
+
leafIndex,
|
|
94
|
+
};
|
|
95
|
+
this.nullifierChecks.push(traced);
|
|
96
|
+
this.incrementAccessCounter();
|
|
97
|
+
}
|
|
98
|
+
traceNewNullifier(_storageAddress, nullifier) {
|
|
99
|
+
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
100
|
+
//const traced: TracedNullifier = {
|
|
101
|
+
// callPointer: Fr.ZERO,
|
|
102
|
+
// storageAddress,
|
|
103
|
+
// nullifier,
|
|
104
|
+
// counter: new Fr(this.accessCounter),
|
|
105
|
+
// endLifetime: Fr.ZERO,
|
|
106
|
+
//};
|
|
107
|
+
//this.newNullifiers.push(traced);
|
|
108
|
+
this.newNullifiers.push(nullifier);
|
|
109
|
+
this.incrementAccessCounter();
|
|
110
|
+
}
|
|
111
|
+
traceL1ToL2MessageCheck(msgHash, msgLeafIndex, exists) {
|
|
112
|
+
// TODO(4805): check if some threshold is reached for max message reads
|
|
113
|
+
const traced = {
|
|
114
|
+
//callPointer: Fr.ZERO, // FIXME
|
|
115
|
+
leafIndex: msgLeafIndex,
|
|
116
|
+
msgHash: msgHash,
|
|
117
|
+
exists: exists,
|
|
118
|
+
//endLifetime: Fr.ZERO, // FIXME
|
|
119
|
+
};
|
|
120
|
+
this.l1ToL2MessageChecks.push(traced);
|
|
121
|
+
this.incrementAccessCounter();
|
|
122
|
+
}
|
|
123
|
+
incrementAccessCounter() {
|
|
124
|
+
this.accessCounter++;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Merges another trace into this one
|
|
128
|
+
*
|
|
129
|
+
* - Public state journals (r/w logs), with the accessing being appended in chronological order
|
|
130
|
+
* - Utxo objects are concatenated
|
|
131
|
+
*
|
|
132
|
+
* @param incomingTrace - the incoming trace to merge into this instance
|
|
133
|
+
*/
|
|
134
|
+
acceptAndMerge(incomingTrace) {
|
|
135
|
+
// Merge storage read and write journals
|
|
136
|
+
mergeContractJournalMaps(this.publicStorageReads, incomingTrace.publicStorageReads);
|
|
137
|
+
mergeContractJournalMaps(this.publicStorageWrites, incomingTrace.publicStorageWrites);
|
|
138
|
+
// Merge new note hashes and nullifiers
|
|
139
|
+
this.noteHashChecks = this.noteHashChecks.concat(incomingTrace.noteHashChecks);
|
|
140
|
+
this.newNoteHashes = this.newNoteHashes.concat(incomingTrace.newNoteHashes);
|
|
141
|
+
this.nullifierChecks = this.nullifierChecks.concat(incomingTrace.nullifierChecks);
|
|
142
|
+
this.newNullifiers = this.newNullifiers.concat(incomingTrace.newNullifiers);
|
|
143
|
+
this.l1ToL2MessageChecks = this.l1ToL2MessageChecks.concat(incomingTrace.l1ToL2MessageChecks);
|
|
144
|
+
// it is assumed that the incoming trace was initialized with this as parent, so accept counter
|
|
145
|
+
this.accessCounter = incomingTrace.accessCounter;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* We want to keep track of all performed reads in the journal
|
|
149
|
+
* This information is hinted to the avm circuit
|
|
150
|
+
|
|
151
|
+
* @param contractAddress -
|
|
152
|
+
* @param key -
|
|
153
|
+
* @param value -
|
|
154
|
+
*/
|
|
155
|
+
journalUpdate(map, contractAddress, key, value) {
|
|
156
|
+
let contractMap = map.get(contractAddress.toBigInt());
|
|
157
|
+
if (!contractMap) {
|
|
158
|
+
contractMap = new Map();
|
|
159
|
+
map.set(contractAddress.toBigInt(), contractMap);
|
|
160
|
+
}
|
|
161
|
+
let accessArray = contractMap.get(key.toBigInt());
|
|
162
|
+
if (!accessArray) {
|
|
163
|
+
accessArray = new Array();
|
|
164
|
+
contractMap.set(key.toBigInt(), accessArray);
|
|
165
|
+
}
|
|
166
|
+
accessArray.push(value);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Merges two contract journalling maps together
|
|
171
|
+
* For read maps, we just append the childMap arrays into the host map arrays, as the order is important
|
|
172
|
+
*
|
|
173
|
+
* @param hostMap - The map to be merged into
|
|
174
|
+
* @param childMap - The map to be merged from
|
|
175
|
+
*/
|
|
176
|
+
function mergeContractJournalMaps(hostMap, childMap) {
|
|
177
|
+
for (const [key, value] of childMap) {
|
|
178
|
+
const map1Value = hostMap.get(key);
|
|
179
|
+
if (!map1Value) {
|
|
180
|
+
hostMap.set(key, value);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
mergeStorageJournalMaps(map1Value, value);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Merge two storage journalling maps together (for a particular contract).
|
|
189
|
+
*
|
|
190
|
+
* @param hostMap - The map to be merge into
|
|
191
|
+
* @param childMap - The map to be merged from
|
|
192
|
+
*/
|
|
193
|
+
function mergeStorageJournalMaps(hostMap, childMap) {
|
|
194
|
+
for (const [key, value] of childMap) {
|
|
195
|
+
const readArr = hostMap.get(key);
|
|
196
|
+
if (!readArr) {
|
|
197
|
+
hostMap.set(key, value);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
hostMap.set(key, readArr?.concat(...value));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDLE1BQU0sT0FBTyxxQkFBcUI7SUFnQmhDLHNEQUFzRDtJQUV0RCxZQUFZLFdBQW1DO1FBaEIvQyx1REFBdUQ7UUFFdkQsaUVBQWlFO1FBQzFELHVCQUFrQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RFLG1FQUFtRTtRQUM1RCx3QkFBbUIsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVoRSxtQkFBYyxHQUEwQixFQUFFLENBQUM7UUFDbEQsOENBQThDO1FBQ3ZDLGtCQUFhLEdBQVMsRUFBRSxDQUFDO1FBQ3pCLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQztRQUNwRCwrQ0FBK0M7UUFDeEMsa0JBQWEsR0FBUyxFQUFFLENBQUM7UUFDekIsd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQW9LNUQscUVBQXFFO1FBQzdELGdCQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdFLHVFQUF1RTtRQUMvRCxpQkFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQW5LN0UsSUFBSSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRU0sc0JBQXNCLENBQUMsY0FBa0IsRUFBRSxJQUFRLEVBQUUsS0FBUyxDQUFDLHNCQUFzQjtR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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
export type TracedNoteHashCheck = {
|
|
3
|
+
callPointer: Fr;
|
|
4
|
+
storageAddress: Fr;
|
|
5
|
+
leafIndex: Fr;
|
|
6
|
+
noteHash: Fr;
|
|
7
|
+
exists: boolean;
|
|
8
|
+
counter: Fr;
|
|
9
|
+
endLifetime: Fr;
|
|
10
|
+
};
|
|
11
|
+
export type TracedNullifierCheck = {
|
|
12
|
+
callPointer: Fr;
|
|
13
|
+
storageAddress: Fr;
|
|
14
|
+
nullifier: Fr;
|
|
15
|
+
exists: boolean;
|
|
16
|
+
counter: Fr;
|
|
17
|
+
endLifetime: Fr;
|
|
18
|
+
isPending: boolean;
|
|
19
|
+
leafIndex: Fr;
|
|
20
|
+
};
|
|
21
|
+
export type TracedL1toL2MessageCheck = {
|
|
22
|
+
leafIndex: Fr;
|
|
23
|
+
msgHash: Fr;
|
|
24
|
+
exists: boolean;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=trace_types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AA4B9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,EAAE,CAAC;IAChB,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;IACZ,WAAW,EAAE,EAAE,CAAC;CACjB,CAAC;AAUF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,EAAE,CAAC;IAChB,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;IACZ,WAAW,EAAE,EAAE,CAAC;IAGhB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;CACf,CAAC;AAUF,MAAM,MAAM,wBAAwB,GAAG;IAErC,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;CAEjB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//export type TracedArchiveLeafCheck = {
|
|
3
|
+
// leafIndex: Fr;
|
|
4
|
+
// leaf: Fr;
|
|
5
|
+
//};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2VfdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvdHJhY2VfdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQTJFQSx3Q0FBd0M7QUFDeEMsa0JBQWtCO0FBQ2xCLGFBQWE7QUFDYixJQUFJIn0=
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
2
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
3
3
|
import { Instruction } from './instruction.js';
|
|
4
|
+
export declare class NoteHashExists extends Instruction {
|
|
5
|
+
private indirect;
|
|
6
|
+
private noteHashOffset;
|
|
7
|
+
private leafIndexOffset;
|
|
8
|
+
private existsOffset;
|
|
9
|
+
static type: string;
|
|
10
|
+
static readonly opcode: Opcode;
|
|
11
|
+
static readonly wireFormat: OperandType[];
|
|
12
|
+
constructor(indirect: number, noteHashOffset: number, leafIndexOffset: number, existsOffset: number);
|
|
13
|
+
execute(context: AvmContext): Promise<void>;
|
|
14
|
+
}
|
|
4
15
|
export declare class EmitNoteHash extends Instruction {
|
|
5
16
|
private indirect;
|
|
6
17
|
private noteHashOffset;
|
|
@@ -10,6 +21,16 @@ export declare class EmitNoteHash extends Instruction {
|
|
|
10
21
|
constructor(indirect: number, noteHashOffset: number);
|
|
11
22
|
execute(context: AvmContext): Promise<void>;
|
|
12
23
|
}
|
|
24
|
+
export declare class NullifierExists extends Instruction {
|
|
25
|
+
private indirect;
|
|
26
|
+
private nullifierOffset;
|
|
27
|
+
private existsOffset;
|
|
28
|
+
static type: string;
|
|
29
|
+
static readonly opcode: Opcode;
|
|
30
|
+
static readonly wireFormat: OperandType[];
|
|
31
|
+
constructor(indirect: number, nullifierOffset: number, existsOffset: number);
|
|
32
|
+
execute(context: AvmContext): Promise<void>;
|
|
33
|
+
}
|
|
13
34
|
export declare class EmitNullifier extends Instruction {
|
|
14
35
|
private indirect;
|
|
15
36
|
private nullifierOffset;
|
|
@@ -19,24 +40,36 @@ export declare class EmitNullifier extends Instruction {
|
|
|
19
40
|
constructor(indirect: number, nullifierOffset: number);
|
|
20
41
|
execute(context: AvmContext): Promise<void>;
|
|
21
42
|
}
|
|
43
|
+
export declare class L1ToL2MessageExists extends Instruction {
|
|
44
|
+
private indirect;
|
|
45
|
+
private msgHashOffset;
|
|
46
|
+
private msgLeafIndexOffset;
|
|
47
|
+
private existsOffset;
|
|
48
|
+
static type: string;
|
|
49
|
+
static readonly opcode: Opcode;
|
|
50
|
+
static readonly wireFormat: OperandType[];
|
|
51
|
+
constructor(indirect: number, msgHashOffset: number, msgLeafIndexOffset: number, existsOffset: number);
|
|
52
|
+
execute(context: AvmContext): Promise<void>;
|
|
53
|
+
}
|
|
22
54
|
export declare class EmitUnencryptedLog extends Instruction {
|
|
23
55
|
private indirect;
|
|
56
|
+
private eventSelectorOffset;
|
|
24
57
|
private logOffset;
|
|
25
58
|
private logSize;
|
|
26
59
|
static type: string;
|
|
27
60
|
static readonly opcode: Opcode;
|
|
28
61
|
static readonly wireFormat: OperandType[];
|
|
29
|
-
constructor(indirect: number, logOffset: number, logSize: number);
|
|
62
|
+
constructor(indirect: number, eventSelectorOffset: number, logOffset: number, logSize: number);
|
|
30
63
|
execute(context: AvmContext): Promise<void>;
|
|
31
64
|
}
|
|
32
65
|
export declare class SendL2ToL1Message extends Instruction {
|
|
33
66
|
private indirect;
|
|
34
|
-
private
|
|
35
|
-
private
|
|
67
|
+
private recipientOffset;
|
|
68
|
+
private contentOffset;
|
|
36
69
|
static type: string;
|
|
37
70
|
static readonly opcode: Opcode;
|
|
38
71
|
static readonly wireFormat: OperandType[];
|
|
39
|
-
constructor(indirect: number,
|
|
72
|
+
constructor(indirect: number, recipientOffset: number, contentOffset: number);
|
|
40
73
|
execute(context: AvmContext): Promise<void>;
|
|
41
74
|
}
|
|
42
75
|
//# sourceMappingURL=accrued_substate.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../src/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"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"}
|