@aztec/simulator 0.59.0 → 0.60.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 +3 -3
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +7 -7
- package/dest/acvm/oracle/typed_oracle.d.ts +4 -3
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +4 -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 +1 -8
- 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 +1 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- 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 +14 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +33 -33
- 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/environment_getters.d.ts +12 -13
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +13 -16
- 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/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 +2 -6
- package/dest/avm/serialization/instruction_serialization.d.ts +11 -14
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +11 -15
- package/dest/avm/test_utils.d.ts +1 -0
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/client/client_execution_context.d.ts +9 -10
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +30 -33
- 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/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 +7 -6
- package/dest/public/dual_side_effect_trace.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.js +19 -19
- package/dest/public/enqueued_call_side_effect_trace.d.ts +7 -6
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
- package/dest/public/enqueued_call_side_effect_trace.js +15 -17
- package/dest/public/enqueued_call_simulator.d.ts +1 -1
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
- package/dest/public/enqueued_call_simulator.js +11 -12
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
- package/dest/public/enqueued_calls_processor.js +2 -2
- 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/side_effect_trace.d.ts +7 -6
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +14 -15
- package/dest/public/side_effect_trace_interface.d.ts +7 -6
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/acvm/oracle/oracle.ts +0 -6
- package/src/acvm/oracle/typed_oracle.ts +0 -3
- package/src/avm/avm_context.ts +1 -1
- package/src/avm/avm_execution_environment.ts +0 -15
- package/src/avm/avm_gas.ts +0 -7
- package/src/avm/fixtures/index.ts +7 -2
- package/src/avm/journal/journal.ts +32 -32
- 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/environment_getters.ts +0 -3
- package/src/avm/opcodes/hashing.ts +9 -122
- package/src/avm/opcodes/index.ts +0 -1
- package/src/avm/opcodes/storage.ts +2 -2
- package/src/avm/serialization/bytecode_serialization.ts +0 -7
- package/src/avm/serialization/instruction_serialization.ts +0 -4
- package/src/client/client_execution_context.ts +21 -44
- package/src/client/private_execution.ts +1 -9
- package/src/client/simulator.ts +0 -2
- package/src/mocks/fixtures.ts +1 -1
- package/src/public/dual_side_effect_trace.ts +18 -18
- package/src/public/enqueued_call_side_effect_trace.ts +14 -20
- package/src/public/enqueued_call_simulator.ts +10 -23
- package/src/public/enqueued_calls_processor.ts +1 -3
- package/src/public/execution.ts +1 -1
- package/src/public/executor.ts +11 -5
- package/src/public/side_effect_trace.ts +19 -14
- package/src/public/side_effect_trace_interface.ts +6 -6
- 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/src/avm/opcodes/commitment.ts +0 -65
|
@@ -31,7 +31,7 @@ export function initPersistableStateManager(overrides) {
|
|
|
31
31
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
32
32
|
*/
|
|
33
33
|
export function initExecutionEnvironment(overrides) {
|
|
34
|
-
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.
|
|
34
|
+
return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.functionSelector ?? FunctionSelector.empty(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? []);
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
|
|
@@ -85,4 +85,10 @@ export function resolveAvmTestContractAssertionMessage(functionName, revertReaso
|
|
|
85
85
|
}
|
|
86
86
|
return resolveAssertionMessage(revertReason.noirCallStack, debugMetadata);
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
export function getAvmTestContractFunctionSelector(functionName) {
|
|
89
|
+
const artifact = AvmTestContractArtifact.functions.find(f => f.name === functionName);
|
|
90
|
+
assert(!!artifact, `Function ${functionName} not found in AvmTestContractArtifact`);
|
|
91
|
+
const params = artifact.parameters;
|
|
92
|
+
return FunctionSelector.fromNameAndParameters(artifact.name, params);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2ZpeHR1cmVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLGNBQWMsQ0FBQztBQUVqQyxPQUFPLEVBQXFCLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FB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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
3
|
import { AztecAddress, type FunctionSelector, type Gas } from '@aztec/circuits.js';
|
|
3
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
5
|
import { type WorldStateDB } from '../../public/public_db_sources.js';
|
|
@@ -47,54 +48,54 @@ export declare class AvmPersistableStateManager {
|
|
|
47
48
|
/**
|
|
48
49
|
* Write to public storage, journal/trace the write.
|
|
49
50
|
*
|
|
50
|
-
* @param
|
|
51
|
+
* @param contractAddress - the address of the contract whose storage is being written to
|
|
51
52
|
* @param slot - the slot in the contract's storage being written to
|
|
52
53
|
* @param value - the value being written to the slot
|
|
53
54
|
*/
|
|
54
|
-
writeStorage(
|
|
55
|
+
writeStorage(contractAddress: Fr, slot: Fr, value: Fr): void;
|
|
55
56
|
/**
|
|
56
57
|
* Read from public storage, trace the read.
|
|
57
58
|
*
|
|
58
|
-
* @param
|
|
59
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
59
60
|
* @param slot - the slot in the contract's storage being read from
|
|
60
61
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
61
62
|
*/
|
|
62
|
-
readStorage(
|
|
63
|
+
readStorage(contractAddress: Fr, slot: Fr): Promise<Fr>;
|
|
63
64
|
/**
|
|
64
65
|
* Read from public storage, don't trace the read.
|
|
65
66
|
*
|
|
66
|
-
* @param
|
|
67
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
67
68
|
* @param slot - the slot in the contract's storage being read from
|
|
68
69
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
69
70
|
*/
|
|
70
|
-
peekStorage(
|
|
71
|
+
peekStorage(contractAddress: Fr, slot: Fr): Promise<Fr>;
|
|
71
72
|
/**
|
|
72
73
|
* Check if a note hash exists at the given leaf index, trace the check.
|
|
73
74
|
*
|
|
74
|
-
* @param
|
|
75
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
75
76
|
* @param noteHash - the unsiloed note hash being checked
|
|
76
77
|
* @param leafIndex - the leaf index being checked
|
|
77
78
|
* @returns true if the note hash exists at the given leaf index, false otherwise
|
|
78
79
|
*/
|
|
79
|
-
checkNoteHashExists(
|
|
80
|
+
checkNoteHashExists(contractAddress: Fr, noteHash: Fr, leafIndex: Fr): Promise<boolean>;
|
|
80
81
|
/**
|
|
81
82
|
* Write a note hash, trace the write.
|
|
82
83
|
* @param noteHash - the unsiloed note hash to write
|
|
83
84
|
*/
|
|
84
|
-
writeNoteHash(
|
|
85
|
+
writeNoteHash(contractAddress: Fr, noteHash: Fr): void;
|
|
85
86
|
/**
|
|
86
87
|
* Check if a nullifier exists, trace the check.
|
|
87
|
-
* @param
|
|
88
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
88
89
|
* @param nullifier - the unsiloed nullifier to check
|
|
89
90
|
* @returns exists - whether the nullifier exists in the nullifier set
|
|
90
91
|
*/
|
|
91
|
-
checkNullifierExists(
|
|
92
|
+
checkNullifierExists(contractAddress: Fr, nullifier: Fr): Promise<boolean>;
|
|
92
93
|
/**
|
|
93
94
|
* Write a nullifier to the nullifier set, trace the write.
|
|
94
|
-
* @param
|
|
95
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
95
96
|
* @param nullifier - the unsiloed nullifier to write
|
|
96
97
|
*/
|
|
97
|
-
writeNullifier(
|
|
98
|
+
writeNullifier(contractAddress: Fr, nullifier: Fr): Promise<void>;
|
|
98
99
|
/**
|
|
99
100
|
* Check if an L1 to L2 message exists, trace the check.
|
|
100
101
|
* @param msgHash - the message hash to check existence of
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,90 +48,90 @@ export class AvmPersistableStateManager {
|
|
|
48
48
|
/**
|
|
49
49
|
* Write to public storage, journal/trace the write.
|
|
50
50
|
*
|
|
51
|
-
* @param
|
|
51
|
+
* @param contractAddress - the address of the contract whose storage is being written to
|
|
52
52
|
* @param slot - the slot in the contract's storage being written to
|
|
53
53
|
* @param value - the value being written to the slot
|
|
54
54
|
*/
|
|
55
|
-
writeStorage(
|
|
56
|
-
this.log.debug(`Storage write (address=${
|
|
55
|
+
writeStorage(contractAddress, slot, value) {
|
|
56
|
+
this.log.debug(`Storage write (address=${contractAddress}, slot=${slot}): value=${value}`);
|
|
57
57
|
// Cache storage writes for later reference/reads
|
|
58
|
-
this.publicStorage.write(
|
|
59
|
-
this.trace.tracePublicStorageWrite(
|
|
58
|
+
this.publicStorage.write(contractAddress, slot, value);
|
|
59
|
+
this.trace.tracePublicStorageWrite(contractAddress, slot, value);
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Read from public storage, trace the read.
|
|
63
63
|
*
|
|
64
|
-
* @param
|
|
64
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
65
65
|
* @param slot - the slot in the contract's storage being read from
|
|
66
66
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
67
67
|
*/
|
|
68
|
-
async readStorage(
|
|
69
|
-
const { value, exists, cached } = await this.publicStorage.read(
|
|
70
|
-
this.log.debug(`Storage read (address=${
|
|
71
|
-
this.trace.tracePublicStorageRead(
|
|
68
|
+
async readStorage(contractAddress, slot) {
|
|
69
|
+
const { value, exists, cached } = await this.publicStorage.read(contractAddress, slot);
|
|
70
|
+
this.log.debug(`Storage read (address=${contractAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
71
|
+
this.trace.tracePublicStorageRead(contractAddress, slot, value, exists, cached);
|
|
72
72
|
return Promise.resolve(value);
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
75
|
* Read from public storage, don't trace the read.
|
|
76
76
|
*
|
|
77
|
-
* @param
|
|
77
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
78
78
|
* @param slot - the slot in the contract's storage being read from
|
|
79
79
|
* @returns the latest value written to slot, or 0 if never written to before
|
|
80
80
|
*/
|
|
81
|
-
async peekStorage(
|
|
82
|
-
const { value, exists, cached } = await this.publicStorage.read(
|
|
83
|
-
this.log.debug(`Storage peek (address=${
|
|
81
|
+
async peekStorage(contractAddress, slot) {
|
|
82
|
+
const { value, exists, cached } = await this.publicStorage.read(contractAddress, slot);
|
|
83
|
+
this.log.debug(`Storage peek (address=${contractAddress}, slot=${slot}): value=${value}, exists=${exists}, cached=${cached}`);
|
|
84
84
|
return Promise.resolve(value);
|
|
85
85
|
}
|
|
86
86
|
// TODO(4886): We currently don't silo note hashes.
|
|
87
87
|
/**
|
|
88
88
|
* Check if a note hash exists at the given leaf index, trace the check.
|
|
89
89
|
*
|
|
90
|
-
* @param
|
|
90
|
+
* @param contractAddress - the address of the contract whose storage is being read from
|
|
91
91
|
* @param noteHash - the unsiloed note hash being checked
|
|
92
92
|
* @param leafIndex - the leaf index being checked
|
|
93
93
|
* @returns true if the note hash exists at the given leaf index, false otherwise
|
|
94
94
|
*/
|
|
95
|
-
async checkNoteHashExists(
|
|
95
|
+
async checkNoteHashExists(contractAddress, noteHash, leafIndex) {
|
|
96
96
|
const gotLeafValue = (await this.worldStateDB.getCommitmentValue(leafIndex.toBigInt())) ?? Fr.ZERO;
|
|
97
97
|
const exists = gotLeafValue.equals(noteHash);
|
|
98
|
-
this.log.debug(`noteHashes(${
|
|
98
|
+
this.log.debug(`noteHashes(${contractAddress})@${noteHash} ?? leafIndex: ${leafIndex} | gotLeafValue: ${gotLeafValue}, exists: ${exists}.`);
|
|
99
99
|
// TODO(8287): We still return exists here, but we need to transmit both the requested noteHash and the gotLeafValue
|
|
100
100
|
// such that the VM can constrain the equality and decide on exists based on that.
|
|
101
|
-
this.trace.traceNoteHashCheck(
|
|
101
|
+
this.trace.traceNoteHashCheck(contractAddress, gotLeafValue, leafIndex, exists);
|
|
102
102
|
return Promise.resolve(exists);
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Write a note hash, trace the write.
|
|
106
106
|
* @param noteHash - the unsiloed note hash to write
|
|
107
107
|
*/
|
|
108
|
-
writeNoteHash(
|
|
109
|
-
this.log.debug(`noteHashes(${
|
|
110
|
-
this.trace.traceNewNoteHash(
|
|
108
|
+
writeNoteHash(contractAddress, noteHash) {
|
|
109
|
+
this.log.debug(`noteHashes(${contractAddress}) += @${noteHash}.`);
|
|
110
|
+
this.trace.traceNewNoteHash(contractAddress, noteHash);
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
113
|
* Check if a nullifier exists, trace the check.
|
|
114
|
-
* @param
|
|
114
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
115
115
|
* @param nullifier - the unsiloed nullifier to check
|
|
116
116
|
* @returns exists - whether the nullifier exists in the nullifier set
|
|
117
117
|
*/
|
|
118
|
-
async checkNullifierExists(
|
|
119
|
-
const [exists, isPending, leafIndex] = await this.nullifiers.checkExists(
|
|
120
|
-
this.log.debug(`nullifiers(${
|
|
121
|
-
this.trace.traceNullifierCheck(
|
|
118
|
+
async checkNullifierExists(contractAddress, nullifier) {
|
|
119
|
+
const [exists, isPending, leafIndex] = await this.nullifiers.checkExists(contractAddress, nullifier);
|
|
120
|
+
this.log.debug(`nullifiers(${contractAddress})@${nullifier} ?? leafIndex: ${leafIndex}, exists: ${exists}, pending: ${isPending}.`);
|
|
121
|
+
this.trace.traceNullifierCheck(contractAddress, nullifier, leafIndex, exists, isPending);
|
|
122
122
|
return Promise.resolve(exists);
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
125
|
* Write a nullifier to the nullifier set, trace the write.
|
|
126
|
-
* @param
|
|
126
|
+
* @param contractAddress - address of the contract that the nullifier is associated with
|
|
127
127
|
* @param nullifier - the unsiloed nullifier to write
|
|
128
128
|
*/
|
|
129
|
-
async writeNullifier(
|
|
130
|
-
this.log.debug(`nullifiers(${
|
|
129
|
+
async writeNullifier(contractAddress, nullifier) {
|
|
130
|
+
this.log.debug(`nullifiers(${contractAddress}) += ${nullifier}.`);
|
|
131
131
|
// Cache pending nullifiers for later access
|
|
132
|
-
await this.nullifiers.append(
|
|
132
|
+
await this.nullifiers.append(contractAddress, nullifier);
|
|
133
133
|
// Trace all nullifier creations (even reverted ones)
|
|
134
|
-
this.trace.traceNewNullifier(
|
|
134
|
+
this.trace.traceNewNullifier(contractAddress, nullifier);
|
|
135
135
|
}
|
|
136
136
|
/**
|
|
137
137
|
* Check if an L1 to L2 message exists, trace the check.
|
|
@@ -178,7 +178,7 @@ export class AvmPersistableStateManager {
|
|
|
178
178
|
const aztecAddress = AztecAddress.fromField(contractAddress);
|
|
179
179
|
let instance = await this.worldStateDB.getContractInstance(aztecAddress);
|
|
180
180
|
if (instance === undefined) {
|
|
181
|
-
instance = SerializableContractInstance.
|
|
181
|
+
instance = SerializableContractInstance.default().withAddress(aztecAddress);
|
|
182
182
|
exists = false;
|
|
183
183
|
}
|
|
184
184
|
this.log.debug(`Get Contract instance (address=${contractAddress}): exists=${exists}, instance=${JSON.stringify(instance)}`);
|
|
@@ -211,4 +211,4 @@ export class AvmPersistableStateManager {
|
|
|
211
211
|
this.trace.traceNestedCall(nestedState.trace, nestedEnvironment, startGasLeft, endGasLeft, bytecode, avmCallResults, functionName);
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam91cm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9qb3VybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQW1DLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakgsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBTTNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTywwQkFBMEI7SUFHckM7SUFDRSxnQ0FBZ0M7SUFDZixZQUEwQjtJQUMzQyx3QkFBd0I7SUFDUCxLQUFxQztJQUN0RCw4Q0FBOEM7SUFDOUMsK0RBQStEO0lBQy9DLGFBQTRCO0lBQzVDLGtFQUFrRTtJQUNqRCxVQUE0QjtRQVA1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUUxQixVQUFLLEdBQUwsS0FBSyxDQUFnQztRQUd0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUUzQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQVg5QixRQUFHLEdBQUcsaUJBQWlCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQVkzRSxDQUFDO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQzFDLFlBQTBCLEVBQzFCLEtBQXFDLEVBQ3JDLHVCQUE2QjtRQUU3QixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLDhCQUE4QixDQUFDLFlBQVksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hILE9BQU8sSUFBSSwwQkFBMEIsQ0FDbkMsWUFBWSxFQUNa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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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlmaWVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdm0vam91cm5hbC9udWxsaWZpZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCO0lBQ0UsK0RBQStEO0lBQzlDLGNBQTZCO0lBQzlDLHlCQUF5QjtJQUNSLFFBQXdCLElBQUksY0FBYyxFQUFFO0lBQzdELCtDQUErQztJQUM5QixNQUF5QjtRQUp6QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUU3QixVQUFLLEdBQUwsS0FBSyxDQUF1QztRQUU1QyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtJQUN6QyxDQUFDO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsOEJBQThCLENBQUMsY0FBNkIsRUFBRSx1QkFBNkI7UUFDdkcsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMxRCxPQUFPLElBQUksZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDVCxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLGNBQWMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxlQUFtQixFQUFFLFNBQWE7UUFDaEUseUJBQXlCO1FBQ3pCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRSxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsK0VBQStFO1lBQy9FLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQ3RCLGVBQW1CLEVBQ25CLFNBQWE7UUFFYiw4Q0FBOEM7UUFDOUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRiw4REFBOEQ7UUFDOUQsa0ZBQWtGO1FBQ2xGLElBQUksU0FBUyxHQUF1QixTQUFTLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLG1FQUFtRTtZQUNuRSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsZUFBZSxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUM7UUFDMUQsU0FBUyxHQUFHLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQzVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBbUIsRUFBRSxTQUFhO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLEVBQUUsQUFBRCxFQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLHVCQUF1QixDQUMvQixhQUFhLFNBQVMsZ0JBQWdCLGVBQWUsMENBQTBDLENBQ2hHLENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFDLGtCQUFvQztRQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFTekI7O09BRUc7SUFDSCxZQUFZLGtCQUF5QjtRQVhyQzs7OztXQUlHO1FBQ0sscUJBQWdCLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDdkQscUJBQWdCLEdBQWdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFNaEQsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZUFBbUIsRUFBRSxTQUFhO1FBQzlDLE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUcsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxlQUFtQixFQUFFLFNBQWE7UUFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSx1QkFBdUIsQ0FDL0IsYUFBYSxTQUFTLGdCQUFnQixlQUFlLDJCQUEyQixDQUNqRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRiw0RkFBNEY7UUFDNUYsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDM0IscUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksY0FBYyxDQUFDLGtCQUFrQztRQUN0RCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDcEcsOERBQThEO1FBQzlELEtBQUssTUFBTSxDQUFDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0YsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN6Qiw4Q0FBOEM7Z0JBQzlDLHlEQUF5RDtnQkFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUN0RSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sdUVBQXVFO2dCQUN2RSxzRUFBc0U7Z0JBQ3RFLEtBQUssTUFBTSxTQUFTLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDaEQsSUFBSSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkMsTUFBTSxJQUFJLHVCQUF1QixDQUMvQix1REFBdUQsU0FBUywrQkFBK0IsZUFBZSxHQUFHLENBQ2xILENBQUM7b0JBQ0osQ0FBQztvQkFDRCxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxLQUFLO0lBQ2hELFlBQVksT0FBZSxFQUFFLEdBQUcsSUFBVztRQUN6QyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyx5QkFBeUIsQ0FBQztJQUN4QyxDQUFDO0NBQ0YifQ==
|
|
@@ -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"}
|