@aztec/simulator 0.40.1 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/acvm/acvm.d.ts +2 -2
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +3 -3
- package/dest/acvm/oracle/oracle.d.ts +6 -2
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +31 -19
- package/dest/acvm/oracle/typed_oracle.d.ts +8 -11
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +17 -5
- package/dest/acvm/serialize.js +2 -2
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +7 -5
- package/dest/avm/avm_gas.d.ts +1 -5
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +67 -73
- package/dest/avm/avm_simulator.d.ts +5 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +12 -4
- package/dest/avm/errors.d.ts +6 -0
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +10 -1
- package/dest/avm/fixtures/index.d.ts +3 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +15 -3
- package/dest/avm/index.d.ts +2 -0
- package/dest/avm/index.d.ts.map +1 -0
- package/dest/avm/index.js +2 -0
- package/dest/avm/journal/host_storage.d.ts +1 -1
- package/dest/avm/journal/host_storage.d.ts.map +1 -1
- package/dest/avm/journal/journal.d.ts +4 -3
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +10 -11
- package/dest/avm/journal/nullifiers.d.ts +17 -5
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +27 -10
- package/dest/avm/journal/public_storage.d.ts +19 -6
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +30 -12
- package/dest/avm/journal/trace.d.ts +2 -0
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +7 -1
- package/dest/avm/journal/trace_types.d.ts +1 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.js +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +6 -7
- package/dest/avm/opcodes/arithmetic.d.ts +1 -7
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +1 -12
- package/dest/avm/opcodes/conversion.js +2 -2
- package/dest/avm/opcodes/external_calls.d.ts +2 -2
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +25 -13
- package/dest/avm/opcodes/instruction.d.ts +1 -1
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +6 -4
- package/dest/avm/opcodes/memory.d.ts +0 -4
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +1 -7
- package/dest/avm/opcodes/storage.d.ts +0 -12
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +3 -18
- package/dest/avm/serialization/bytecode_serialization.js +2 -2
- package/dest/client/client_execution_context.d.ts +30 -20
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +59 -39
- package/dest/client/db_oracle.d.ts +17 -12
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +2 -2
- package/dest/client/execution_result.d.ts +17 -2
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +32 -4
- package/dest/client/private_execution.d.ts +2 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +22 -8
- package/dest/client/simulator.d.ts +0 -16
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +13 -30
- package/dest/client/unconstrained_execution.d.ts +2 -3
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +5 -7
- package/dest/client/view_data_oracle.d.ts +12 -10
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +17 -11
- package/dest/common/index.d.ts +1 -0
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +2 -1
- package/dest/common/return_values.d.ts +11 -0
- package/dest/common/return_values.d.ts.map +1 -0
- package/dest/common/return_values.js +13 -0
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -2
- package/dest/mocks/fixtures.d.ts +15 -10
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +22 -17
- package/dest/{simulator → providers}/acvm_native.d.ts.map +1 -1
- package/dest/{simulator → providers}/acvm_native.js +13 -14
- package/dest/providers/acvm_wasm.d.ts.map +1 -0
- package/dest/providers/acvm_wasm.js +15 -0
- package/dest/providers/index.d.ts.map +1 -0
- package/dest/{simulator → providers}/index.js +1 -1
- package/dest/{simulator → providers}/simulation_provider.d.ts.map +1 -1
- package/dest/{simulator → providers}/simulation_provider.js +1 -1
- package/dest/public/abstract_phase_manager.d.ts +43 -42
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +81 -103
- package/dest/public/app_logic_phase_manager.d.ts +7 -8
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +14 -14
- package/dest/public/{db.d.ts → db_interfaces.d.ts} +3 -3
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +2 -0
- package/dest/public/execution.d.ts +17 -14
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +3 -30
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +32 -279
- package/dest/public/fee_payment.d.ts +11 -0
- package/dest/public/fee_payment.d.ts.map +1 -0
- package/dest/public/fee_payment.js +24 -0
- package/dest/public/hints_builder.d.ts +3 -2
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +8 -4
- package/dest/public/index.d.ts +4 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +5 -3
- package/dest/public/phase_manager_factory.d.ts +1 -1
- package/dest/public/phase_manager_factory.d.ts.map +1 -1
- package/dest/public/{public_executor.d.ts → public_db_sources.d.ts} +3 -2
- package/dest/public/public_db_sources.d.ts.map +1 -0
- package/dest/public/public_db_sources.js +198 -0
- package/dest/public/public_kernel.js +14 -14
- package/dest/public/public_processor.d.ts +8 -6
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +48 -29
- package/dest/public/setup_phase_manager.d.ts +7 -9
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +11 -20
- package/dest/public/tail_phase_manager.d.ts +5 -11
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +16 -36
- package/dest/public/teardown_phase_manager.d.ts +7 -9
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +15 -21
- package/dest/public/transitional_adaptors.d.ts +3 -2
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +24 -8
- package/dest/public/utils.d.ts +2 -2
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +21 -14
- package/package.json +12 -9
- package/src/acvm/acvm.ts +0 -3
- package/src/acvm/oracle/oracle.ts +53 -27
- package/src/acvm/oracle/typed_oracle.ts +25 -16
- package/src/acvm/serialize.ts +1 -1
- package/src/avm/avm_execution_environment.ts +9 -5
- package/src/avm/avm_gas.ts +66 -73
- package/src/avm/avm_simulator.ts +14 -3
- package/src/avm/errors.ts +10 -0
- package/src/avm/fixtures/index.ts +22 -2
- package/src/avm/index.ts +1 -0
- package/src/avm/journal/host_storage.ts +1 -1
- package/src/avm/journal/journal.ts +15 -14
- package/src/avm/journal/nullifiers.ts +27 -14
- package/src/avm/journal/public_storage.ts +30 -16
- package/src/avm/journal/trace.ts +12 -0
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/accrued_substate.ts +5 -6
- package/src/avm/opcodes/arithmetic.ts +1 -14
- package/src/avm/opcodes/conversion.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +26 -10
- package/src/avm/opcodes/instruction.ts +5 -3
- package/src/avm/opcodes/memory.ts +1 -8
- package/src/avm/opcodes/storage.ts +3 -20
- package/src/avm/serialization/bytecode_serialization.ts +1 -1
- package/src/client/client_execution_context.ts +70 -44
- package/src/client/db_oracle.ts +18 -12
- package/src/client/execution_note_cache.ts +1 -1
- package/src/client/execution_result.ts +41 -3
- package/src/client/private_execution.ts +38 -20
- package/src/client/simulator.ts +11 -32
- package/src/client/unconstrained_execution.ts +9 -12
- package/src/client/view_data_oracle.ts +20 -12
- package/src/common/index.ts +1 -0
- package/src/common/return_values.ts +18 -0
- package/src/index.ts +3 -1
- package/src/mocks/fixtures.ts +31 -33
- package/src/{simulator → providers}/acvm_native.ts +21 -19
- package/src/{simulator → providers}/acvm_wasm.ts +2 -16
- package/src/public/abstract_phase_manager.ts +146 -207
- package/src/public/app_logic_phase_manager.ts +23 -39
- package/src/public/{db.ts → db_interfaces.ts} +2 -2
- package/src/public/execution.ts +17 -14
- package/src/public/executor.ts +51 -391
- package/src/public/fee_payment.ts +26 -0
- package/src/public/hints_builder.ts +17 -3
- package/src/public/index.ts +4 -2
- package/src/public/phase_manager_factory.ts +1 -1
- package/src/public/{public_executor.ts → public_db_sources.ts} +3 -2
- package/src/public/public_kernel.ts +24 -24
- package/src/public/public_processor.ts +82 -38
- package/src/public/setup_phase_manager.ts +20 -45
- package/src/public/tail_phase_manager.ts +18 -68
- package/src/public/teardown_phase_manager.ts +22 -41
- package/src/public/transitional_adaptors.ts +24 -13
- package/src/public/utils.ts +20 -14
- package/dest/client/logs_cache.d.ts +0 -33
- package/dest/client/logs_cache.d.ts.map +0 -1
- package/dest/client/logs_cache.js +0 -59
- package/dest/public/db.d.ts.map +0 -1
- package/dest/public/db.js +0 -2
- package/dest/public/public_execution_context.d.ts +0 -121
- package/dest/public/public_execution_context.d.ts.map +0 -1
- package/dest/public/public_execution_context.js +0 -214
- package/dest/public/public_executor.d.ts.map +0 -1
- package/dest/public/public_executor.js +0 -197
- package/dest/public/state_actions.d.ts +0 -39
- package/dest/public/state_actions.d.ts.map +0 -1
- package/dest/public/state_actions.js +0 -80
- package/dest/simulator/acvm_wasm.d.ts.map +0 -1
- package/dest/simulator/acvm_wasm.js +0 -22
- package/dest/simulator/index.d.ts.map +0 -1
- package/src/client/logs_cache.ts +0 -65
- package/src/public/public_execution_context.ts +0 -289
- package/src/public/state_actions.ts +0 -102
- /package/dest/{simulator → providers}/acvm_native.d.ts +0 -0
- /package/dest/{simulator → providers}/acvm_wasm.d.ts +0 -0
- /package/dest/{simulator → providers}/index.d.ts +0 -0
- /package/dest/{simulator → providers}/simulation_provider.d.ts +0 -0
- /package/src/{simulator → providers}/index.ts +0 -0
- /package/src/{simulator → providers}/simulation_provider.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase_manager_factory.d.ts","sourceRoot":"","sources":["../../src/public/phase_manager_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"phase_manager_factory.d.ts","sourceRoot":"","sources":["../../src/public/phase_manager_factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAKzF,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,EAAE,iBAAiB;CAGrC;AAED,qBAAa,4BAA6B,SAAQ,KAAK;;CAItD;AAED,qBAAa,mBAAmB;WAChB,WAAW,CACvB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,GAC3B,oBAAoB,GAAG,SAAS;WAqCrB,eAAe,CAC3B,MAAM,EAAE,+BAA+B,EACvC,mBAAmB,EAAE,oBAAoB,EACzC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,GAC3B,oBAAoB,GAAG,SAAS;CA2CpC"}
|
|
@@ -49,8 +49,9 @@ export declare class WorldStatePublicDB implements PublicStateDB {
|
|
|
49
49
|
* @param contract - Owner of the storage.
|
|
50
50
|
* @param slot - Slot to read in the contract storage.
|
|
51
51
|
* @param newValue - The new value to store.
|
|
52
|
+
* @returns The slot of the written leaf in the public data tree.
|
|
52
53
|
*/
|
|
53
|
-
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<
|
|
54
|
+
storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<bigint>;
|
|
54
55
|
/**
|
|
55
56
|
* Commit the pending changes to the DB.
|
|
56
57
|
* @returns Nothing.
|
|
@@ -76,4 +77,4 @@ export declare class WorldStateDB implements CommitmentsDB {
|
|
|
76
77
|
getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
|
|
77
78
|
getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
|
|
78
79
|
}
|
|
79
|
-
//# sourceMappingURL=
|
|
80
|
+
//# sourceMappingURL=public_db_sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_db_sources.d.ts","sourceRoot":"","sources":["../../src/public/public_db_sources.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,0BAA0B,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EACL,KAAK,YAAY,EAGjB,EAAE,EACF,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAI9B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,KAAK,aAAa,EAClB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EACjC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,iBAAiB;IAMvD,OAAO,CAAC,EAAE;IALtB,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,UAAU,CAA0C;IAE5D,OAAO,CAAC,GAAG,CAA8D;gBAErD,EAAE,EAAE,kBAAkB;IAE1C;;;OAGG;IACI,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7C;;;OAGG;IACI,kBAAkB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnC,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI5F,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAItF,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAWlG;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAK1C,OAAO,CAAC,EAAE;IAJtB,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,qBAAqB,CAA8B;gBAEvC,EAAE,EAAE,oBAAoB;IAE5C;;;;;OAKG;IACU,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IA4BvE;;;;;;OAMG;IACI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpF;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAYvB;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAItC;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IACpC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,oBAAoB;IAE/B,0CAA0C,CACrD,SAAS,EAAE,EAAE,GACZ,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;IAqBrC,0BAA0B,CACrC,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,CAAC;IA2BvD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAI9D,kBAAkB,CAAC,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG3E"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { MerkleTreeId, NullifierMembershipWitness } from '@aztec/circuit-types';
|
|
2
|
+
import { ContractClassRegisteredEvent, ContractInstanceDeployedEvent, Fr, } from '@aztec/circuits.js';
|
|
3
|
+
import { computeL1ToL2MessageNullifier, computePublicDataTreeLeafSlot } from '@aztec/circuits.js/hash';
|
|
4
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { getCanonicalClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
|
|
6
|
+
import { MessageLoadOracleInputs, } from '@aztec/simulator';
|
|
7
|
+
/**
|
|
8
|
+
* Implements the PublicContractsDB using a ContractDataSource.
|
|
9
|
+
* Progressively records contracts in transaction as they are processed in a block.
|
|
10
|
+
*/
|
|
11
|
+
export class ContractsDataSourcePublicDB {
|
|
12
|
+
constructor(db) {
|
|
13
|
+
this.db = db;
|
|
14
|
+
this.instanceCache = new Map();
|
|
15
|
+
this.classCache = new Map();
|
|
16
|
+
this.log = createDebugLogger('aztec:sequencer:contracts-data-source');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Add new contracts from a transaction
|
|
20
|
+
* @param tx - The transaction to add contracts from.
|
|
21
|
+
*/
|
|
22
|
+
addNewContracts(tx) {
|
|
23
|
+
// Extract contract class and instance data from logs and add to cache for this block
|
|
24
|
+
const logs = tx.unencryptedLogs.unrollLogs();
|
|
25
|
+
ContractClassRegisteredEvent.fromLogs(logs, getCanonicalClassRegistererAddress()).forEach(e => {
|
|
26
|
+
this.log.debug(`Adding class ${e.contractClassId.toString()} to public execution contract cache`);
|
|
27
|
+
this.classCache.set(e.contractClassId.toString(), e.toContractClassPublic());
|
|
28
|
+
});
|
|
29
|
+
ContractInstanceDeployedEvent.fromLogs(logs).forEach(e => {
|
|
30
|
+
this.log.debug(`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to public execution contract cache`);
|
|
31
|
+
this.instanceCache.set(e.address.toString(), e.toContractInstance());
|
|
32
|
+
});
|
|
33
|
+
return Promise.resolve();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Removes new contracts added from transactions
|
|
37
|
+
* @param tx - The tx's contracts to be removed
|
|
38
|
+
*/
|
|
39
|
+
removeNewContracts(tx) {
|
|
40
|
+
// TODO(@spalladino): Can this inadvertently delete a valid contract added by another tx?
|
|
41
|
+
// Let's say we have two txs adding the same contract on the same block. If the 2nd one reverts,
|
|
42
|
+
// wouldn't that accidentally remove the contract added on the first one?
|
|
43
|
+
const logs = tx.unencryptedLogs.unrollLogs();
|
|
44
|
+
ContractClassRegisteredEvent.fromLogs(logs, getCanonicalClassRegistererAddress()).forEach(e => this.classCache.delete(e.contractClassId.toString()));
|
|
45
|
+
ContractInstanceDeployedEvent.fromLogs(logs).forEach(e => this.instanceCache.delete(e.address.toString()));
|
|
46
|
+
return Promise.resolve();
|
|
47
|
+
}
|
|
48
|
+
async getContractInstance(address) {
|
|
49
|
+
return this.instanceCache.get(address.toString()) ?? (await this.db.getContract(address));
|
|
50
|
+
}
|
|
51
|
+
async getContractClass(contractClassId) {
|
|
52
|
+
return this.classCache.get(contractClassId.toString()) ?? (await this.db.getContractClass(contractClassId));
|
|
53
|
+
}
|
|
54
|
+
async getBytecode(address, selector) {
|
|
55
|
+
const instance = await this.getContractInstance(address);
|
|
56
|
+
if (!instance) {
|
|
57
|
+
throw new Error(`Contract ${address.toString()} not found`);
|
|
58
|
+
}
|
|
59
|
+
const contractClass = await this.getContractClass(instance.contractClassId);
|
|
60
|
+
if (!contractClass) {
|
|
61
|
+
throw new Error(`Contract class ${instance.contractClassId.toString()} for ${address.toString()} not found`);
|
|
62
|
+
}
|
|
63
|
+
return contractClass.publicFunctions.find(f => f.selector.equals(selector))?.bytecode;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Implements the PublicStateDB using a world-state database.
|
|
68
|
+
*/
|
|
69
|
+
export class WorldStatePublicDB {
|
|
70
|
+
constructor(db) {
|
|
71
|
+
this.db = db;
|
|
72
|
+
this.committedWriteCache = new Map();
|
|
73
|
+
this.checkpointedWriteCache = new Map();
|
|
74
|
+
this.uncommittedWriteCache = new Map();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Reads a value from public storage, returning zero if none.
|
|
78
|
+
* @param contract - Owner of the storage.
|
|
79
|
+
* @param slot - Slot to read in the contract storage.
|
|
80
|
+
* @returns The current value in the storage slot.
|
|
81
|
+
*/
|
|
82
|
+
async storageRead(contract, slot) {
|
|
83
|
+
const leafSlot = computePublicDataTreeLeafSlot(contract, slot).value;
|
|
84
|
+
const uncommitted = this.uncommittedWriteCache.get(leafSlot);
|
|
85
|
+
if (uncommitted !== undefined) {
|
|
86
|
+
return uncommitted;
|
|
87
|
+
}
|
|
88
|
+
const checkpointed = this.checkpointedWriteCache.get(leafSlot);
|
|
89
|
+
if (checkpointed !== undefined) {
|
|
90
|
+
return checkpointed;
|
|
91
|
+
}
|
|
92
|
+
const committed = this.committedWriteCache.get(leafSlot);
|
|
93
|
+
if (committed !== undefined) {
|
|
94
|
+
return committed;
|
|
95
|
+
}
|
|
96
|
+
const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
|
|
97
|
+
if (!lowLeafResult || !lowLeafResult.alreadyPresent) {
|
|
98
|
+
return Fr.ZERO;
|
|
99
|
+
}
|
|
100
|
+
const preimage = (await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index));
|
|
101
|
+
return preimage.value;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Records a write to public storage.
|
|
105
|
+
* @param contract - Owner of the storage.
|
|
106
|
+
* @param slot - Slot to read in the contract storage.
|
|
107
|
+
* @param newValue - The new value to store.
|
|
108
|
+
* @returns The slot of the written leaf in the public data tree.
|
|
109
|
+
*/
|
|
110
|
+
storageWrite(contract, slot, newValue) {
|
|
111
|
+
const index = computePublicDataTreeLeafSlot(contract, slot).value;
|
|
112
|
+
this.uncommittedWriteCache.set(index, newValue);
|
|
113
|
+
return Promise.resolve(index);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Commit the pending changes to the DB.
|
|
117
|
+
* @returns Nothing.
|
|
118
|
+
*/
|
|
119
|
+
commit() {
|
|
120
|
+
for (const [k, v] of this.checkpointedWriteCache) {
|
|
121
|
+
this.committedWriteCache.set(k, v);
|
|
122
|
+
}
|
|
123
|
+
// uncommitted writes take precedence over checkpointed writes
|
|
124
|
+
// since they are the most recent
|
|
125
|
+
for (const [k, v] of this.uncommittedWriteCache) {
|
|
126
|
+
this.committedWriteCache.set(k, v);
|
|
127
|
+
}
|
|
128
|
+
return this.rollbackToCommit();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Rollback the pending changes.
|
|
132
|
+
* @returns Nothing.
|
|
133
|
+
*/
|
|
134
|
+
async rollbackToCommit() {
|
|
135
|
+
await this.rollbackToCheckpoint();
|
|
136
|
+
this.checkpointedWriteCache = new Map();
|
|
137
|
+
return Promise.resolve();
|
|
138
|
+
}
|
|
139
|
+
checkpoint() {
|
|
140
|
+
for (const [k, v] of this.uncommittedWriteCache) {
|
|
141
|
+
this.checkpointedWriteCache.set(k, v);
|
|
142
|
+
}
|
|
143
|
+
return this.rollbackToCheckpoint();
|
|
144
|
+
}
|
|
145
|
+
rollbackToCheckpoint() {
|
|
146
|
+
this.uncommittedWriteCache = new Map();
|
|
147
|
+
return Promise.resolve();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Implements WorldState db using a world state database.
|
|
152
|
+
*/
|
|
153
|
+
export class WorldStateDB {
|
|
154
|
+
constructor(db) {
|
|
155
|
+
this.db = db;
|
|
156
|
+
}
|
|
157
|
+
async getNullifierMembershipWitnessAtLatestBlock(nullifier) {
|
|
158
|
+
const index = await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
159
|
+
if (!index) {
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
162
|
+
const leafPreimagePromise = this.db.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, index);
|
|
163
|
+
const siblingPathPromise = this.db.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, BigInt(index));
|
|
164
|
+
const [leafPreimage, siblingPath] = await Promise.all([leafPreimagePromise, siblingPathPromise]);
|
|
165
|
+
if (!leafPreimage) {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
return new NullifierMembershipWitness(BigInt(index), leafPreimage, siblingPath);
|
|
169
|
+
}
|
|
170
|
+
async getL1ToL2MembershipWitness(contractAddress, messageHash, secret) {
|
|
171
|
+
let nullifierIndex;
|
|
172
|
+
let messageIndex;
|
|
173
|
+
let startIndex = 0n;
|
|
174
|
+
// We iterate over messages until we find one whose nullifier is not in the nullifier tree --> we need to check
|
|
175
|
+
// for nullifiers because messages can have duplicates.
|
|
176
|
+
do {
|
|
177
|
+
messageIndex = (await this.db.findLeafIndexAfter(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, messageHash, startIndex));
|
|
178
|
+
if (messageIndex === undefined) {
|
|
179
|
+
throw new Error(`No non-nullified L1 to L2 message found for message hash ${messageHash.toString()}`);
|
|
180
|
+
}
|
|
181
|
+
const messageNullifier = computeL1ToL2MessageNullifier(contractAddress, messageHash, secret, messageIndex);
|
|
182
|
+
nullifierIndex = await this.getNullifierIndex(messageNullifier);
|
|
183
|
+
startIndex = messageIndex + 1n;
|
|
184
|
+
} while (nullifierIndex !== undefined);
|
|
185
|
+
const siblingPath = await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, messageIndex);
|
|
186
|
+
return new MessageLoadOracleInputs(messageIndex, siblingPath);
|
|
187
|
+
}
|
|
188
|
+
async getL1ToL2LeafValue(leafIndex) {
|
|
189
|
+
return await this.db.getLeafValue(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
|
|
190
|
+
}
|
|
191
|
+
async getCommitmentIndex(commitment) {
|
|
192
|
+
return await this.db.findLeafIndex(MerkleTreeId.NOTE_HASH_TREE, commitment);
|
|
193
|
+
}
|
|
194
|
+
async getNullifierIndex(nullifier) {
|
|
195
|
+
return await this.db.findLeafIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBuffer());
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2RiX3NvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3B1YmxpY19kYl9zb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQVcsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBRUwsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3QixFQUFFLEdBTUgsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRyxPQUFPLEVBRUwsdUJBQXVCLEdBR3hCLE1BQU0sa0JBQWtCLENBQUM7QUFRMUI7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDJCQUEyQjtJQU10QyxZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUxsQyxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUF1QyxDQUFDO1FBQy9ELGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztRQUVwRCxRQUFHLEdBQUcsaUJBQWlCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUU1QixDQUFDO0lBRTlDOzs7T0FHRztJQUNJLGVBQWUsQ0FBQyxFQUFNO1FBQzNCLHFGQUFxRjtRQUNyRixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1RixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFD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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { elapsed } from '@aztec/foundation/timer';
|
|
3
|
-
import {
|
|
3
|
+
import { SimulatedPublicKernelAppLogicArtifact, SimulatedPublicKernelSetupArtifact, SimulatedPublicKernelTailArtifact, SimulatedPublicKernelTeardownArtifact, convertSimulatedPublicInnerInputsToWitnessMap, convertSimulatedPublicInnerOutputFromWitnessMap, convertSimulatedPublicSetupInputsToWitnessMap, convertSimulatedPublicSetupOutputFromWitnessMap, convertSimulatedPublicTailInputsToWitnessMap, convertSimulatedPublicTailOutputFromWitnessMap, convertSimulatedPublicTeardownInputsToWitnessMap, convertSimulatedPublicTeardownOutputFromWitnessMap, } from '@aztec/noir-protocol-circuits-types';
|
|
4
4
|
import { WASMSimulator } from '@aztec/simulator';
|
|
5
5
|
/**
|
|
6
6
|
* Implements the PublicKernelCircuitSimulator.
|
|
@@ -21,9 +21,9 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
21
21
|
if (!input.previousKernel.publicInputs.needsSetup) {
|
|
22
22
|
throw new Error(`Expected previous kernel inputs to need setup`);
|
|
23
23
|
}
|
|
24
|
-
const inputWitness =
|
|
25
|
-
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness,
|
|
26
|
-
const result =
|
|
24
|
+
const inputWitness = convertSimulatedPublicSetupInputsToWitnessMap(input);
|
|
25
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, SimulatedPublicKernelSetupArtifact));
|
|
26
|
+
const result = convertSimulatedPublicSetupOutputFromWitnessMap(witness);
|
|
27
27
|
this.log.debug(`Simulated public kernel setup circuit`, {
|
|
28
28
|
eventName: 'circuit-simulation',
|
|
29
29
|
circuitName: 'public-kernel-setup',
|
|
@@ -42,9 +42,9 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
42
42
|
if (!input.previousKernel.publicInputs.needsAppLogic) {
|
|
43
43
|
throw new Error(`Expected previous kernel inputs to need app logic`);
|
|
44
44
|
}
|
|
45
|
-
const inputWitness =
|
|
46
|
-
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness,
|
|
47
|
-
const result =
|
|
45
|
+
const inputWitness = convertSimulatedPublicInnerInputsToWitnessMap(input);
|
|
46
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, SimulatedPublicKernelAppLogicArtifact));
|
|
47
|
+
const result = convertSimulatedPublicInnerOutputFromWitnessMap(witness);
|
|
48
48
|
this.log.debug(`Simulated public kernel app logic circuit`, {
|
|
49
49
|
eventName: 'circuit-simulation',
|
|
50
50
|
circuitName: 'public-kernel-app-logic',
|
|
@@ -63,9 +63,9 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
63
63
|
if (!input.previousKernel.publicInputs.needsTeardown) {
|
|
64
64
|
throw new Error(`Expected previous kernel inputs to need teardown`);
|
|
65
65
|
}
|
|
66
|
-
const inputWitness =
|
|
67
|
-
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness,
|
|
68
|
-
const result =
|
|
66
|
+
const inputWitness = convertSimulatedPublicTeardownInputsToWitnessMap(input);
|
|
67
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, SimulatedPublicKernelTeardownArtifact));
|
|
68
|
+
const result = convertSimulatedPublicTeardownOutputFromWitnessMap(witness);
|
|
69
69
|
this.log.debug(`Simulated public kernel teardown circuit`, {
|
|
70
70
|
eventName: 'circuit-simulation',
|
|
71
71
|
circuitName: 'public-kernel-teardown',
|
|
@@ -81,9 +81,9 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
81
81
|
* @returns The public inputs as outputs of the simulation.
|
|
82
82
|
*/
|
|
83
83
|
async publicKernelCircuitTail(input) {
|
|
84
|
-
const inputWitness =
|
|
85
|
-
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness,
|
|
86
|
-
const result =
|
|
84
|
+
const inputWitness = convertSimulatedPublicTailInputsToWitnessMap(input);
|
|
85
|
+
const [duration, witness] = await elapsed(() => this.wasmSimulator.simulateCircuit(inputWitness, SimulatedPublicKernelTailArtifact));
|
|
86
|
+
const result = convertSimulatedPublicTailOutputFromWitnessMap(witness);
|
|
87
87
|
this.log.debug(`Simulated public kernel tail circuit`, {
|
|
88
88
|
eventName: 'circuit-simulation',
|
|
89
89
|
circuitName: 'public-kernel-tail',
|
|
@@ -94,4 +94,4 @@ export class RealPublicKernelCircuitSimulator {
|
|
|
94
94
|
return result;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX2tlcm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUNMLHFDQUFxQyxFQUNyQyxrQ0FBa0MsRUFDbEMsaUNBQWlDLEVBQ2pDLHFDQUFxQyxFQUNyQyw2Q0FBNkMsRUFDN0MsK0NBQStDLEVBQy9DLDZDQUE2QyxFQUM3QywrQ0FBK0MsRUFDL0MsNENBQTRDLEVBQzVDLDhDQUE4QyxFQUM5QyxnREFBZ0QsRUFDaEQsa0RBQWtELEdBQ25ELE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUEyQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUkxRTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFNM0MsWUFBb0IsU0FBNkI7UUFBN0IsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFMekMsUUFBRyxHQUFHLGlCQUFpQixDQUFDLCtCQUErQixDQUFDLENBQUM7UUFFakUsc0RBQXNEO1FBQzlDLGtCQUFhLEdBQWtCLElBQUksYUFBYSxFQUFFLENBQUM7SUFFUCxDQUFDO0lBRXJEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsd0JBQXdCLENBQ25DLEtBQXVDO1FBRXZDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLDZDQUE2QyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FB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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type BlockProver, type FailedTx,
|
|
1
|
+
import { type BlockProver, type FailedTx, NestedProcessReturnValues, type ProcessedTx, Tx, type TxValidator } from '@aztec/circuit-types';
|
|
2
2
|
import { type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
3
3
|
import { PublicExecutor, type PublicStateDB, type SimulationProvider } from '@aztec/simulator';
|
|
4
4
|
import { type ContractDataSource } from '@aztec/types/contracts';
|
|
5
5
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
6
|
-
import { ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
/**
|
|
9
9
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
@@ -41,12 +41,14 @@ export declare class PublicProcessor {
|
|
|
41
41
|
* @param txs - Txs to process.
|
|
42
42
|
* @returns The list of processed txs with their circuit simulation outputs.
|
|
43
43
|
*/
|
|
44
|
-
process(txs: Tx[], maxTransactions?: number, blockProver?: BlockProver, txValidator?: TxValidator<ProcessedTx>): Promise<[ProcessedTx[], FailedTx[],
|
|
44
|
+
process(txs: Tx[], maxTransactions?: number, blockProver?: BlockProver, txValidator?: TxValidator<ProcessedTx>): Promise<[ProcessedTx[], FailedTx[], NestedProcessReturnValues[]]>;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* Creates the final set of data update requests for the transaction. This includes the
|
|
47
|
+
* set of public data update requests as returned by the public kernel, plus a data update
|
|
48
|
+
* request for updating fee balance. It also updates the local public state db.
|
|
49
|
+
* See build_or_patch_payment_update_request in base_rollup_inputs.nr for more details.
|
|
48
50
|
*/
|
|
49
|
-
|
|
51
|
+
private createFinalDataUpdateRequests;
|
|
50
52
|
private processTxWithPublicCalls;
|
|
51
53
|
}
|
|
52
54
|
//# sourceMappingURL=public_processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../src/public/public_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,
|
|
1
|
+
{"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../src/public/public_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,yBAAyB,EACzB,KAAK,WAAW,EAGhB,EAAE,EACF,KAAK,WAAW,EAGjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,MAAM,EAKZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAGxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ/D,OAAO,EAAE,2BAA2B,EAAoC,MAAM,wBAAwB,CAAC;AAEvG,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,SAAS;gBAFT,UAAU,EAAE,oBAAoB,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,kBAAkB;IAGvC;;;;;;OAMG;IACU,MAAM,CACjB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,eAAe,CAAC;CAiB5B;AAED;;;GAGG;AACH,qBAAa,eAAe;IAExB,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAEtC,OAAO,CAAC,GAAG;gBARD,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAE9B,GAAG,yCAAwD;IAGrE;;;;OAIG;IACU,OAAO,CAClB,GAAG,EAAE,EAAE,EAAE,EACT,eAAe,SAAa,EAC5B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,GACrC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAwDpE;;;;;OAKG;YACW,6BAA6B;YAyC7B,wBAAwB;CAgDvC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NestedProcessReturnValues, Tx, makeProcessedTx, validateProcessedTx, } from '@aztec/circuit-types';
|
|
2
|
+
import { AztecAddress, GAS_TOKEN_ADDRESS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataUpdateRequest, } from '@aztec/circuits.js';
|
|
3
|
+
import { times } from '@aztec/foundation/collection';
|
|
2
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
4
|
-
import { PublicExecutor } from '@aztec/simulator';
|
|
5
|
+
import { PublicExecutor, computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot, } from '@aztec/simulator';
|
|
5
6
|
import { PublicKernelPhase, publicKernelPhaseToKernelType, } from './abstract_phase_manager.js';
|
|
6
7
|
import { PhaseManagerFactory } from './phase_manager_factory.js';
|
|
7
|
-
import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from './
|
|
8
|
+
import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from './public_db_sources.js';
|
|
8
9
|
import { RealPublicKernelCircuitSimulator } from './public_kernel.js';
|
|
9
10
|
/**
|
|
10
11
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
@@ -56,7 +57,7 @@ export class PublicProcessor {
|
|
|
56
57
|
txs = txs.map(tx => Tx.clone(tx));
|
|
57
58
|
const result = [];
|
|
58
59
|
const failed = [];
|
|
59
|
-
|
|
60
|
+
let returns = [];
|
|
60
61
|
for (const tx of txs) {
|
|
61
62
|
// only process up to the limit of the block
|
|
62
63
|
if (result.length >= maxTransactions) {
|
|
@@ -66,6 +67,10 @@ export class PublicProcessor {
|
|
|
66
67
|
const [processedTx, returnValues] = !tx.hasPublicCalls()
|
|
67
68
|
? [makeProcessedTx(tx, tx.data.toKernelCircuitPublicInputs(), tx.proof, [])]
|
|
68
69
|
: await this.processTxWithPublicCalls(tx);
|
|
70
|
+
// Set fee payment update request into the processed tx
|
|
71
|
+
processedTx.finalPublicDataUpdateRequests = await this.createFinalDataUpdateRequests(processedTx);
|
|
72
|
+
// Commit the state updates from this transaction
|
|
73
|
+
await this.publicStateDB.commit();
|
|
69
74
|
validateProcessedTx(processedTx);
|
|
70
75
|
// Re-validate the transaction
|
|
71
76
|
if (txValidator) {
|
|
@@ -83,64 +88,78 @@ export class PublicProcessor {
|
|
|
83
88
|
await blockProver.addNewTx(processedTx);
|
|
84
89
|
}
|
|
85
90
|
result.push(processedTx);
|
|
86
|
-
returns.
|
|
91
|
+
returns = returns.concat(returnValues ?? []);
|
|
87
92
|
}
|
|
88
93
|
catch (err) {
|
|
89
94
|
const errorMessage = err instanceof Error ? err.message : 'Unknown error';
|
|
90
|
-
this.log.warn(`Failed to process tx ${tx.getTxHash()}: ${errorMessage}`);
|
|
95
|
+
this.log.warn(`Failed to process tx ${tx.getTxHash()}: ${errorMessage} ${err?.stack}`);
|
|
91
96
|
failed.push({
|
|
92
97
|
tx,
|
|
93
98
|
error: err instanceof Error ? err : new Error(errorMessage),
|
|
94
99
|
});
|
|
95
|
-
returns.push([]);
|
|
100
|
+
returns.push(new NestedProcessReturnValues([]));
|
|
96
101
|
}
|
|
97
102
|
}
|
|
98
103
|
return [result, failed, returns];
|
|
99
104
|
}
|
|
100
105
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
106
|
+
* Creates the final set of data update requests for the transaction. This includes the
|
|
107
|
+
* set of public data update requests as returned by the public kernel, plus a data update
|
|
108
|
+
* request for updating fee balance. It also updates the local public state db.
|
|
109
|
+
* See build_or_patch_payment_update_request in base_rollup_inputs.nr for more details.
|
|
103
110
|
*/
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
111
|
+
async createFinalDataUpdateRequests(tx) {
|
|
112
|
+
const finalPublicDataUpdateRequests = [
|
|
113
|
+
...tx.data.end.publicDataUpdateRequests,
|
|
114
|
+
...times(PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, () => PublicDataUpdateRequest.empty()),
|
|
115
|
+
];
|
|
116
|
+
const feePayer = tx.data.feePayer;
|
|
117
|
+
if (feePayer.isZero()) {
|
|
118
|
+
return finalPublicDataUpdateRequests;
|
|
119
|
+
}
|
|
120
|
+
const gasToken = AztecAddress.fromBigInt(GAS_TOKEN_ADDRESS);
|
|
121
|
+
const balanceSlot = computeFeePayerBalanceStorageSlot(feePayer);
|
|
122
|
+
const leafSlot = computeFeePayerBalanceLeafSlot(feePayer);
|
|
123
|
+
const txFee = tx.data.getTransactionFee(this.globalVariables.gasFees);
|
|
124
|
+
this.log.debug(`Deducting ${txFee} balance in gas tokens for ${feePayer}`);
|
|
125
|
+
const existingBalanceWriteIndex = finalPublicDataUpdateRequests.findIndex(request => request.leafSlot.equals(leafSlot));
|
|
126
|
+
const balance = existingBalanceWriteIndex > -1
|
|
127
|
+
? finalPublicDataUpdateRequests[existingBalanceWriteIndex].newValue
|
|
128
|
+
: await this.publicStateDB.storageRead(gasToken, balanceSlot);
|
|
129
|
+
if (balance.lt(txFee)) {
|
|
130
|
+
throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance} needs ${txFee})`);
|
|
131
|
+
}
|
|
132
|
+
const updatedBalance = balance.sub(txFee);
|
|
133
|
+
await this.publicStateDB.storageWrite(gasToken, balanceSlot, updatedBalance);
|
|
134
|
+
finalPublicDataUpdateRequests[existingBalanceWriteIndex > -1 ? existingBalanceWriteIndex : MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX] = new PublicDataUpdateRequest(leafSlot, updatedBalance, 0);
|
|
135
|
+
return finalPublicDataUpdateRequests;
|
|
107
136
|
}
|
|
108
137
|
async processTxWithPublicCalls(tx) {
|
|
109
|
-
let returnValues =
|
|
110
|
-
const
|
|
138
|
+
let returnValues = [];
|
|
139
|
+
const publicProvingRequests = [];
|
|
111
140
|
let phase = PhaseManagerFactory.phaseFromTx(tx, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
112
141
|
this.log.debug(`Beginning processing in phase ${phase?.phase} for tx ${tx.getTxHash()}`);
|
|
113
|
-
let proof = tx.proof;
|
|
114
142
|
let publicKernelPublicInput = tx.data.toPublicKernelCircuitPublicInputs();
|
|
115
143
|
let finalKernelOutput;
|
|
116
144
|
let revertReason;
|
|
117
|
-
const timer = new Timer();
|
|
118
145
|
const gasUsed = {};
|
|
119
146
|
while (phase) {
|
|
120
|
-
const output = await phase.handle(tx, publicKernelPublicInput
|
|
147
|
+
const output = await phase.handle(tx, publicKernelPublicInput);
|
|
121
148
|
gasUsed[publicKernelPhaseToKernelType(phase.phase)] = output.gasUsed;
|
|
122
149
|
if (phase.phase === PublicKernelPhase.APP_LOGIC) {
|
|
123
150
|
returnValues = output.returnValues;
|
|
124
151
|
}
|
|
125
|
-
|
|
152
|
+
publicProvingRequests.push(...output.publicProvingRequests);
|
|
126
153
|
publicKernelPublicInput = output.publicKernelOutput;
|
|
127
154
|
finalKernelOutput = output.finalKernelOutput;
|
|
128
|
-
proof = output.publicKernelProof;
|
|
129
155
|
revertReason ?? (revertReason = output.revertReason);
|
|
130
156
|
phase = PhaseManagerFactory.phaseFromOutput(publicKernelPublicInput, phase, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
131
157
|
}
|
|
132
158
|
if (!finalKernelOutput) {
|
|
133
159
|
throw new Error('Final public kernel was not executed.');
|
|
134
160
|
}
|
|
135
|
-
const processedTx = makeProcessedTx(tx, finalKernelOutput, proof,
|
|
136
|
-
this.log.debug(`Processed public part of ${tx.getTxHash()}`, {
|
|
137
|
-
eventName: 'tx-sequencer-processing',
|
|
138
|
-
duration: timer.ms(),
|
|
139
|
-
effectsSize: toTxEffect(processedTx).toBuffer().length,
|
|
140
|
-
publicDataUpdateRequests: processedTx.data.end.publicDataUpdateRequests.filter(x => !x.leafSlot.isZero()).length ?? 0,
|
|
141
|
-
...tx.getStats(),
|
|
142
|
-
});
|
|
161
|
+
const processedTx = makeProcessedTx(tx, finalKernelOutput, tx.proof, publicProvingRequests, revertReason, gasUsed);
|
|
143
162
|
return [processedTx, returnValues];
|
|
144
163
|
}
|
|
145
164
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wseUJBQXlCLEVBSXpCLEVBQUUsRUFFRixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFJakIsc0NBQXNDLEVBQ3RDLDJDQUEyQyxFQUMzQyx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUNMLGNBQWMsRUFHZCw4QkFBOEIsRUFDOUIsaUNBQWlDLEdBQ2xDLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQiw2QkFBNkIsR0FDOUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1UsVUFBZ0MsRUFDaEMsa0JBQXNDLEVBQ3RDLFNBQTZCO1FBRjdCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBb0I7SUFDcEMsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLGdCQUFvQyxF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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type GlobalVariables, type Header, type
|
|
1
|
+
import { type PublicProvingRequest, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
/**
|
|
9
9
|
* The phase manager responsible for performing the fee preparation phase.
|
|
@@ -12,14 +12,12 @@ export declare class SetupPhaseManager extends AbstractPhaseManager {
|
|
|
12
12
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
13
13
|
protected publicStateDB: PublicStateDB;
|
|
14
14
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
15
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
16
|
-
|
|
17
|
-
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
15
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
16
|
+
publicProvingRequests: PublicProvingRequest[];
|
|
18
17
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
19
|
-
publicKernelProof: Proof;
|
|
20
18
|
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
21
|
-
returnValues:
|
|
22
|
-
gasUsed: import("@aztec/circuits.js").Gas;
|
|
19
|
+
returnValues: never[];
|
|
20
|
+
gasUsed: import("@aztec/circuits.js").Gas | undefined;
|
|
23
21
|
}>;
|
|
24
22
|
}
|
|
25
23
|
//# sourceMappingURL=setup_phase_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/setup_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"setup_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/setup_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,oBAAoB;IAOvD,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA2C;IAKrC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;;CAsB1F"}
|