@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
package/dest/public/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/public/db.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE5F;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE/F;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CAClF;AAED,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/public/db.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5E;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE5F;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAE/F;;;;OAIG;IACH,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;CAClF;AAED,6GAA6G;AAC7G,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,0BAA0B,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAE5G;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAEhE;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE9D;;;;OAIG;IACH,0CAA0C,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;CAC5G"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FunctionL2Logs } from '@aztec/circuit-types';
|
|
2
|
-
import { AztecAddress, CallContext, ContractStorageRead, ContractStorageUpdateRequest, Fr, FunctionData, PublicDataRead, PublicDataUpdateRequest, SideEffect, SideEffectLinkedToNoteHash } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecAddress, CallContext, ContractStorageRead, ContractStorageUpdateRequest, Fr, FunctionData, L2ToL1Message, PublicDataRead, PublicDataUpdateRequest, SideEffect, SideEffectLinkedToNoteHash } from '@aztec/circuits.js';
|
|
3
3
|
/**
|
|
4
4
|
* The public function execution result.
|
|
5
5
|
*/
|
|
@@ -8,10 +8,10 @@ export interface PublicExecutionResult {
|
|
|
8
8
|
execution: PublicExecution;
|
|
9
9
|
/** The return values of the function. */
|
|
10
10
|
returnValues: Fr[];
|
|
11
|
-
/** The new
|
|
12
|
-
|
|
11
|
+
/** The new note hashes to be inserted into the note hashes tree. */
|
|
12
|
+
newNoteHashes: SideEffect[];
|
|
13
13
|
/** The new l2 to l1 messages generated in this call. */
|
|
14
|
-
newL2ToL1Messages:
|
|
14
|
+
newL2ToL1Messages: L2ToL1Message[];
|
|
15
15
|
/** The new nullifiers to be inserted into the nullifier tree. */
|
|
16
16
|
newNullifiers: SideEffectLinkedToNoteHash[];
|
|
17
17
|
/** The contract storage reads performed by the function. */
|
|
@@ -59,4 +59,9 @@ export declare function collectPublicDataReads(execResult: PublicExecutionResult
|
|
|
59
59
|
* @returns All public data reads (in execution order).
|
|
60
60
|
*/
|
|
61
61
|
export declare function collectPublicDataUpdateRequests(execResult: PublicExecutionResult): PublicDataUpdateRequest[];
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether the child execution result is valid for a static call (no state modifications).
|
|
64
|
+
* @param executionResult - The execution result of a public function
|
|
65
|
+
*/
|
|
66
|
+
export declare function checkValidStaticCall(newNoteHashes: SideEffect[], newNullifiers: SideEffectLinkedToNoteHash[], contractStorageUpdateRequests: ContractStorageUpdateRequest[], newL2ToL1Messages: L2ToL1Message[], unencryptedLogs: FunctionL2Logs): void;
|
|
62
67
|
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,4BAA4B,EAC5B,EAAE,EACF,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,SAAS,EAAE,eAAe,CAAC;IAC3B,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,oEAAoE;IACpE,
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,4BAA4B,EAC5B,EAAE,EACF,YAAY,EACZ,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,UAAU,EACV,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,SAAS,EAAE,eAAe,CAAC;IAC3B,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,oEAAoE;IACpE,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,wDAAwD;IACxD,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,iEAAiE;IACjE,aAAa,EAAE,0BAA0B,EAAE,CAAC;IAC5C,4DAA4D;IAC5D,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,sEAAsE;IACtE,6BAA6B,EAAE,4BAA4B,EAAE,CAAC;IAC9D,mCAAmC;IACnC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB;;;OAGG;IACH,eAAe,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,eAAe,EAAE,YAAY,CAAC;IAC9B,6CAA6C;IAC7C,YAAY,EAAE,YAAY,CAAC;IAC3B,8BAA8B;IAC9B,IAAI,EAAE,EAAE,EAAE,CAAC;IACX,2BAA2B;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,GAAG,qBAAqB,GAC7C,KAAK,IAAI,qBAAqB,CAEhC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,qBAAqB,GAAG,cAAc,EAAE,CAY1F;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,qBAAqB,GAAG,uBAAuB,EAAE,CAY5G;AAiCD;;;GAGG;AAEH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,UAAU,EAAE,EAC3B,aAAa,EAAE,0BAA0B,EAAE,EAC3C,6BAA6B,EAAE,4BAA4B,EAAE,EAC7D,iBAAiB,EAAE,aAAa,EAAE,EAClC,eAAe,EAAE,cAAc,QAWhC"}
|
package/dest/public/execution.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicDataRead, PublicDataUpdateRequest, } from '@aztec/circuits.js';
|
|
2
|
-
import { computePublicDataTreeLeafSlot, computePublicDataTreeValue } from '@aztec/circuits.js/
|
|
2
|
+
import { computePublicDataTreeLeafSlot, computePublicDataTreeValue } from '@aztec/circuits.js/hash';
|
|
3
3
|
/**
|
|
4
4
|
* Returns if the input is a public execution result and not just a public execution.
|
|
5
5
|
* @param input - Public execution or public execution result.
|
|
@@ -16,7 +16,7 @@ export function isPublicExecutionResult(input) {
|
|
|
16
16
|
*/
|
|
17
17
|
export function collectPublicDataReads(execResult) {
|
|
18
18
|
// HACK(#1622): part of temporary hack - may be able to remove this function after public state ordering is fixed
|
|
19
|
-
const contractAddress = execResult.execution.
|
|
19
|
+
const contractAddress = execResult.execution.callContext.storageContractAddress;
|
|
20
20
|
const thisExecPublicDataReads = execResult.contractStorageReads.map(read => contractStorageReadToPublicDataRead(read, contractAddress));
|
|
21
21
|
const unsorted = [
|
|
22
22
|
...thisExecPublicDataReads,
|
|
@@ -32,7 +32,7 @@ export function collectPublicDataReads(execResult) {
|
|
|
32
32
|
*/
|
|
33
33
|
export function collectPublicDataUpdateRequests(execResult) {
|
|
34
34
|
// HACK(#1622): part of temporary hack - may be able to remove this function after public state ordering is fixed
|
|
35
|
-
const contractAddress = execResult.execution.
|
|
35
|
+
const contractAddress = execResult.execution.callContext.storageContractAddress;
|
|
36
36
|
const thisExecPublicDataUpdateRequests = execResult.contractStorageUpdateRequests.map(update => contractStorageUpdateRequestToPublicDataUpdateRequest(update, contractAddress));
|
|
37
37
|
const unsorted = [
|
|
38
38
|
...thisExecPublicDataUpdateRequests,
|
|
@@ -58,4 +58,17 @@ function contractStorageReadToPublicDataRead(read, contractAddress) {
|
|
|
58
58
|
function contractStorageUpdateRequestToPublicDataUpdateRequest(update, contractAddress) {
|
|
59
59
|
return new PublicDataUpdateRequest(computePublicDataTreeLeafSlot(contractAddress, update.storageSlot), computePublicDataTreeValue(update.newValue), update.sideEffectCounter);
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Checks whether the child execution result is valid for a static call (no state modifications).
|
|
63
|
+
* @param executionResult - The execution result of a public function
|
|
64
|
+
*/
|
|
65
|
+
export function checkValidStaticCall(newNoteHashes, newNullifiers, contractStorageUpdateRequests, newL2ToL1Messages, unencryptedLogs) {
|
|
66
|
+
if (contractStorageUpdateRequests.length > 0 ||
|
|
67
|
+
newNoteHashes.length > 0 ||
|
|
68
|
+
newNullifiers.length > 0 ||
|
|
69
|
+
newL2ToL1Messages.length > 0 ||
|
|
70
|
+
unencryptedLogs.logs.length > 0) {
|
|
71
|
+
throw new Error('Static call cannot update the state, emit L2->L1 messages or generate logs');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQVFMLGNBQWMsRUFDZCx1QkFBdUIsR0FHeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQTJDcEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsS0FBOEM7SUFFOUMsT0FBTyxDQUFDLENBQUUsS0FBK0IsQ0FBQyxTQUFTLENBQUM7QUFDdEQsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFVBQWlDO0lBQ3RFLGlIQUFpSDtJQUNqSCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQztJQUVoRixNQUFNLHVCQUF1QixHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDekUsbUNBQW1DLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUMzRCxDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUc7UUFDZixHQUFHLHVCQUF1QjtRQUMxQixHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0RixDQUFDO0lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFrQixHQUFHLENBQUMsQ0FBQyxpQkFBa0IsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxVQUFpQztJQUMvRSxpSEFBaUg7SUFDakgsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUM7SUFFaEYsTUFBTSxnQ0FBZ0MsR0FBRyxVQUFVLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQzdGLHFEQUFxRCxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FDL0UsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHO1FBQ2YsR0FBRyxnQ0FBZ0M7UUFDbkMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDL0YsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBa0IsR0FBRyxDQUFDLENBQUMsaUJBQWtCLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLG1DQUFtQyxDQUFDLElBQXlCLEVBQUUsZUFBNkI7SUFDbkcsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsNkJBQTZCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDaEUsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM3QyxJQUFJLENBQUMsaUJBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLHFEQUFxRCxDQUM1RCxNQUFvQyxFQUNwQyxlQUE2QjtJQUU3QixPQUFPLElBQUksdUJBQXVCLENBQ2hDLDZCQUE2QixDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQ2xFLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDM0MsTUFBTSxDQUFDLGlCQUFrQixDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUVILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsYUFBMkIsRUFDM0IsYUFBMkMsRUFDM0MsNkJBQTZELEVBQzdELGlCQUFrQyxFQUNsQyxlQUErQjtJQUUvQixJQUNFLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3hDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUN4QixhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDeEIsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDNUIsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMvQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/public/executor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAA6B,MAAM,oBAAoB,CAAC;AAiBxF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/public/executor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAA6B,MAAM,oBAAoB,CAAC;AAiBxF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAwB,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,8CAAwD,GAC1D,OAAO,CAAC,qBAAqB,CAAC,CA6DhC;AAED;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM;IAGjC;;;;;OAKG;IACU,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA6CnH;;;;;OAKG;IACU,WAAW,CACtB,SAAS,EAAE,eAAe,EAC1B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,qBAAqB,CAAC;CAelC"}
|
package/dest/public/executor.js
CHANGED
|
@@ -5,12 +5,13 @@ import { AvmContext } from '../avm/avm_context.js';
|
|
|
5
5
|
import { AvmMachineState } from '../avm/avm_machine_state.js';
|
|
6
6
|
import { AvmSimulator } from '../avm/avm_simulator.js';
|
|
7
7
|
import { HostStorage } from '../avm/journal/host_storage.js';
|
|
8
|
-
import {
|
|
8
|
+
import { AvmPersistableStateManager } from '../avm/journal/index.js';
|
|
9
9
|
import { temporaryConvertAvmResults, temporaryCreateAvmExecutionEnvironment, } from '../avm/temporary_executor_migration.js';
|
|
10
10
|
import { ExecutionError, createSimulationError } from '../common/errors.js';
|
|
11
11
|
import { SideEffectCounter } from '../common/index.js';
|
|
12
12
|
import { PackedArgsCache } from '../common/packed_args_cache.js';
|
|
13
13
|
import { AcirSimulator } from '../index.js';
|
|
14
|
+
import { checkValidStaticCall } from './execution.js';
|
|
14
15
|
import { PublicExecutionContext } from './public_execution_context.js';
|
|
15
16
|
/**
|
|
16
17
|
* Execute a public function and return the execution result.
|
|
@@ -29,19 +30,22 @@ export async function executePublicFunction(context, acir, log = createDebugLogg
|
|
|
29
30
|
}, extractCallStack(err), { cause: err });
|
|
30
31
|
});
|
|
31
32
|
const returnWitness = extractReturnWitness(acir, partialWitness);
|
|
32
|
-
const { returnValues, newL2ToL1Msgs,
|
|
33
|
-
const newL2ToL1Messages = newL2ToL1Msgs.filter(v => !v.
|
|
34
|
-
const
|
|
33
|
+
const { returnValues, newL2ToL1Msgs, newNoteHashes: newNoteHashesPadded, newNullifiers: newNullifiersPadded, } = PublicCircuitPublicInputs.fromFields(returnWitness);
|
|
34
|
+
const newL2ToL1Messages = newL2ToL1Msgs.filter(v => !v.isEmpty());
|
|
35
|
+
const newNoteHashes = newNoteHashesPadded.filter(v => !v.isEmpty());
|
|
35
36
|
const newNullifiers = newNullifiersPadded.filter(v => !v.isEmpty());
|
|
36
37
|
const { contractStorageReads, contractStorageUpdateRequests } = context.getStorageActionData();
|
|
37
38
|
log(`Contract storage reads: ${contractStorageReads
|
|
38
39
|
.map(r => r.toFriendlyJSON() + ` - sec: ${r.sideEffectCounter}`)
|
|
39
40
|
.join(', ')}`);
|
|
41
|
+
log(`Contract storage update requests: ${contractStorageUpdateRequests
|
|
42
|
+
.map(r => r.toFriendlyJSON() + ` - sec: ${r.sideEffectCounter}`)
|
|
43
|
+
.join(', ')}`);
|
|
40
44
|
const nestedExecutions = context.getNestedExecutions();
|
|
41
45
|
const unencryptedLogs = context.getUnencryptedLogs();
|
|
42
46
|
return {
|
|
43
47
|
execution,
|
|
44
|
-
|
|
48
|
+
newNoteHashes,
|
|
45
49
|
newL2ToL1Messages,
|
|
46
50
|
newNullifiers,
|
|
47
51
|
contractStorageReads,
|
|
@@ -78,12 +82,17 @@ export class PublicExecutor {
|
|
|
78
82
|
const packedArgs = PackedArgsCache.create([]);
|
|
79
83
|
const sideEffectCounter = new SideEffectCounter();
|
|
80
84
|
const context = new PublicExecutionContext(execution, this.header, globalVariables, packedArgs, sideEffectCounter, this.stateDb, this.contractsDb, this.commitmentsDb);
|
|
85
|
+
let executionResult;
|
|
81
86
|
try {
|
|
82
|
-
|
|
87
|
+
executionResult = await executePublicFunction(context, acir);
|
|
83
88
|
}
|
|
84
89
|
catch (err) {
|
|
85
90
|
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during public execution'));
|
|
86
91
|
}
|
|
92
|
+
if (executionResult.execution.callContext.isStaticCall) {
|
|
93
|
+
checkValidStaticCall(executionResult.newNoteHashes, executionResult.newNullifiers, executionResult.contractStorageUpdateRequests, executionResult.newL2ToL1Messages, executionResult.unencryptedLogs);
|
|
94
|
+
}
|
|
95
|
+
return executionResult;
|
|
87
96
|
}
|
|
88
97
|
/**
|
|
89
98
|
* Executes a public execution request in the avm.
|
|
@@ -95,14 +104,14 @@ export class PublicExecutor {
|
|
|
95
104
|
// Temporary code to construct the AVM context
|
|
96
105
|
// These data structures will permiate across the simulator when the public executor is phased out
|
|
97
106
|
const hostStorage = new HostStorage(this.stateDb, this.contractsDb, this.commitmentsDb);
|
|
98
|
-
const worldStateJournal = new
|
|
107
|
+
const worldStateJournal = new AvmPersistableStateManager(hostStorage);
|
|
99
108
|
const executionEnv = temporaryCreateAvmExecutionEnvironment(execution, globalVariables);
|
|
100
109
|
const machineState = new AvmMachineState(0, 0, 0);
|
|
101
110
|
const context = new AvmContext(worldStateJournal, executionEnv, machineState);
|
|
102
111
|
const simulator = new AvmSimulator(context);
|
|
103
112
|
const result = await simulator.execute();
|
|
104
|
-
const newWorldState = context.
|
|
113
|
+
const newWorldState = context.persistableState.flush();
|
|
105
114
|
return temporaryConvertAvmResults(execution, newWorldState, result);
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHNDQUFzQyxHQUN2QyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEVBQTBDLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkU7O0dBRUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxPQUErQixFQUMvQixJQUFZ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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FunctionL2Logs, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
1
|
+
import { FunctionL2Logs, NullifierMembershipWitness, UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
2
|
import { FunctionSelector, GlobalVariables, Header } from '@aztec/circuits.js';
|
|
3
3
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
@@ -63,10 +63,10 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
63
63
|
packArguments(args: Fr[]): Promise<Fr>;
|
|
64
64
|
/**
|
|
65
65
|
* Fetches the a message from the db, given its key.
|
|
66
|
-
* @param
|
|
66
|
+
* @param entryKey - A buffer representing the entry key.
|
|
67
67
|
* @returns The l1 to l2 message data
|
|
68
68
|
*/
|
|
69
|
-
|
|
69
|
+
getL1ToL2MembershipWitness(entryKey: Fr): Promise<import("../acvm/index.js").MessageLoadOracleInputs<16>>;
|
|
70
70
|
/**
|
|
71
71
|
* Emit an unencrypted log.
|
|
72
72
|
* @param log - The unencrypted log to be emitted.
|
|
@@ -98,6 +98,7 @@ export declare class PublicExecutionContext extends TypedOracle {
|
|
|
98
98
|
* @param argsHash - The packed arguments to pass to the function.
|
|
99
99
|
* @returns The return values of the public function.
|
|
100
100
|
*/
|
|
101
|
-
callPublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr): Promise<Fr[]>;
|
|
101
|
+
callPublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, isStaticCall: boolean, isDelegateCall: boolean): Promise<Fr[]>;
|
|
102
|
+
getNullifierMembershipWitness(blockNumber: number, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
|
|
102
103
|
}
|
|
103
104
|
//# sourceMappingURL=public_execution_context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_execution_context.d.ts","sourceRoot":"","sources":["../../src/public/public_execution_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"public_execution_context.d.ts","sourceRoot":"","sources":["../../src/public/public_execution_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAA6B,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAwB,MAAM,gBAAgB,CAAC;AAI9F;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,WAAW;IAMnD;;OAEG;aACa,SAAS,EAAE,eAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,GAAG;IAhBb,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,eAAe,CAA0B;;IAG/C;;OAEG;IACa,SAAS,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EACrC,GAAG,8CAAgE;IAM7E;;;;;;;;OAQG;IACI,iBAAiB,CAAC,iBAAiB,SAAI;IAO9C;;OAEG;IACI,mBAAmB;IAI1B;;OAEG;IACI,kBAAkB;IAIzB;;OAEG;IACI,oBAAoB;;;;IAK3B;;;OAGG;IACI,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAI7C;;;;OAIG;IACU,0BAA0B,CAAC,QAAQ,EAAE,EAAE;IAIpD;;;OAGG;IACI,kBAAkB,CAAC,GAAG,EAAE,gBAAgB;IAM/C;;;;;OAKG;IACU,wBAAwB,CAAC,eAAe,EAAE,YAAY;IAInE;;;;OAIG;IACU,WAAW,CAAC,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM;IAYvE;;;;OAIG;IACU,YAAY,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAc5D;;;;;;OAMG;IACU,kBAAkB,CAC7B,qBAAqB,EAAE,YAAY,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,EAAE,EACZ,YAAY,EAAE,OAAO,EACrB,cAAc,EAAE,OAAO;IAoEZ,6BAA6B,CACxC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;CAMnD"}
|
|
@@ -4,6 +4,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
4
4
|
import { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { TypedOracle, toACVMWitness } from '../acvm/index.js';
|
|
7
|
+
import { checkValidStaticCall } from './execution.js';
|
|
7
8
|
import { executePublicFunction } from './executor.js';
|
|
8
9
|
import { ContractStorageActionsCollector } from './state_actions.js';
|
|
9
10
|
/**
|
|
@@ -27,7 +28,7 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
27
28
|
this.log = log;
|
|
28
29
|
this.nestedExecutions = [];
|
|
29
30
|
this.unencryptedLogs = [];
|
|
30
|
-
this.storageActions = new ContractStorageActionsCollector(stateDb, execution.
|
|
31
|
+
this.storageActions = new ContractStorageActionsCollector(stateDb, execution.callContext.storageContractAddress);
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
33
34
|
* Generates the initial witness for a public function.
|
|
@@ -71,11 +72,11 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
71
72
|
}
|
|
72
73
|
/**
|
|
73
74
|
* Fetches the a message from the db, given its key.
|
|
74
|
-
* @param
|
|
75
|
+
* @param entryKey - A buffer representing the entry key.
|
|
75
76
|
* @returns The l1 to l2 message data
|
|
76
77
|
*/
|
|
77
|
-
async
|
|
78
|
-
return await this.commitmentsDb.
|
|
78
|
+
async getL1ToL2MembershipWitness(entryKey) {
|
|
79
|
+
return await this.commitmentsDb.getL1ToL2MembershipWitness(entryKey);
|
|
79
80
|
}
|
|
80
81
|
/**
|
|
81
82
|
* Emit an unencrypted log.
|
|
@@ -119,11 +120,11 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
119
120
|
async storageWrite(startStorageSlot, values) {
|
|
120
121
|
const newValues = [];
|
|
121
122
|
for (let i = 0; i < values.length; i++) {
|
|
122
|
-
const storageSlot = new Fr(startStorageSlot.
|
|
123
|
+
const storageSlot = new Fr(startStorageSlot.toBigInt() + BigInt(i));
|
|
123
124
|
const newValue = values[i];
|
|
124
125
|
const sideEffectCounter = this.sideEffectCounter.count();
|
|
125
126
|
this.storageActions.write(storageSlot, newValue, sideEffectCounter);
|
|
126
|
-
await this.stateDb.storageWrite(this.execution.
|
|
127
|
+
await this.stateDb.storageWrite(this.execution.callContext.storageContractAddress, storageSlot, newValue);
|
|
127
128
|
this.log(`Oracle storage write: slot=${storageSlot.toString()} value=${newValue.toString()}`);
|
|
128
129
|
newValues.push(newValue);
|
|
129
130
|
}
|
|
@@ -136,7 +137,8 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
136
137
|
* @param argsHash - The packed arguments to pass to the function.
|
|
137
138
|
* @returns The return values of the public function.
|
|
138
139
|
*/
|
|
139
|
-
async callPublicFunction(targetContractAddress, functionSelector, argsHash) {
|
|
140
|
+
async callPublicFunction(targetContractAddress, functionSelector, argsHash, isStaticCall, isDelegateCall) {
|
|
141
|
+
isStaticCall = isStaticCall || this.execution.callContext.isStaticCall;
|
|
140
142
|
const args = this.packedArgsCache.unpack(argsHash);
|
|
141
143
|
this.log(`Public function call: addr=${targetContractAddress} selector=${functionSelector} args=${args.join(',')}`);
|
|
142
144
|
const portalAddress = (await this.contractsDb.getPortalContractAddress(targetContractAddress)) ?? EthAddress.ZERO;
|
|
@@ -150,13 +152,13 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
150
152
|
}
|
|
151
153
|
const functionData = new FunctionData(functionSelector, isInternal, false, false);
|
|
152
154
|
const callContext = CallContext.from({
|
|
153
|
-
msgSender: this.execution.contractAddress,
|
|
155
|
+
msgSender: isDelegateCall ? this.execution.callContext.msgSender : this.execution.contractAddress,
|
|
156
|
+
storageContractAddress: isDelegateCall ? this.execution.contractAddress : targetContractAddress,
|
|
154
157
|
portalContractAddress: portalAddress,
|
|
155
|
-
storageContractAddress: targetContractAddress,
|
|
156
158
|
functionSelector,
|
|
157
159
|
isContractDeployment: false,
|
|
158
|
-
isDelegateCall
|
|
159
|
-
isStaticCall
|
|
160
|
+
isDelegateCall,
|
|
161
|
+
isStaticCall,
|
|
160
162
|
startSideEffectCounter: 0, // TODO use counters in public execution
|
|
161
163
|
});
|
|
162
164
|
const nestedExecution = {
|
|
@@ -167,9 +169,18 @@ export class PublicExecutionContext extends TypedOracle {
|
|
|
167
169
|
};
|
|
168
170
|
const context = new PublicExecutionContext(nestedExecution, this.header, this.globalVariables, this.packedArgsCache, this.sideEffectCounter, this.stateDb, this.contractsDb, this.commitmentsDb, this.log);
|
|
169
171
|
const childExecutionResult = await executePublicFunction(context, acir);
|
|
172
|
+
if (isStaticCall) {
|
|
173
|
+
checkValidStaticCall(childExecutionResult.newNoteHashes, childExecutionResult.newNullifiers, childExecutionResult.contractStorageUpdateRequests, childExecutionResult.newL2ToL1Messages, childExecutionResult.unencryptedLogs);
|
|
174
|
+
}
|
|
170
175
|
this.nestedExecutions.push(childExecutionResult);
|
|
171
176
|
this.log(`Returning from nested call: ret=${childExecutionResult.returnValues.join(', ')}`);
|
|
172
177
|
return childExecutionResult.returnValues;
|
|
173
178
|
}
|
|
179
|
+
async getNullifierMembershipWitness(blockNumber, nullifier) {
|
|
180
|
+
if (!this.header.globalVariables.blockNumber.equals(new Fr(blockNumber))) {
|
|
181
|
+
throw new Error(`Public execution oracle can only access nullifier membership witnesses for the current block`);
|
|
182
|
+
}
|
|
183
|
+
return await this.commitmentsDb.getNullifierMembershipWitnessAtLatestBlock(nullifier);
|
|
184
|
+
}
|
|
174
185
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBZ0QsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBNkMsTUFBTSxvQkFBb0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHOUQsT0FBTyxFQUEwQyxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxXQUFXO0lBS3JEO0lBQ0U7O09BRUc7SUFDYSxTQUEwQixFQUN6QixNQUFjLEVBQ2QsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsaUJBQW9DLEVBQ3BDLE9BQXNCLEVBQ3RCLFdBQThCLEVBQzlCLGFBQTRCLEVBQ3JDLE1BQU0saUJBQWlCLENBQUMsMENBQTBDLENBQUM7UUFFM0UsS0FBSyxFQUFFLENBQUM7UUFWUSxjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIs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
|
|
@@ -44,7 +44,7 @@ export class ContractStorageActionsCollector {
|
|
|
44
44
|
* @param sideEffectCounter - Side effect counter associated with this storage action.
|
|
45
45
|
*/
|
|
46
46
|
write(storageSlot, newValue, sideEffectCounter) {
|
|
47
|
-
const slot = storageSlot.
|
|
47
|
+
const slot = storageSlot.toBigInt();
|
|
48
48
|
const updateRequest = this.contractStorageUpdateRequests.get(slot);
|
|
49
49
|
if (updateRequest) {
|
|
50
50
|
this.contractStorageUpdateRequests.set(slot, { newValue, sideEffectCounter });
|
|
@@ -75,4 +75,4 @@ export class ContractStorageActionsCollector {
|
|
|
75
75
|
return [reads, updateRequests];
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVfYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvc3RhdGVfYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV2RixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJOUM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTywrQkFBK0I7SUFnQjFDLFlBQW9CLEVBQWlCLEVBQVUsT0FBcUI7UUFBaEQsT0FBRSxHQUFGLEVBQUUsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFmcEUsb0NBQW9DO1FBQ25CLHlCQUFvQixHQUdqQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsNkRBQTZEO1FBQzVDLGtDQUE2QixHQU0xQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRXlELENBQUM7SUFFeEU7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBZSxFQUFFLGlCQUF5QjtRQUMxRCxNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDaEMsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDaEYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLFdBQWUsRUFBRSxRQUFZLEVBQUUsaUJBQXlCO1FBQ25FLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDOUUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDOUUsT0FBTztJQUNULENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFLENBQzVGLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUN2QixXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEdBQUcsZUFBZTtTQUNuQixDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQy9HLDRCQUE0QixDQUFDLElBQUksQ0FBQztZQUNoQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3pCLEdBQUcsZ0JBQWdCO1NBQ3BCLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YifQ==
|
package/dest/test/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { L1Actor, L1ToL2Message, L2Actor } from '@aztec/circuit-types';
|
|
2
2
|
import { EthAddress, Fr } from '@aztec/circuits.js';
|
|
3
|
-
import {
|
|
3
|
+
import { computeMessageSecretHash } from '@aztec/circuits.js/hash';
|
|
4
4
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
5
5
|
/**
|
|
6
6
|
* Test utility function to craft an L1 to L2 message.
|
|
@@ -15,9 +15,9 @@ export const buildL1ToL2Message = (selector, contentPreimage, targetContract, se
|
|
|
15
15
|
const selectorBuf = Buffer.from(selector, 'hex');
|
|
16
16
|
const contentBuf = Buffer.concat([selectorBuf, ...contentPreimage.map(field => field.toBuffer())]);
|
|
17
17
|
const content = Fr.fromBufferReduce(sha256(contentBuf));
|
|
18
|
-
const secretHash =
|
|
18
|
+
const secretHash = computeMessageSecretHash(secret);
|
|
19
19
|
// Eventually the kernel will need to prove the kernel portal pair exists within the contract tree,
|
|
20
20
|
// EthAddress.random() will need to be replaced when this happens
|
|
21
|
-
return new L1ToL2Message(new L1Actor(EthAddress.random(), 1), new L2Actor(targetContract, 1), content, secretHash,
|
|
21
|
+
return new L1ToL2Message(new L1Actor(EthAddress.random(), 1), new L2Actor(targetContract, 1), content, secretHash, 2 ** 32 - 1, 0);
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQWdCLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLFFBQWdCLEVBQ2hCLGVBQXFCLEVBQ3JCLGNBQTRCLEVBQzVCLE1BQVUsRUFDVixFQUFFO0lBQ0Ysb0NBQW9DO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRWpELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25HLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUV4RCxNQUFNLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRCxtR0FBbUc7SUFDbkcsaUVBQWlFO0lBQ2pFLE9BQU8sSUFBSSxhQUFhLENBQ3RCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDbkMsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUM5QixPQUFPLEVBQ1AsVUFBVSxFQUNWLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUNYLENBQUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
package/dest/utils.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { pedersenHash } from '@aztec/foundation/crypto';
|
|
2
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
3
2
|
/**
|
|
4
3
|
* Computes the resulting storage slot for an entry in a mapping.
|
|
5
4
|
* @param mappingSlot - The slot of the mapping within state.
|
|
@@ -7,6 +6,6 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
7
6
|
* @returns The slot in the contract storage where the value is stored.
|
|
8
7
|
*/
|
|
9
8
|
export function computeSlotForMapping(mappingSlot, key) {
|
|
10
|
-
return
|
|
9
|
+
return pedersenHash([mappingSlot, key.toField()].map(field => field.toBuffer()));
|
|
11
10
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3hEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxXQUFlLEVBQ2YsR0FHQztJQUVELE9BQU8sWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkYsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -30,9 +30,10 @@
|
|
|
30
30
|
"rootDir": "./src"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@aztec/circuit-types": "0.
|
|
34
|
-
"@aztec/circuits.js": "0.
|
|
35
|
-
"@aztec/foundation": "0.
|
|
33
|
+
"@aztec/circuit-types": "0.26.1",
|
|
34
|
+
"@aztec/circuits.js": "0.26.1",
|
|
35
|
+
"@aztec/foundation": "0.26.1",
|
|
36
|
+
"@aztec/types": "0.26.1",
|
|
36
37
|
"@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
|
|
37
38
|
"levelup": "^5.1.1",
|
|
38
39
|
"memdown": "^6.1.1",
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
"ts-jest": "^29.1.0",
|
|
55
56
|
"ts-node": "^10.9.1",
|
|
56
57
|
"typescript": "^5.0.4",
|
|
57
|
-
"viem": "^
|
|
58
|
+
"viem": "^2.7.15"
|
|
58
59
|
},
|
|
59
60
|
"files": [
|
|
60
61
|
"dest",
|
package/src/acvm/deserialize.ts
CHANGED
|
@@ -23,6 +23,14 @@ export function frToNumber(fr: Fr): number {
|
|
|
23
23
|
return Number(fr.value);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Converts a field to a boolean.
|
|
28
|
+
* @param fr - The field to convert.
|
|
29
|
+
*/
|
|
30
|
+
export function frToBoolean(fr: Fr): boolean {
|
|
31
|
+
return fr.toBigInt() === BigInt(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
26
34
|
/**
|
|
27
35
|
* Extracts the return fields of a given partial witness.
|
|
28
36
|
* @param acir - The bytecode of the function.
|
|
@@ -7,7 +7,7 @@ import { Fr, Point } from '@aztec/foundation/fields';
|
|
|
7
7
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
8
8
|
|
|
9
9
|
import { ACVMField } from '../acvm_types.js';
|
|
10
|
-
import { frToNumber, fromACVMField } from '../deserialize.js';
|
|
10
|
+
import { frToBoolean, frToNumber, fromACVMField } from '../deserialize.js';
|
|
11
11
|
import { toACVMField, toAcvmEnqueuePublicFunctionResult } from '../serialize.js';
|
|
12
12
|
import { acvmFieldMessageToString, oracleDebugCallToFormattedStr } from './debug.js';
|
|
13
13
|
import { TypedOracle } from './typed_oracle.js';
|
|
@@ -45,6 +45,20 @@ export class Oracle {
|
|
|
45
45
|
return [publicKey.x, publicKey.y, partialAddress].map(toACVMField);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
async getContractInstance([address]: ACVMField[]) {
|
|
49
|
+
const instance = await this.typedOracle.getContractInstance(AztecAddress.fromField(fromACVMField(address)));
|
|
50
|
+
// TODO(#4434) Add deployer field to ContractInstance
|
|
51
|
+
const deployer = Fr.ZERO;
|
|
52
|
+
return [
|
|
53
|
+
instance.salt,
|
|
54
|
+
deployer,
|
|
55
|
+
instance.contractClassId,
|
|
56
|
+
instance.initializationHash,
|
|
57
|
+
instance.portalContractAddress,
|
|
58
|
+
instance.publicKeysHash,
|
|
59
|
+
].map(toACVMField);
|
|
60
|
+
}
|
|
61
|
+
|
|
48
62
|
async getMembershipWitness(
|
|
49
63
|
[blockNumber]: ACVMField[],
|
|
50
64
|
[treeId]: ACVMField[],
|
|
@@ -85,9 +99,7 @@ export class Oracle {
|
|
|
85
99
|
|
|
86
100
|
const witness = await this.typedOracle.getNullifierMembershipWitness(parsedBlockNumber, parsedNullifier);
|
|
87
101
|
if (!witness) {
|
|
88
|
-
throw new Error(
|
|
89
|
-
`Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`,
|
|
90
|
-
);
|
|
102
|
+
throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
|
|
91
103
|
}
|
|
92
104
|
return witness.toFields().map(toACVMField);
|
|
93
105
|
}
|
|
@@ -225,8 +237,8 @@ export class Oracle {
|
|
|
225
237
|
return toACVMField(exists);
|
|
226
238
|
}
|
|
227
239
|
|
|
228
|
-
async
|
|
229
|
-
const message = await this.typedOracle.
|
|
240
|
+
async getL1ToL2MembershipWitness([entryKey]: ACVMField[]): Promise<ACVMField[]> {
|
|
241
|
+
const message = await this.typedOracle.getL1ToL2MembershipWitness(fromACVMField(entryKey));
|
|
230
242
|
return message.toFields().map(toACVMField);
|
|
231
243
|
}
|
|
232
244
|
|
|
@@ -292,12 +304,16 @@ export class Oracle {
|
|
|
292
304
|
[functionSelector]: ACVMField[],
|
|
293
305
|
[argsHash]: ACVMField[],
|
|
294
306
|
[sideffectCounter]: ACVMField[],
|
|
307
|
+
[isStaticCall]: ACVMField[],
|
|
308
|
+
[isDelegateCall]: ACVMField[],
|
|
295
309
|
): Promise<ACVMField[]> {
|
|
296
310
|
const callStackItem = await this.typedOracle.callPrivateFunction(
|
|
297
311
|
AztecAddress.fromField(fromACVMField(contractAddress)),
|
|
298
312
|
FunctionSelector.fromField(fromACVMField(functionSelector)),
|
|
299
313
|
fromACVMField(argsHash),
|
|
300
314
|
frToNumber(fromACVMField(sideffectCounter)),
|
|
315
|
+
frToBoolean(fromACVMField(isStaticCall)),
|
|
316
|
+
frToBoolean(fromACVMField(isDelegateCall)),
|
|
301
317
|
);
|
|
302
318
|
return callStackItem.toFields().map(toACVMField);
|
|
303
319
|
}
|
|
@@ -306,11 +322,15 @@ export class Oracle {
|
|
|
306
322
|
[contractAddress]: ACVMField[],
|
|
307
323
|
[functionSelector]: ACVMField[],
|
|
308
324
|
[argsHash]: ACVMField[],
|
|
325
|
+
[isStaticCall]: ACVMField[],
|
|
326
|
+
[isDelegateCall]: ACVMField[],
|
|
309
327
|
): Promise<ACVMField[]> {
|
|
310
328
|
const returnValues = await this.typedOracle.callPublicFunction(
|
|
311
329
|
AztecAddress.fromField(fromACVMField(contractAddress)),
|
|
312
330
|
FunctionSelector.fromField(fromACVMField(functionSelector)),
|
|
313
331
|
fromACVMField(argsHash),
|
|
332
|
+
frToBoolean(fromACVMField(isStaticCall)),
|
|
333
|
+
frToBoolean(fromACVMField(isDelegateCall)),
|
|
314
334
|
);
|
|
315
335
|
return padArrayEnd(returnValues, Fr.ZERO, RETURN_VALUES_LENGTH).map(toACVMField);
|
|
316
336
|
}
|
|
@@ -320,12 +340,16 @@ export class Oracle {
|
|
|
320
340
|
[functionSelector]: ACVMField[],
|
|
321
341
|
[argsHash]: ACVMField[],
|
|
322
342
|
[sideffectCounter]: ACVMField[],
|
|
343
|
+
[isStaticCall]: ACVMField[],
|
|
344
|
+
[isDelegateCall]: ACVMField[],
|
|
323
345
|
) {
|
|
324
346
|
const enqueuedRequest = await this.typedOracle.enqueuePublicFunctionCall(
|
|
325
347
|
AztecAddress.fromString(contractAddress),
|
|
326
348
|
FunctionSelector.fromField(fromACVMField(functionSelector)),
|
|
327
349
|
fromACVMField(argsHash),
|
|
328
350
|
frToNumber(fromACVMField(sideffectCounter)),
|
|
351
|
+
frToBoolean(fromACVMField(isStaticCall)),
|
|
352
|
+
frToBoolean(fromACVMField(isDelegateCall)),
|
|
329
353
|
);
|
|
330
354
|
return toAcvmEnqueuePublicFunctionResult(enqueuedRequest);
|
|
331
355
|
}
|