@aztec/pxe 1.2.1 → 2.0.0-nightly.20250813
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/config/package_info.js +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.d.ts +5 -2
- package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
- package/dest/contract_function_simulator/contract_function_simulator.js +48 -29
- package/dest/contract_function_simulator/index.d.ts +1 -0
- package/dest/contract_function_simulator/index.d.ts.map +1 -1
- package/dest/contract_function_simulator/index.js +1 -0
- package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/event_validation_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +1 -1
- package/dest/contract_function_simulator/noir-structs/note_validation_request.js +1 -1
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +22 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
- package/dest/contract_function_simulator/oracle/note_packing_utils.js +49 -0
- package/dest/contract_function_simulator/oracle/oracle.d.ts +44 -43
- package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/oracle.js +127 -106
- package/dest/contract_function_simulator/oracle/private_execution.d.ts +7 -2
- package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution.js +16 -11
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +41 -17
- package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/private_execution_oracle.js +51 -23
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts +48 -47
- package/dest/contract_function_simulator/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/typed_oracle.js +89 -87
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +31 -30
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
- package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +33 -30
- package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -1
- package/dest/contract_function_simulator/pxe_oracle_interface.js +6 -7
- package/dest/entrypoints/server/utils.d.ts +4 -2
- package/dest/entrypoints/server/utils.d.ts.map +1 -1
- package/dest/entrypoints/server/utils.js +4 -2
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +4 -4
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -1
- package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +58 -59
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +4 -0
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +1 -0
- package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +41 -0
- package/dest/private_kernel/hints/index.d.ts +1 -0
- package/dest/private_kernel/hints/index.d.ts.map +1 -1
- package/dest/private_kernel/hints/index.js +1 -0
- package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_execution_prover.js +13 -4
- package/dest/private_kernel/private_kernel_oracle.d.ts +1 -1
- package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -1
- package/dest/private_kernel/private_kernel_oracle_impl.js +6 -6
- package/dest/pxe_service/error_enriching.d.ts.map +1 -1
- package/dest/pxe_service/error_enriching.js +1 -0
- package/dest/pxe_service/pxe_service.d.ts +3 -2
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +28 -19
- package/dest/storage/capsule_data_provider/capsule_data_provider.js +1 -1
- package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -1
- package/dest/storage/note_data_provider/note_data_provider.js +16 -4
- package/package.json +16 -16
- package/src/config/package_info.ts +1 -1
- package/src/contract_function_simulator/contract_function_simulator.ts +67 -37
- package/src/contract_function_simulator/index.ts +1 -0
- package/src/contract_function_simulator/noir-structs/event_validation_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
- package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
- package/src/contract_function_simulator/noir-structs/note_validation_request.ts +1 -1
- package/src/contract_function_simulator/oracle/note_packing_utils.ts +52 -0
- package/src/contract_function_simulator/oracle/oracle.ts +149 -111
- package/src/contract_function_simulator/oracle/private_execution.ts +17 -12
- package/src/contract_function_simulator/oracle/private_execution_oracle.ts +60 -24
- package/src/contract_function_simulator/oracle/typed_oracle.ts +108 -92
- package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +34 -30
- package/src/contract_function_simulator/pxe_oracle_interface.ts +6 -8
- package/src/entrypoints/server/utils.ts +17 -6
- package/src/private_kernel/hints/build_private_kernel_reset_private_inputs.ts +106 -104
- package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
- package/src/private_kernel/hints/index.ts +1 -0
- package/src/private_kernel/private_kernel_execution_prover.ts +21 -4
- package/src/private_kernel/private_kernel_oracle.ts +1 -1
- package/src/private_kernel/private_kernel_oracle_impl.ts +12 -9
- package/src/pxe_service/error_enriching.ts +1 -0
- package/src/pxe_service/pxe_service.ts +30 -32
- package/src/storage/capsule_data_provider/capsule_data_provider.ts +1 -1
- package/src/storage/note_data_provider/note_data_provider.ts +27 -16
|
@@ -21,11 +21,14 @@ export declare class ContractFunctionSimulator {
|
|
|
21
21
|
* @param request - The transaction request.
|
|
22
22
|
* @param entryPointArtifact - The artifact of the entry point function.
|
|
23
23
|
* @param contractAddress - The address of the contract (should match request.origin)
|
|
24
|
-
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
24
|
+
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
25
|
+
* or a specific account.
|
|
26
|
+
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
27
|
+
* the `privateGetSenderForTags` oracle.
|
|
25
28
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
26
29
|
* @returns The result of the execution.
|
|
27
30
|
*/
|
|
28
|
-
run(request: TxExecutionRequest, contractAddress: AztecAddress, selector: FunctionSelector, msgSender?: AztecAddress, scopes?: AztecAddress[]): Promise<PrivateExecutionResult>;
|
|
31
|
+
run(request: TxExecutionRequest, contractAddress: AztecAddress, selector: FunctionSelector, msgSender?: AztecAddress, senderForTags?: AztecAddress, scopes?: AztecAddress[]): Promise<PrivateExecutionResult>;
|
|
29
32
|
/**
|
|
30
33
|
* Runs a utility function.
|
|
31
34
|
* @param call - The function call to execute.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAA+B,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAIL,KAAK,iCAAiC,EACtC,oCAAoC,
|
|
1
|
+
{"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAA+B,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAIL,KAAK,iCAAiC,EACtC,oCAAoC,EAKrC,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAGL,sBAAsB,EAEtB,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAQ1E;;GAEG;AACH,qBAAa,yBAAyB;IAIlC,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,SAAS;IAJnB,OAAO,CAAC,GAAG,CAAS;gBAGV,qBAAqB,EAAE,qBAAqB,EAC5C,SAAS,EAAE,gBAAgB;IAKrC;;;;;;;;;;;OAWG;IACU,GAAG,CACd,OAAO,EAAE,kBAAkB,EAC3B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,eAA6C,EACtD,aAAa,CAAC,EAAE,YAAY,EAC5B,MAAM,CAAC,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,sBAAsB,CAAC;IAiGlC;;;;;;;OAOG;IACU,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA0ClH,QAAQ;CAGT;AAYD;;;;;;;;;;;GAWG;AACH,wBAAsB,8BAA8B,CAClD,sBAAsB,EAAE,sBAAsB,EAC9C,cAAc,EAAE,EAAE,EAClB,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,iCAAiC,CAAC,oCAAoC,CAAC,CAAC,CA+LlF"}
|
|
@@ -11,7 +11,7 @@ import { FunctionSelector, FunctionType, decodeFromAbi } from '@aztec/stdlib/abi
|
|
|
11
11
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
12
12
|
import { Gas } from '@aztec/stdlib/gas';
|
|
13
13
|
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
14
|
-
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest,
|
|
14
|
+
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ScopedLogHash } from '@aztec/stdlib/kernel';
|
|
15
15
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
16
16
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
17
17
|
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
@@ -38,10 +38,13 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
38
38
|
* @param request - The transaction request.
|
|
39
39
|
* @param entryPointArtifact - The artifact of the entry point function.
|
|
40
40
|
* @param contractAddress - The address of the contract (should match request.origin)
|
|
41
|
-
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
41
|
+
* @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
|
|
42
|
+
* or a specific account.
|
|
43
|
+
* @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
|
|
44
|
+
* the `privateGetSenderForTags` oracle.
|
|
42
45
|
* @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
|
|
43
46
|
* @returns The result of the execution.
|
|
44
|
-
*/ async run(request, contractAddress, selector, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), scopes) {
|
|
47
|
+
*/ async run(request, contractAddress, selector, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), senderForTags, scopes) {
|
|
45
48
|
const simulatorSetupTimer = new Timer();
|
|
46
49
|
const header = await this.executionDataProvider.getBlockHeader();
|
|
47
50
|
await verifyCurrentClassId(contractAddress, this.executionDataProvider);
|
|
@@ -57,21 +60,24 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
57
60
|
const callContext = new CallContext(msgSender, contractAddress, await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters), entryPointArtifact.isStatic);
|
|
58
61
|
const txRequestHash = await request.toTxRequest().hash();
|
|
59
62
|
const noteCache = new ExecutionNoteCache(txRequestHash);
|
|
60
|
-
const privateExecutionOracle = new PrivateExecutionOracle(request.firstCallArgsHash, request.txContext, callContext, header, request.authWitnesses, request.capsules, HashedValuesCache.create(request.argsOfCalls), noteCache, this.executionDataProvider, this.simulator,
|
|
63
|
+
const privateExecutionOracle = new PrivateExecutionOracle(request.firstCallArgsHash, request.txContext, callContext, header, request.authWitnesses, request.capsules, HashedValuesCache.create(request.argsOfCalls), noteCache, this.executionDataProvider, this.simulator, 0, startSideEffectCounter, undefined, scopes, senderForTags);
|
|
61
64
|
const setupTime = simulatorSetupTimer.ms();
|
|
62
65
|
try {
|
|
66
|
+
// Note: any nested private function calls are made recursively within this
|
|
67
|
+
// function call. So this execution result is the result of executing _all_
|
|
68
|
+
// private functions of this tx (the results of those executions are contained
|
|
69
|
+
// within executionResult.nestedExecutionResults).
|
|
63
70
|
const executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, entryPointArtifact, contractAddress, request.functionSelector);
|
|
64
71
|
const simulatorTeardownTimer = new Timer();
|
|
65
72
|
const { usedTxRequestHashForNonces } = noteCache.finish();
|
|
66
73
|
const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
|
|
67
74
|
const publicCallRequests = collectNested([
|
|
68
75
|
executionResult
|
|
69
|
-
], (r)=>[
|
|
70
|
-
...r.publicInputs.publicCallRequests.map((r)=>r.inner),
|
|
76
|
+
], (r)=>r.publicInputs.publicCallRequests.getActiveItems().map((r)=>r.inner).concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [
|
|
71
77
|
r.publicInputs.publicTeardownCallRequest
|
|
72
|
-
])
|
|
78
|
+
]));
|
|
73
79
|
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
74
|
-
const calldata = await privateExecutionOracle.
|
|
80
|
+
const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
|
|
75
81
|
return new HashedValues(calldata, r.calldataHash);
|
|
76
82
|
}));
|
|
77
83
|
const teardownTime = simulatorTeardownTimer.ms();
|
|
@@ -79,6 +85,9 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
|
|
|
79
85
|
if (executionResult.profileResult) {
|
|
80
86
|
executionResult.profileResult.timings.witgen += setupTime + teardownTime;
|
|
81
87
|
}
|
|
88
|
+
// Not to be confused with a PrivateCallExecutionResult. This is a superset
|
|
89
|
+
// of the PrivateCallExecutionResult, containing also firstNullifierHint
|
|
90
|
+
// and publicFunctionsCalldata.
|
|
82
91
|
return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
|
|
83
92
|
} catch (err) {
|
|
84
93
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
@@ -146,7 +155,7 @@ class OrderedSideEffect {
|
|
|
146
155
|
* @param contractDataProvider - A provider for contract data in order to get function names and debug info.
|
|
147
156
|
* @returns The simulated proving result.
|
|
148
157
|
*/ export async function generateSimulatedProvingResult(privateExecutionResult, nonceGenerator, contractDataProvider) {
|
|
149
|
-
const
|
|
158
|
+
const siloedNoteHashes = [];
|
|
150
159
|
const nullifiers = [];
|
|
151
160
|
const taggedPrivateLogs = [];
|
|
152
161
|
const l2ToL1Messages = [];
|
|
@@ -154,34 +163,28 @@ class OrderedSideEffect {
|
|
|
154
163
|
const publicCallRequests = [];
|
|
155
164
|
const executionSteps = [];
|
|
156
165
|
let publicTeardownCallRequest;
|
|
157
|
-
let noteHashIndexInTx = 0;
|
|
158
166
|
const executions = [
|
|
159
167
|
privateExecutionResult.entrypoint
|
|
160
168
|
];
|
|
161
169
|
while(executions.length !== 0){
|
|
162
170
|
const execution = executions.shift();
|
|
163
|
-
executions.unshift(...execution.
|
|
171
|
+
executions.unshift(...execution.nestedExecutionResults);
|
|
164
172
|
const { contractAddress } = execution.publicInputs.callContext;
|
|
165
|
-
const noteHashesFromExecution = await Promise.all(execution.publicInputs.noteHashes.filter((noteHash)=>!noteHash.isEmpty()).map(async (noteHash)=>
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
// We could defer this to the public processor, and pass this in as non-revertible.
|
|
169
|
-
return new OrderedSideEffect(await computeUniqueNoteHash(nonce, siloedNoteHash), noteHash.counter);
|
|
170
|
-
}));
|
|
171
|
-
const nullifiersFromExecution = await Promise.all(execution.publicInputs.nullifiers.filter((nullifier)=>!nullifier.isEmpty()).map(async (nullifier)=>new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter)));
|
|
172
|
-
const privateLogsFromExecution = await Promise.all(execution.publicInputs.privateLogs.filter((privateLog)=>!privateLog.isEmpty()).map(async (metadata)=>{
|
|
173
|
+
const noteHashesFromExecution = await Promise.all(execution.publicInputs.noteHashes.getActiveItems().filter((noteHash)=>!noteHash.isEmpty()).map(async (noteHash)=>new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter)));
|
|
174
|
+
const nullifiersFromExecution = await Promise.all(execution.publicInputs.nullifiers.getActiveItems().map(async (nullifier)=>new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter)));
|
|
175
|
+
const privateLogsFromExecution = await Promise.all(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
|
|
173
176
|
metadata.log.fields[0] = await poseidon2Hash([
|
|
174
177
|
contractAddress,
|
|
175
178
|
metadata.log.fields[0]
|
|
176
179
|
]);
|
|
177
180
|
return new OrderedSideEffect(metadata.log, metadata.counter);
|
|
178
181
|
}));
|
|
179
|
-
|
|
182
|
+
siloedNoteHashes.push(...noteHashesFromExecution);
|
|
180
183
|
taggedPrivateLogs.push(...privateLogsFromExecution);
|
|
181
184
|
nullifiers.push(...nullifiersFromExecution);
|
|
182
|
-
l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.
|
|
183
|
-
contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.
|
|
184
|
-
publicCallRequests.push(...execution.publicInputs.publicCallRequests.
|
|
185
|
+
l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.getActiveItems().map((message)=>new OrderedSideEffect(message.message.scope(contractAddress), message.counter)));
|
|
186
|
+
contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.getActiveItems().map((contractClassLogHash)=>new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter)));
|
|
187
|
+
publicCallRequests.push(...execution.publicInputs.publicCallRequests.getActiveItems().map((callRequest)=>new OrderedSideEffect(callRequest.inner, callRequest.counter)));
|
|
185
188
|
if (publicTeardownCallRequest !== undefined && !execution.publicInputs.publicTeardownCallRequest.isEmpty()) {
|
|
186
189
|
throw new Error('Trying to set multiple teardown requests');
|
|
187
190
|
}
|
|
@@ -204,20 +207,36 @@ class OrderedSideEffect {
|
|
|
204
207
|
const sortByCounter = (a, b)=>a.counter - b.counter;
|
|
205
208
|
const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
|
|
206
209
|
const sortedNullifiers = nullifiers.sort(sortByCounter).map(getEffect);
|
|
210
|
+
// If the tx generated no nullifiers, the nonce generator (txRequest hash)
|
|
211
|
+
// is injected as the first nullifier as per protocol rules.
|
|
207
212
|
if (sortedNullifiers.length === 0) {
|
|
208
213
|
sortedNullifiers.push(nonceGenerator);
|
|
209
214
|
}
|
|
210
215
|
// Private only
|
|
211
216
|
if (privateExecutionResult.publicFunctionCalldata.length === 0) {
|
|
212
|
-
|
|
217
|
+
// In case the tx only contains private functions, we must make the note hashes unique by using the
|
|
218
|
+
// nonce generator and their index in the tx.
|
|
219
|
+
const uniqueNoteHashes = await Promise.all(siloedNoteHashes.sort(sortByCounter).map(async (orderedSideEffect, i)=>{
|
|
220
|
+
const siloedNoteHash = orderedSideEffect.sideEffect;
|
|
221
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, i);
|
|
222
|
+
const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
|
|
223
|
+
return uniqueNoteHash;
|
|
224
|
+
}));
|
|
225
|
+
const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(sortedNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes.sort(sortByCounter).map(getEffect), ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX));
|
|
213
226
|
inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
|
|
214
227
|
} else {
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
228
|
+
const nonRevertibleData = PrivateToPublicAccumulatedData.empty();
|
|
229
|
+
// The nullifier array contains the nonce generator in position 0
|
|
230
|
+
// Here we remove it from the revertible data and
|
|
231
|
+
// add it as the first non-revertible nullifier (we can't have dupes!)
|
|
232
|
+
// This is because public processor will use that first non-revertible nullifier
|
|
233
|
+
// as the nonce generator for the note hashes in the revertible part of the tx.
|
|
234
|
+
const [firstNullifier] = sortedNullifiers.splice(0, 1);
|
|
235
|
+
nonRevertibleData.nullifiers[0] = firstNullifier;
|
|
236
|
+
const revertibleData = new PrivateToPublicAccumulatedData(padArrayEnd(siloedNoteHashes.sort(sortByCounter).map(getEffect), Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(sortedNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes.sort(sortByCounter).map(getEffect), ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(publicCallRequests.sort(sortByCounter).map(getEffect), PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
|
|
237
|
+
inputsForPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleData, revertibleData, publicTeardownCallRequest ?? PublicCallRequest.empty());
|
|
219
238
|
}
|
|
220
|
-
const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData,
|
|
239
|
+
const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ new Gas(0, 0), /*feePayer=*/ AztecAddress.zero(), /*includeByTimestamp=*/ 0n, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
|
|
221
240
|
return {
|
|
222
241
|
publicInputs,
|
|
223
242
|
clientIvcProof: ClientIvcProof.empty(),
|
|
@@ -8,4 +8,5 @@ export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
|
8
8
|
export { Oracle } from './oracle/oracle.js';
|
|
9
9
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
10
10
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
11
|
+
export { packAsRetrievedNote } from './oracle/note_packing_utils.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAC1G,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -7,3 +7,4 @@ export { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
|
|
|
7
7
|
export { Oracle } from './oracle/oracle.js';
|
|
8
8
|
export { executePrivateFunction, extractPrivateCircuitPublicInputs } from './oracle/private_execution.js';
|
|
9
9
|
export { generateSimulatedProvingResult } from './contract_function_simulator.js';
|
|
10
|
+
export { packAsRetrievedNote } from './oracle/note_packing_utils.js';
|
|
@@ -4,7 +4,7 @@ import { EventSelector } from '@aztec/stdlib/abi';
|
|
|
4
4
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
5
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
6
6
|
/**
|
|
7
|
-
* Intermediate struct used to perform batch event validation by PXE. The `
|
|
7
|
+
* Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
|
|
8
8
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
9
9
|
*/
|
|
10
10
|
export declare class EventValidationRequest {
|
|
@@ -5,7 +5,7 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
5
5
|
// TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
|
|
6
6
|
const MAX_EVENT_SERIALIZED_LEN = 12;
|
|
7
7
|
/**
|
|
8
|
-
* Intermediate struct used to perform batch event validation by PXE. The `
|
|
8
|
+
* Intermediate struct used to perform batch event validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
|
|
9
9
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
10
10
|
*/ export class EventValidationRequest {
|
|
11
11
|
contractAddress;
|
|
@@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
2
2
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
/**
|
|
5
|
-
* Intermediate struct used to perform batch log retrieval by PXE. The `
|
|
5
|
+
* Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
|
|
6
6
|
* type to be stored in a `CapsuleArray`.
|
|
7
7
|
*/
|
|
8
8
|
export declare class LogRetrievalRequest {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FieldReader } from '@aztec/foundation/serialize';
|
|
2
2
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
/**
|
|
4
|
-
* Intermediate struct used to perform batch log retrieval by PXE. The `
|
|
4
|
+
* Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle expects values of this
|
|
5
5
|
* type to be stored in a `CapsuleArray`.
|
|
6
6
|
*/ export class LogRetrievalRequest {
|
|
7
7
|
contractAddress;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
3
3
|
/**
|
|
4
|
-
* Intermediate struct used to perform batch log retrieval by PXE. The `
|
|
4
|
+
* Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle stores values of this
|
|
5
5
|
* type in a `CapsuleArray`.
|
|
6
6
|
*/
|
|
7
7
|
export declare class LogRetrievalResponse {
|
|
@@ -3,7 +3,7 @@ import { range } from '@aztec/foundation/array';
|
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
const MAX_LOG_CONTENT_LEN = Math.max(PUBLIC_LOG_PLAINTEXT_LEN, PRIVATE_LOG_CIPHERTEXT_LEN);
|
|
5
5
|
/**
|
|
6
|
-
* Intermediate struct used to perform batch log retrieval by PXE. The `
|
|
6
|
+
* Intermediate struct used to perform batch log retrieval by PXE. The `utilityBulkRetrieveLogs` oracle stores values of this
|
|
7
7
|
* type in a `CapsuleArray`.
|
|
8
8
|
*/ export class LogRetrievalResponse {
|
|
9
9
|
logPayload;
|
|
@@ -3,7 +3,7 @@ import { FieldReader } from '@aztec/foundation/serialize';
|
|
|
3
3
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
4
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
5
5
|
/**
|
|
6
|
-
* Intermediate struct used to perform batch note validation by PXE. The `
|
|
6
|
+
* Intermediate struct used to perform batch note validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
|
|
7
7
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
8
8
|
*/
|
|
9
9
|
export declare class NoteValidationRequest {
|
|
@@ -4,7 +4,7 @@ import { TxHash } from '@aztec/stdlib/tx';
|
|
|
4
4
|
// TODO(#14617): should we compute this from constants? This value is aztec-nr specific.
|
|
5
5
|
const MAX_NOTE_PACKED_LEN = 12;
|
|
6
6
|
/**
|
|
7
|
-
* Intermediate struct used to perform batch note validation by PXE. The `
|
|
7
|
+
* Intermediate struct used to perform batch note validation by PXE. The `utilityValidateEnqueuedNotesAndEvents` oracle
|
|
8
8
|
* expects for values of this type to be stored in a `CapsuleArray`.
|
|
9
9
|
*/ export class NoteValidationRequest {
|
|
10
10
|
contractAddress;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
|
+
import type { Note } from '@aztec/stdlib/note';
|
|
4
|
+
/**
|
|
5
|
+
* Packs a note in a format that is compatible with the default Packable implementation of the retrieved note.
|
|
6
|
+
*
|
|
7
|
+
* @dev Unlike the default Packable implementation, this function first constructs the note metadata from the inputs
|
|
8
|
+
* and only after that it packs the retrieved note. Hence it doesn't map one to one with `RetrievedNote::pack()`.
|
|
9
|
+
*
|
|
10
|
+
* @param contractAddress - The address of the contract that owns the note
|
|
11
|
+
* @param noteNonce - The nonce injected into the note hash preimage by kernels.
|
|
12
|
+
* @param index - Optional index in the note hash tree. If undefined, indicates a transient note
|
|
13
|
+
* @param note - The note content containing the actual note data
|
|
14
|
+
* @returns The packed note as an array of field elements
|
|
15
|
+
*/
|
|
16
|
+
export declare function packAsRetrievedNote({ contractAddress, noteNonce, index, note, }: {
|
|
17
|
+
contractAddress: AztecAddress;
|
|
18
|
+
noteNonce: Fr;
|
|
19
|
+
index?: bigint;
|
|
20
|
+
note: Note;
|
|
21
|
+
}): (AztecAddress | Fr)[];
|
|
22
|
+
//# sourceMappingURL=note_packing_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"note_packing_utils.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/note_packing_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAiB/C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,eAAe,EACf,SAAS,EACT,KAAK,EACL,IAAI,GACL,EAAE;IACD,eAAe,EAAE,YAAY,CAAC;IAC9B,SAAS,EAAE,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;CACZ,yBAUA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
+
// TS equivalent of the `NoteMetadata::from_raw_data` function in `aztec/src/note/note_metadata.nr`
|
|
3
|
+
function fromRawData(nonzeroNoteHashCounter, maybeNoteNonce) {
|
|
4
|
+
if (nonzeroNoteHashCounter) {
|
|
5
|
+
if (maybeNoteNonce.equals(Fr.ZERO)) {
|
|
6
|
+
return {
|
|
7
|
+
stage: 1,
|
|
8
|
+
maybeNoteNonce
|
|
9
|
+
}; // PENDING_SAME_PHASE
|
|
10
|
+
} else {
|
|
11
|
+
return {
|
|
12
|
+
stage: 2,
|
|
13
|
+
maybeNoteNonce
|
|
14
|
+
}; // PENDING_PREVIOUS_PHASE
|
|
15
|
+
}
|
|
16
|
+
} else if (!maybeNoteNonce.equals(Fr.ZERO)) {
|
|
17
|
+
return {
|
|
18
|
+
stage: 3,
|
|
19
|
+
maybeNoteNonce
|
|
20
|
+
}; // SETTLED
|
|
21
|
+
} else {
|
|
22
|
+
throw new Error('Note has a zero note hash counter and no nonce - existence cannot be proven');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Packs a note in a format that is compatible with the default Packable implementation of the retrieved note.
|
|
27
|
+
*
|
|
28
|
+
* @dev Unlike the default Packable implementation, this function first constructs the note metadata from the inputs
|
|
29
|
+
* and only after that it packs the retrieved note. Hence it doesn't map one to one with `RetrievedNote::pack()`.
|
|
30
|
+
*
|
|
31
|
+
* @param contractAddress - The address of the contract that owns the note
|
|
32
|
+
* @param noteNonce - The nonce injected into the note hash preimage by kernels.
|
|
33
|
+
* @param index - Optional index in the note hash tree. If undefined, indicates a transient note
|
|
34
|
+
* @param note - The note content containing the actual note data
|
|
35
|
+
* @returns The packed note as an array of field elements
|
|
36
|
+
*/ export function packAsRetrievedNote({ contractAddress, noteNonce, index, note }) {
|
|
37
|
+
// If index is undefined, the note is transient which implies that the nonzero_note_hash_counter has to be true
|
|
38
|
+
const noteIsTransient = index === undefined;
|
|
39
|
+
const nonzeroNoteHashCounter = noteIsTransient ? true : false;
|
|
40
|
+
// To pack the note as retrieved note we first need to reconstruct the note metadata.
|
|
41
|
+
const noteMetadata = fromRawData(nonzeroNoteHashCounter, noteNonce);
|
|
42
|
+
// Pack metadata first (stage and maybe_note_nonce), followed by the rest
|
|
43
|
+
return [
|
|
44
|
+
...note.items,
|
|
45
|
+
contractAddress,
|
|
46
|
+
new Fr(noteMetadata.stage),
|
|
47
|
+
noteMetadata.maybeNoteNonce
|
|
48
|
+
];
|
|
49
|
+
}
|
|
@@ -7,48 +7,49 @@ export declare class Oracle {
|
|
|
7
7
|
private typedOracle;
|
|
8
8
|
constructor(typedOracle: TypedOracle);
|
|
9
9
|
toACIRCallback(): ACIRCallback;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
10
|
+
utilityGetRandomField(): Promise<ACVMField[]>;
|
|
11
|
+
privateStoreInExecutionCache(_length: ACVMField[], values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]>;
|
|
12
|
+
privateLoadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]>;
|
|
13
|
+
utilityGetBlockNumber(): Promise<ACVMField[]>;
|
|
14
|
+
utilityGetTimestamp(): Promise<ACVMField[]>;
|
|
15
|
+
utilityGetContractAddress(): Promise<ACVMField[]>;
|
|
16
|
+
utilityGetVersion(): Promise<ACVMField[]>;
|
|
17
|
+
utilityGetChainId(): Promise<ACVMField[]>;
|
|
18
|
+
utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]>;
|
|
19
|
+
utilityGetContractInstance([address]: ACVMField[]): Promise<ACVMField[]>;
|
|
20
|
+
utilityGetMembershipWitness([blockNumber]: ACVMField[], [treeId]: ACVMField[], [leafValue]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
21
|
+
utilityGetNullifierMembershipWitness([blockNumber]: ACVMField[], [nullifier]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
22
|
+
utilityGetLowNullifierMembershipWitness([blockNumber]: ACVMField[], [nullifier]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
23
|
+
utilityGetPublicDataWitness([blockNumber]: ACVMField[], [leafSlot]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
24
|
+
utilityGetBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]>;
|
|
25
|
+
utilityGetAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]>;
|
|
26
|
+
utilityGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<ACVMField[][]>;
|
|
27
|
+
utilityGetNotes([storageSlot]: ACVMField[], [numSelects]: ACVMField[], selectByIndexes: ACVMField[], selectByOffsets: ACVMField[], selectByLengths: ACVMField[], selectValues: ACVMField[], selectComparators: ACVMField[], sortByIndexes: ACVMField[], sortByOffsets: ACVMField[], sortByLengths: ACVMField[], sortOrder: ACVMField[], [limit]: ACVMField[], [offset]: ACVMField[], [status]: ACVMField[], [maxNotes]: ACVMField[], [packedRetrievedNoteLength]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
28
|
+
privateNotifyCreatedNote([storageSlot]: ACVMField[], [noteTypeId]: ACVMField[], note: ACVMField[], [noteHash]: ACVMField[], [counter]: ACVMField[]): Promise<ACVMField[]>;
|
|
29
|
+
privateNotifyNullifiedNote([innerNullifier]: ACVMField[], [noteHash]: ACVMField[], [counter]: ACVMField[]): Promise<ACVMField[]>;
|
|
30
|
+
privateNotifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]>;
|
|
31
|
+
utilityCheckNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]>;
|
|
32
|
+
utilityGetL1ToL2MembershipWitness([contractAddress]: ACVMField[], [messageHash]: ACVMField[], [secret]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
33
|
+
utilityStorageRead([contractAddress]: ACVMField[], [startStorageSlot]: ACVMField[], [blockNumber]: ACVMField[], [numberOfElements]: ACVMField[]): Promise<ACVMField[][]>;
|
|
34
|
+
privateNotifyCreatedContractClassLog([contractAddress]: ACVMField[], message: ACVMField[], [length]: ACVMField[], [counter]: ACVMField[]): Promise<ACVMField[]>;
|
|
35
|
+
utilityDebugLog(message: ACVMField[], _ignoredFieldsSize: ACVMField[], fields: ACVMField[]): Promise<ACVMField[]>;
|
|
36
|
+
privateCallPrivateFunction([contractAddress]: ACVMField[], [functionSelector]: ACVMField[], [argsHash]: ACVMField[], [sideEffectCounter]: ACVMField[], [isStaticCall]: ACVMField[]): Promise<ACVMField[][]>;
|
|
37
|
+
privateNotifyEnqueuedPublicFunctionCall([contractAddress]: ACVMField[], [calldataHash]: ACVMField[], [sideEffectCounter]: ACVMField[], [isStaticCall]: ACVMField[]): Promise<ACVMField[]>;
|
|
38
|
+
privateNotifySetPublicTeardownFunctionCall([contractAddress]: ACVMField[], [calldataHash]: ACVMField[], [sideEffectCounter]: ACVMField[], [isStaticCall]: ACVMField[]): Promise<ACVMField[]>;
|
|
39
|
+
privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<ACVMField[]>;
|
|
40
|
+
utilityGetIndexedTaggingSecretAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]>;
|
|
41
|
+
privateIncrementAppTaggingSecretIndexAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]>;
|
|
42
|
+
utilityFetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]>;
|
|
43
|
+
utilityValidateEnqueuedNotesAndEvents([contractAddress]: ACVMField[], [noteValidationRequestsArrayBaseSlot]: ACVMField[], [eventValidationRequestsArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]>;
|
|
44
|
+
utilityBulkRetrieveLogs([contractAddress]: ACVMField[], [logRetrievalRequestsArrayBaseSlot]: ACVMField[], [logRetrievalResponsesArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]>;
|
|
45
|
+
utilityStoreCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[], capsule: ACVMField[]): Promise<ACVMField[]>;
|
|
46
|
+
utilityLoadCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[], [tSize]: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
47
|
+
utilityDeleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]>;
|
|
48
|
+
utilityCopyCapsule([contractAddress]: ACVMField[], [srcSlot]: ACVMField[], [dstSlot]: ACVMField[], [numEntries]: ACVMField[]): Promise<ACVMField[]>;
|
|
49
|
+
utilityAes128Decrypt(ciphertextBVecStorage: ACVMField[], [ciphertextLength]: ACVMField[], iv: ACVMField[], symKey: ACVMField[]): Promise<(ACVMField | ACVMField[])[]>;
|
|
50
|
+
utilityGetSharedSecret([address]: ACVMField[], [ephPKField0]: ACVMField[], [ephPKField1]: ACVMField[], [ephPKField2]: ACVMField[]): Promise<ACVMField[]>;
|
|
51
|
+
utilityEmitOffchainEffect(data: ACVMField[]): Promise<never[]>;
|
|
52
|
+
privateGetSenderForTags(): Promise<ACVMField[]>;
|
|
53
|
+
privateSetSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]>;
|
|
53
54
|
}
|
|
54
55
|
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/oracle.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EAMf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../../src/contract_function_simulator/oracle/oracle.ts"],"names":[],"mappings":"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"}
|