@aztec/simulator 0.33.0 → 0.35.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 +4 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +5 -5
- package/dest/acvm/deserialize.d.ts +3 -5
- package/dest/acvm/deserialize.d.ts.map +1 -1
- package/dest/acvm/deserialize.js +6 -9
- package/dest/acvm/oracle/oracle.d.ts +3 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +14 -6
- package/dest/acvm/oracle/typed_oracle.d.ts +2 -0
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +7 -1
- package/dest/avm/avm_execution_environment.d.ts +6 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +12 -9
- package/dest/avm/avm_gas.js +2 -2
- package/dest/avm/avm_machine_state.d.ts +2 -0
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +24 -6
- package/dest/avm/avm_memory_types.js +6 -6
- package/dest/avm/avm_simulator.js +7 -7
- 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 +11 -4
- package/dest/avm/journal/journal.d.ts +15 -13
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +16 -5
- package/dest/avm/journal/trace.d.ts +8 -19
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +48 -116
- package/dest/avm/journal/trace_types.d.ts +23 -4
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts +2 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +14 -6
- package/dest/avm/opcodes/context_getters.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 +26 -10
- package/dest/avm/opcodes/hashing.d.ts +8 -8
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +35 -43
- package/dest/avm/serialization/instruction_serialization.d.ts +1 -1
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +2 -2
- package/dest/client/client_execution_context.d.ts +14 -4
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +28 -13
- package/dest/client/private_execution.d.ts +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +10 -8
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +6 -5
- package/dest/client/unconstrained_execution.d.ts +1 -1
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +6 -5
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +2 -2
- package/dest/common/index.d.ts +1 -1
- package/dest/common/index.d.ts.map +1 -1
- package/dest/common/index.js +2 -2
- package/dest/common/packed_values_cache.d.ts +28 -0
- package/dest/common/packed_values_cache.d.ts.map +1 -0
- package/dest/common/packed_values_cache.js +50 -0
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/mocks/fixtures.d.ts +42 -0
- package/dest/mocks/fixtures.d.ts.map +1 -0
- package/dest/mocks/fixtures.js +84 -0
- package/dest/mocks/index.d.ts +2 -0
- package/dest/mocks/index.d.ts.map +1 -0
- package/dest/mocks/index.js +2 -0
- package/dest/public/abstract_phase_manager.d.ts +82 -0
- package/dest/public/abstract_phase_manager.d.ts.map +1 -0
- package/dest/public/abstract_phase_manager.js +320 -0
- package/dest/public/app_logic_phase_manager.d.ts +29 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -0
- package/dest/public/app_logic_phase_manager.js +50 -0
- package/dest/public/execution.d.ts +3 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +1 -15
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +80 -83
- package/dest/public/hints_builder.d.ts +23 -0
- package/dest/public/hints_builder.d.ts.map +1 -0
- package/dest/public/hints_builder.js +62 -0
- package/dest/public/index.d.ts +5 -0
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +6 -1
- package/dest/public/phase_manager_factory.d.ts +18 -0
- package/dest/public/phase_manager_factory.d.ts.map +1 -0
- package/dest/public/phase_manager_factory.js +56 -0
- package/dest/public/public_execution_context.d.ts +20 -10
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +35 -23
- package/dest/public/public_executor.d.ts +79 -0
- package/dest/public/public_executor.d.ts.map +1 -0
- package/dest/public/public_executor.js +198 -0
- package/dest/public/public_kernel.d.ts +37 -0
- package/dest/public/public_kernel.d.ts.map +1 -0
- package/dest/public/public_kernel.js +97 -0
- package/dest/public/public_kernel_circuit_simulator.d.ts +31 -0
- package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -0
- package/dest/public/public_kernel_circuit_simulator.js +2 -0
- package/dest/public/public_processor.d.ts +53 -0
- package/dest/public/public_processor.d.ts.map +1 -0
- package/dest/public/public_processor.js +144 -0
- package/dest/public/setup_phase_manager.d.ts +30 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -0
- package/dest/public/setup_phase_manager.js +46 -0
- package/dest/public/tail_phase_manager.d.ts +30 -0
- package/dest/public/tail_phase_manager.d.ts.map +1 -0
- package/dest/public/tail_phase_manager.js +60 -0
- package/dest/public/teardown_phase_manager.d.ts +30 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -0
- package/dest/public/teardown_phase_manager.js +46 -0
- package/dest/public/transitional_adaptors.d.ts +33 -0
- package/dest/public/transitional_adaptors.d.ts.map +1 -0
- package/dest/public/transitional_adaptors.js +162 -0
- package/dest/public/utils.d.ts +8 -0
- package/dest/public/utils.d.ts.map +1 -0
- package/dest/public/utils.js +29 -0
- package/dest/simulator/acvm_native.d.ts +19 -3
- package/dest/simulator/acvm_native.d.ts.map +1 -1
- package/dest/simulator/acvm_native.js +75 -48
- package/dest/simulator/acvm_wasm.d.ts.map +1 -1
- package/dest/simulator/acvm_wasm.js +3 -4
- package/package.json +8 -5
- package/src/acvm/acvm.ts +8 -5
- package/src/acvm/deserialize.ts +5 -9
- package/src/acvm/oracle/oracle.ts +15 -5
- package/src/acvm/oracle/typed_oracle.ts +8 -0
- package/src/avm/avm_execution_environment.ts +17 -17
- package/src/avm/avm_gas.ts +1 -1
- package/src/avm/avm_machine_state.ts +26 -5
- package/src/avm/avm_memory_types.ts +5 -5
- package/src/avm/avm_simulator.ts +6 -6
- package/src/avm/fixtures/index.ts +14 -1
- package/src/avm/journal/journal.ts +37 -17
- package/src/avm/journal/trace.ts +59 -121
- package/src/avm/journal/trace_types.ts +39 -39
- package/src/avm/opcodes/accrued_substate.ts +17 -5
- package/src/avm/opcodes/context_getters.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +32 -9
- package/src/avm/opcodes/hashing.ts +38 -54
- package/src/avm/serialization/instruction_serialization.ts +1 -1
- package/src/client/client_execution_context.ts +30 -11
- package/src/client/private_execution.ts +9 -8
- package/src/client/simulator.ts +7 -3
- package/src/client/unconstrained_execution.ts +5 -4
- package/src/client/view_data_oracle.ts +1 -1
- package/src/common/index.ts +1 -1
- package/src/common/packed_values_cache.ts +55 -0
- package/src/index.ts +1 -0
- package/src/mocks/fixtures.ts +169 -0
- package/src/mocks/index.ts +1 -0
- package/src/public/abstract_phase_manager.ts +571 -0
- package/src/public/app_logic_phase_manager.ts +76 -0
- package/src/public/execution.ts +4 -0
- package/src/public/executor.ts +93 -93
- package/src/public/hints_builder.ts +119 -0
- package/src/public/index.ts +5 -0
- package/src/public/phase_manager_factory.ts +126 -0
- package/src/public/public_execution_context.ts +43 -37
- package/src/public/public_executor.ts +267 -0
- package/src/public/public_kernel.ts +139 -0
- package/src/public/public_kernel_circuit_simulator.ts +36 -0
- package/src/public/public_processor.ts +212 -0
- package/src/public/setup_phase_manager.ts +66 -0
- package/src/public/tail_phase_manager.ts +120 -0
- package/src/public/teardown_phase_manager.ts +66 -0
- package/src/public/transitional_adaptors.ts +249 -0
- package/src/public/utils.ts +31 -0
- package/src/simulator/acvm_native.ts +94 -47
- package/src/simulator/acvm_wasm.ts +7 -3
- package/dest/avm/temporary_executor_migration.d.ts +0 -27
- package/dest/avm/temporary_executor_migration.d.ts.map +0 -1
- package/dest/avm/temporary_executor_migration.js +0 -94
- package/dest/common/packed_args_cache.d.ts +0 -28
- package/dest/common/packed_args_cache.d.ts.map +0 -1
- package/dest/common/packed_args_cache.js +0 -50
- package/src/avm/temporary_executor_migration.ts +0 -136
- package/src/common/packed_args_cache.ts +0 -55
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type KernelCircuitPublicInputs, type PublicKernelCircuitPrivateInputs, type PublicKernelCircuitPublicInputs, type PublicKernelTailCircuitPrivateInputs } from '@aztec/circuits.js';
|
|
2
|
+
/**
|
|
3
|
+
* Circuit simulator for the public kernel circuits.
|
|
4
|
+
*/
|
|
5
|
+
export interface PublicKernelCircuitSimulator {
|
|
6
|
+
/**
|
|
7
|
+
* Simulates the public kernel setup circuit from its inputs.
|
|
8
|
+
* @param inputs - Inputs to the circuit.
|
|
9
|
+
* @returns The public inputs as outputs of the simulation.
|
|
10
|
+
*/
|
|
11
|
+
publicKernelCircuitSetup(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
12
|
+
/**
|
|
13
|
+
* Simulates the public kernel app logic circuit from its inputs.
|
|
14
|
+
* @param inputs - Inputs to the circuit.
|
|
15
|
+
* @returns The public inputs as outputs of the simulation.
|
|
16
|
+
*/
|
|
17
|
+
publicKernelCircuitAppLogic(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
18
|
+
/**
|
|
19
|
+
* Simulates the public kernel teardown circuit from its inputs.
|
|
20
|
+
* @param inputs - Inputs to the circuit.
|
|
21
|
+
* @returns The public inputs as outputs of the simulation.
|
|
22
|
+
*/
|
|
23
|
+
publicKernelCircuitTeardown(inputs: PublicKernelCircuitPrivateInputs): Promise<PublicKernelCircuitPublicInputs>;
|
|
24
|
+
/**
|
|
25
|
+
* Simulates the public kernel tail circuit from its inputs.
|
|
26
|
+
* @param inputs - Inputs to the circuit.
|
|
27
|
+
* @returns The public inputs as outputs of the simulation.
|
|
28
|
+
*/
|
|
29
|
+
publicKernelCircuitTail(inputs: PublicKernelTailCircuitPrivateInputs): Promise<KernelCircuitPublicInputs>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=public_kernel_circuit_simulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_kernel_circuit_simulator.d.ts","sourceRoot":"","sources":["../../src/public/public_kernel_circuit_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,oCAAoC,EAC1C,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7G;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChH;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChH;;;;OAIG;IACH,uBAAuB,CAAC,MAAM,EAAE,oCAAoC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC3G"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2tlcm5lbF9jaXJjdWl0X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX2tlcm5lbF9jaXJjdWl0X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type BlockProver, type FailedTx, type ProcessedTx, Tx, type TxValidator } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
3
|
+
import { type ProcessReturnValues } from '@aztec/foundation/abi';
|
|
4
|
+
import { PublicExecutor, type PublicStateDB, type SimulationProvider } from '@aztec/simulator';
|
|
5
|
+
import { type ContractDataSource } from '@aztec/types/contracts';
|
|
6
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
7
|
+
import { ContractsDataSourcePublicDB } from './public_executor.js';
|
|
8
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PublicProcessorFactory {
|
|
13
|
+
private merkleTree;
|
|
14
|
+
private contractDataSource;
|
|
15
|
+
private simulator;
|
|
16
|
+
constructor(merkleTree: MerkleTreeOperations, contractDataSource: ContractDataSource, simulator: SimulationProvider);
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new instance of a PublicProcessor.
|
|
19
|
+
* @param historicalHeader - The header of a block previous to the one in which the tx is included.
|
|
20
|
+
* @param globalVariables - The global variables for the block being processed.
|
|
21
|
+
* @param newContracts - Provides access to contract bytecode for public executions.
|
|
22
|
+
* @returns A new instance of a PublicProcessor.
|
|
23
|
+
*/
|
|
24
|
+
create(historicalHeader: Header | undefined, globalVariables: GlobalVariables): Promise<PublicProcessor>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
28
|
+
* any public function calls in them. Txs with private calls only are unaffected.
|
|
29
|
+
*/
|
|
30
|
+
export declare class PublicProcessor {
|
|
31
|
+
protected db: MerkleTreeOperations;
|
|
32
|
+
protected publicExecutor: PublicExecutor;
|
|
33
|
+
protected publicKernel: PublicKernelCircuitSimulator;
|
|
34
|
+
protected globalVariables: GlobalVariables;
|
|
35
|
+
protected historicalHeader: Header;
|
|
36
|
+
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
37
|
+
protected publicStateDB: PublicStateDB;
|
|
38
|
+
private log;
|
|
39
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, log?: import("@aztec/foundation/log").Logger);
|
|
40
|
+
/**
|
|
41
|
+
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
42
|
+
* @param txs - Txs to process.
|
|
43
|
+
* @returns The list of processed txs with their circuit simulation outputs.
|
|
44
|
+
*/
|
|
45
|
+
process(txs: Tx[], maxTransactions?: number, blockProver?: BlockProver, txValidator?: TxValidator<ProcessedTx>): Promise<[ProcessedTx[], FailedTx[], ProcessReturnValues[]]>;
|
|
46
|
+
/**
|
|
47
|
+
* Makes an empty processed tx. Useful for padding a block to a power of two number of txs.
|
|
48
|
+
* @returns A processed tx with empty data.
|
|
49
|
+
*/
|
|
50
|
+
makeEmptyProcessedTx(): ProcessedTx;
|
|
51
|
+
private processTxWithPublicCalls;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=public_processor.d.ts.map
|
|
@@ -0,0 +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,KAAK,WAAW,EAGhB,EAAE,EACF,KAAK,WAAW,EAKjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAkC,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAI/D,OAAO,EAAE,2BAA2B,EAAoC,MAAM,sBAAsB,CAAC;AAErG,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,mBAAmB,EAAE,CAAC,CAAC;IAiD9D;;;OAGG;IACI,oBAAoB,IAAI,WAAW;YAK5B,wBAAwB;CA2DvC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Tx, makeEmptyProcessedTx, makeProcessedTx, toTxEffect, validateProcessedTx, } from '@aztec/circuit-types';
|
|
2
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
4
|
+
import { PublicExecutor } from '@aztec/simulator';
|
|
5
|
+
import { PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
+
import { PhaseManagerFactory } from './phase_manager_factory.js';
|
|
7
|
+
import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from './public_executor.js';
|
|
8
|
+
import { RealPublicKernelCircuitSimulator } from './public_kernel.js';
|
|
9
|
+
/**
|
|
10
|
+
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
11
|
+
*/
|
|
12
|
+
export class PublicProcessorFactory {
|
|
13
|
+
constructor(merkleTree, contractDataSource, simulator) {
|
|
14
|
+
this.merkleTree = merkleTree;
|
|
15
|
+
this.contractDataSource = contractDataSource;
|
|
16
|
+
this.simulator = simulator;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new instance of a PublicProcessor.
|
|
20
|
+
* @param historicalHeader - The header of a block previous to the one in which the tx is included.
|
|
21
|
+
* @param globalVariables - The global variables for the block being processed.
|
|
22
|
+
* @param newContracts - Provides access to contract bytecode for public executions.
|
|
23
|
+
* @returns A new instance of a PublicProcessor.
|
|
24
|
+
*/
|
|
25
|
+
async create(historicalHeader, globalVariables) {
|
|
26
|
+
historicalHeader = historicalHeader ?? (await this.merkleTree.buildInitialHeader());
|
|
27
|
+
const publicContractsDB = new ContractsDataSourcePublicDB(this.contractDataSource);
|
|
28
|
+
const worldStatePublicDB = new WorldStatePublicDB(this.merkleTree);
|
|
29
|
+
const worldStateDB = new WorldStateDB(this.merkleTree);
|
|
30
|
+
const publicExecutor = new PublicExecutor(worldStatePublicDB, publicContractsDB, worldStateDB, historicalHeader);
|
|
31
|
+
return new PublicProcessor(this.merkleTree, publicExecutor, new RealPublicKernelCircuitSimulator(this.simulator), globalVariables, historicalHeader, publicContractsDB, worldStatePublicDB);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Converts Txs lifted from the P2P module into ProcessedTx objects by executing
|
|
36
|
+
* any public function calls in them. Txs with private calls only are unaffected.
|
|
37
|
+
*/
|
|
38
|
+
export class PublicProcessor {
|
|
39
|
+
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, log = createDebugLogger('aztec:sequencer:public-processor')) {
|
|
40
|
+
this.db = db;
|
|
41
|
+
this.publicExecutor = publicExecutor;
|
|
42
|
+
this.publicKernel = publicKernel;
|
|
43
|
+
this.globalVariables = globalVariables;
|
|
44
|
+
this.historicalHeader = historicalHeader;
|
|
45
|
+
this.publicContractsDB = publicContractsDB;
|
|
46
|
+
this.publicStateDB = publicStateDB;
|
|
47
|
+
this.log = log;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Run each tx through the public circuit and the public kernel circuit if needed.
|
|
51
|
+
* @param txs - Txs to process.
|
|
52
|
+
* @returns The list of processed txs with their circuit simulation outputs.
|
|
53
|
+
*/
|
|
54
|
+
async process(txs, maxTransactions = txs.length, blockProver, txValidator) {
|
|
55
|
+
// The processor modifies the tx objects in place, so we need to clone them.
|
|
56
|
+
txs = txs.map(tx => Tx.clone(tx));
|
|
57
|
+
const result = [];
|
|
58
|
+
const failed = [];
|
|
59
|
+
const returns = [];
|
|
60
|
+
for (const tx of txs) {
|
|
61
|
+
// only process up to the limit of the block
|
|
62
|
+
if (result.length >= maxTransactions) {
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const [processedTx, returnValues] = !tx.hasPublicCalls()
|
|
67
|
+
? [makeProcessedTx(tx, tx.data.toKernelCircuitPublicInputs(), tx.proof, [])]
|
|
68
|
+
: await this.processTxWithPublicCalls(tx);
|
|
69
|
+
validateProcessedTx(processedTx);
|
|
70
|
+
// Re-validate the transaction
|
|
71
|
+
if (txValidator) {
|
|
72
|
+
// Only accept processed transactions that are not double-spends,
|
|
73
|
+
// public functions emitting nullifiers would pass earlier check but fail here.
|
|
74
|
+
// Note that we're checking all nullifiers generated in the private execution twice,
|
|
75
|
+
// we could store the ones already checked and skip them here as an optimization.
|
|
76
|
+
const [_, invalid] = await txValidator.validateTxs([processedTx]);
|
|
77
|
+
if (invalid.length) {
|
|
78
|
+
throw new Error(`Transaction ${invalid[0].hash} invalid after processing public functions`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// if we were given a prover then send the transaction to it for proving
|
|
82
|
+
if (blockProver) {
|
|
83
|
+
await blockProver.addNewTx(processedTx);
|
|
84
|
+
}
|
|
85
|
+
result.push(processedTx);
|
|
86
|
+
returns.push(returnValues);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
const errorMessage = err instanceof Error ? err.message : 'Unknown error';
|
|
90
|
+
this.log.warn(`Failed to process tx ${tx.getTxHash()}: ${errorMessage}`);
|
|
91
|
+
failed.push({
|
|
92
|
+
tx,
|
|
93
|
+
error: err instanceof Error ? err : new Error(errorMessage),
|
|
94
|
+
});
|
|
95
|
+
returns.push([]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return [result, failed, returns];
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Makes an empty processed tx. Useful for padding a block to a power of two number of txs.
|
|
102
|
+
* @returns A processed tx with empty data.
|
|
103
|
+
*/
|
|
104
|
+
makeEmptyProcessedTx() {
|
|
105
|
+
const { chainId, version } = this.globalVariables;
|
|
106
|
+
return makeEmptyProcessedTx(this.historicalHeader.clone(), chainId, version);
|
|
107
|
+
}
|
|
108
|
+
async processTxWithPublicCalls(tx) {
|
|
109
|
+
let returnValues = undefined;
|
|
110
|
+
const publicRequests = [];
|
|
111
|
+
let phase = PhaseManagerFactory.phaseFromTx(tx, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
112
|
+
this.log.debug(`Beginning processing in phase ${phase?.phase} for tx ${tx.getTxHash()}`);
|
|
113
|
+
let proof = tx.proof;
|
|
114
|
+
let publicKernelPublicInput = tx.data.toPublicKernelCircuitPublicInputs();
|
|
115
|
+
let finalKernelOutput;
|
|
116
|
+
let revertReason;
|
|
117
|
+
const timer = new Timer();
|
|
118
|
+
while (phase) {
|
|
119
|
+
const output = await phase.handle(tx, publicKernelPublicInput, proof);
|
|
120
|
+
if (phase.phase === PublicKernelPhase.APP_LOGIC) {
|
|
121
|
+
returnValues = output.returnValues;
|
|
122
|
+
}
|
|
123
|
+
publicRequests.push(...output.kernelRequests);
|
|
124
|
+
publicKernelPublicInput = output.publicKernelOutput;
|
|
125
|
+
finalKernelOutput = output.finalKernelOutput;
|
|
126
|
+
proof = output.publicKernelProof;
|
|
127
|
+
revertReason ?? (revertReason = output.revertReason);
|
|
128
|
+
phase = PhaseManagerFactory.phaseFromOutput(publicKernelPublicInput, phase, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
129
|
+
}
|
|
130
|
+
if (!finalKernelOutput) {
|
|
131
|
+
throw new Error('Final public kernel was not executed.');
|
|
132
|
+
}
|
|
133
|
+
const processedTx = makeProcessedTx(tx, finalKernelOutput, proof, publicRequests, revertReason);
|
|
134
|
+
this.log.debug(`Processed public part of ${tx.getTxHash()}`, {
|
|
135
|
+
eventName: 'tx-sequencer-processing',
|
|
136
|
+
duration: timer.ms(),
|
|
137
|
+
effectsSize: toTxEffect(processedTx).toBuffer().length,
|
|
138
|
+
publicDataUpdateRequests: processedTx.data.end.publicDataUpdateRequests.filter(x => !x.leafSlot.isZero()).length ?? 0,
|
|
139
|
+
...tx.getStats(),
|
|
140
|
+
});
|
|
141
|
+
return [processedTx, returnValues];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBTUwsRUFBRSxFQUVGLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNWLG1CQUFtQixHQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBSTlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUErQyxNQUFNLGtCQUFrQixDQUFDO0FBSS9GLE9BQU8sRUFBNkIsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1UsVUFBZ0MsRUFDaEMsa0JBQXNDLEVBQ3RDLFNBQTZCO1FBRjdCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBb0I7SUFDcEMsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLGdCQUFvQyxFQUNwQyxlQUFnQztRQUVoQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFFcEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLDJC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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type Proof, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_executor.js';
|
|
7
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
|
+
/**
|
|
9
|
+
* The phase manager responsible for performing the fee preparation phase.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SetupPhaseManager extends AbstractPhaseManager {
|
|
12
|
+
protected db: MerkleTreeOperations;
|
|
13
|
+
protected publicExecutor: PublicExecutor;
|
|
14
|
+
protected publicKernel: PublicKernelCircuitSimulator;
|
|
15
|
+
protected globalVariables: GlobalVariables;
|
|
16
|
+
protected historicalHeader: Header;
|
|
17
|
+
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
18
|
+
protected publicStateDB: PublicStateDB;
|
|
19
|
+
phase: PublicKernelPhase;
|
|
20
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
21
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<{
|
|
22
|
+
kernelRequests: import("@aztec/circuit-types").PublicKernelNonTailRequest[];
|
|
23
|
+
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
24
|
+
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
25
|
+
publicKernelProof: Proof;
|
|
26
|
+
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
27
|
+
returnValues: undefined;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=setup_phase_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/setup_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAC5B,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,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,oBAAoB;IAEvD,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;IAC/B,KAAK,EAAE,iBAAiB;gBAPrB,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,EAC/B,KAAK,GAAE,iBAA2C;IAK5C,MAAM,CACnB,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,yBAAyB,EAAE,KAAK;;;;;;;;CA+BnC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* The phase manager responsible for performing the fee preparation phase.
|
|
5
|
+
*/
|
|
6
|
+
export class SetupPhaseManager extends AbstractPhaseManager {
|
|
7
|
+
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.SETUP) {
|
|
8
|
+
super(db, publicExecutor, publicKernel, globalVariables, historicalHeader, phase);
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.publicExecutor = publicExecutor;
|
|
11
|
+
this.publicKernel = publicKernel;
|
|
12
|
+
this.globalVariables = globalVariables;
|
|
13
|
+
this.historicalHeader = historicalHeader;
|
|
14
|
+
this.publicContractsDB = publicContractsDB;
|
|
15
|
+
this.publicStateDB = publicStateDB;
|
|
16
|
+
this.phase = phase;
|
|
17
|
+
}
|
|
18
|
+
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
19
|
+
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
20
|
+
const [kernelInputs, publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs, revertReason] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof).catch(
|
|
21
|
+
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
22
|
+
async (err) => {
|
|
23
|
+
await this.publicStateDB.rollbackToCommit();
|
|
24
|
+
throw err;
|
|
25
|
+
});
|
|
26
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
|
|
27
|
+
await this.publicStateDB.checkpoint();
|
|
28
|
+
// Return a list of setup proving requests
|
|
29
|
+
const kernelRequests = kernelInputs.map(input => {
|
|
30
|
+
const request = {
|
|
31
|
+
type: PublicKernelType.SETUP,
|
|
32
|
+
inputs: input,
|
|
33
|
+
};
|
|
34
|
+
return request;
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
kernelRequests,
|
|
38
|
+
kernelInputs,
|
|
39
|
+
publicKernelOutput,
|
|
40
|
+
publicKernelProof,
|
|
41
|
+
revertReason,
|
|
42
|
+
returnValues: undefined,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvc2V0dXBfcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFVM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsb0JBQW9CO0lBQ3pELFlBQ1ksRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QixFQUMvQixRQUEyQixpQkFBaUIsQ0FBQyxLQUFLO1FBRXpELEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFUeEUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBNkM7SUFHM0QsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEVBQU0sRUFDTiwwQkFBMkQsRUFDM0QseUJBQWdDO1FBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLEdBQ25HLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLEtBQUs7UUFDcEcsd0ZBQXdGO1FBQ3hGLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUNGLENBQUM7UUFDSixFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV0QywwQ0FBMEM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO2dCQUM1QixNQUFNLEVBQUUsS0FBSzthQUNkLENBQUM7WUFDRixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87WUFDTCxjQUFjO1lBQ2QsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type Proof, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_executor.js';
|
|
7
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
|
+
export declare class TailPhaseManager extends AbstractPhaseManager {
|
|
9
|
+
protected db: MerkleTreeOperations;
|
|
10
|
+
protected publicExecutor: PublicExecutor;
|
|
11
|
+
protected publicKernel: PublicKernelCircuitSimulator;
|
|
12
|
+
protected globalVariables: GlobalVariables;
|
|
13
|
+
protected historicalHeader: Header;
|
|
14
|
+
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
15
|
+
protected publicStateDB: PublicStateDB;
|
|
16
|
+
readonly phase: PublicKernelPhase;
|
|
17
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
18
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<{
|
|
19
|
+
kernelRequests: import("@aztec/circuit-types").PublicKernelTailRequest[];
|
|
20
|
+
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
21
|
+
finalKernelOutput: KernelCircuitPublicInputs;
|
|
22
|
+
publicKernelProof: Proof;
|
|
23
|
+
revertReason: undefined;
|
|
24
|
+
returnValues: undefined;
|
|
25
|
+
}>;
|
|
26
|
+
private runTailKernelCircuit;
|
|
27
|
+
private simulate;
|
|
28
|
+
private sortNoteHashes;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=tail_phase_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/tail_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,EAE9B,KAAK,KAAK,EACV,KAAK,+BAA+B,EAMrC,MAAM,oBAAoB,CAAC;AAE5B,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,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,qBAAa,gBAAiB,SAAQ,oBAAoB;IAEtD,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;aACtB,KAAK,EAAE,iBAAiB;gBAP9B,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,EACtB,KAAK,GAAE,iBAA0C;IAK7D,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,KAAK;;;;;;;;YAgCpG,oBAAoB;YAiBpB,QAAQ;IA2BtB,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
+
import { MAX_NEW_NOTE_HASHES_PER_TX, PublicKernelTailCircuitPrivateInputs, makeEmptyProof, mergeAccumulatedData, sortByCounter, } from '@aztec/circuits.js';
|
|
3
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
4
|
+
export class TailPhaseManager extends AbstractPhaseManager {
|
|
5
|
+
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TAIL) {
|
|
6
|
+
super(db, publicExecutor, publicKernel, globalVariables, historicalHeader, phase);
|
|
7
|
+
this.db = db;
|
|
8
|
+
this.publicExecutor = publicExecutor;
|
|
9
|
+
this.publicKernel = publicKernel;
|
|
10
|
+
this.globalVariables = globalVariables;
|
|
11
|
+
this.historicalHeader = historicalHeader;
|
|
12
|
+
this.publicContractsDB = publicContractsDB;
|
|
13
|
+
this.publicStateDB = publicStateDB;
|
|
14
|
+
this.phase = phase;
|
|
15
|
+
}
|
|
16
|
+
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
17
|
+
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
18
|
+
const [inputs, finalKernelOutput] = await this.runTailKernelCircuit(previousPublicKernelOutput, previousPublicKernelProof).catch(
|
|
19
|
+
// the abstract phase manager throws if simulation gives error in non-revertible phase
|
|
20
|
+
async (err) => {
|
|
21
|
+
await this.publicStateDB.rollbackToCommit();
|
|
22
|
+
throw err;
|
|
23
|
+
});
|
|
24
|
+
// commit the state updates from this transaction
|
|
25
|
+
await this.publicStateDB.commit();
|
|
26
|
+
// Return a tail proving request
|
|
27
|
+
const request = {
|
|
28
|
+
type: PublicKernelType.TAIL,
|
|
29
|
+
inputs: inputs,
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
kernelRequests: [request],
|
|
33
|
+
publicKernelOutput: previousPublicKernelOutput,
|
|
34
|
+
finalKernelOutput,
|
|
35
|
+
publicKernelProof: makeEmptyProof(),
|
|
36
|
+
revertReason: undefined,
|
|
37
|
+
returnValues: undefined,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async runTailKernelCircuit(previousOutput, previousProof) {
|
|
41
|
+
const [inputs, output] = await this.simulate(previousOutput, previousProof);
|
|
42
|
+
// Temporary hack. Should sort them in the tail circuit.
|
|
43
|
+
const noteHashes = mergeAccumulatedData(MAX_NEW_NOTE_HASHES_PER_TX, previousOutput.endNonRevertibleData.newNoteHashes, previousOutput.end.newNoteHashes);
|
|
44
|
+
output.end.newNoteHashes = this.sortNoteHashes(noteHashes);
|
|
45
|
+
return [inputs, output];
|
|
46
|
+
}
|
|
47
|
+
async simulate(previousOutput, previousProof) {
|
|
48
|
+
const previousKernel = this.getPreviousKernelData(previousOutput, previousProof);
|
|
49
|
+
const { validationRequests, endNonRevertibleData, end } = previousOutput;
|
|
50
|
+
const nullifierReadRequestHints = await this.hintsBuilder.getNullifierReadRequestHints(validationRequests.nullifierReadRequests, endNonRevertibleData.newNullifiers, end.newNullifiers);
|
|
51
|
+
const nullifierNonExistentReadRequestHints = await this.hintsBuilder.getNullifierNonExistentReadRequestHints(validationRequests.nullifierNonExistentReadRequests, endNonRevertibleData.newNullifiers, end.newNullifiers);
|
|
52
|
+
// We take a deep copy (clone) of these to pass to the prover
|
|
53
|
+
const inputs = new PublicKernelTailCircuitPrivateInputs(previousKernel, nullifierReadRequestHints, nullifierNonExistentReadRequestHints);
|
|
54
|
+
return [inputs.clone(), await this.publicKernel.publicKernelCircuitTail(inputs)];
|
|
55
|
+
}
|
|
56
|
+
sortNoteHashes(noteHashes) {
|
|
57
|
+
return sortByCounter(noteHashes.map(n => ({ ...n, counter: n.counter.toNumber() }))).map(n => n.value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbF9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90YWlsX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixnQkFBZ0IsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzNGLE9BQU8sRUFLTCwwQkFBMEIsRUFHMUIsb0NBQW9DLEVBRXBDLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxHQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUN4RCxZQUNZLEVBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFlBQTBDLEVBQzFDLGVBQWdDLEVBQ2hDLGdCQUF3QixFQUN4QixpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEIsUUFBMkIsaUJBQWlCLENBQUMsSUFBSTtRQUVqRSxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBVHhFLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBOEI7UUFDMUMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ3RCLFVBQUssR0FBTCxLQUFLLENBQTRDO0lBR25FLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQU0sRUFBRSwwQkFBMkQsRUFBRSx5QkFBZ0M7UUFDaEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJB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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type Proof, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
+
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_executor.js';
|
|
7
|
+
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
|
+
/**
|
|
9
|
+
* The phase manager responsible for performing the fee preparation phase.
|
|
10
|
+
*/
|
|
11
|
+
export declare class TeardownPhaseManager extends AbstractPhaseManager {
|
|
12
|
+
protected db: MerkleTreeOperations;
|
|
13
|
+
protected publicExecutor: PublicExecutor;
|
|
14
|
+
protected publicKernel: PublicKernelCircuitSimulator;
|
|
15
|
+
protected globalVariables: GlobalVariables;
|
|
16
|
+
protected historicalHeader: Header;
|
|
17
|
+
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
18
|
+
protected publicStateDB: PublicStateDB;
|
|
19
|
+
phase: PublicKernelPhase;
|
|
20
|
+
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
21
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, previousPublicKernelProof: Proof): Promise<{
|
|
22
|
+
kernelRequests: import("@aztec/circuit-types").PublicKernelNonTailRequest[];
|
|
23
|
+
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
24
|
+
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
25
|
+
publicKernelProof: Proof;
|
|
26
|
+
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
27
|
+
returnValues: undefined;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=teardown_phase_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAC5B,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,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAE1D,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;IAC/B,KAAK,EAAE,iBAAiB;gBAPrB,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,EAC/B,KAAK,GAAE,iBAA8C;IAK/C,MAAM,CACnB,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,yBAAyB,EAAE,KAAK;;;;;;;;CA+BnC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
+
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* The phase manager responsible for performing the fee preparation phase.
|
|
5
|
+
*/
|
|
6
|
+
export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
7
|
+
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TEARDOWN) {
|
|
8
|
+
super(db, publicExecutor, publicKernel, globalVariables, historicalHeader, phase);
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.publicExecutor = publicExecutor;
|
|
11
|
+
this.publicKernel = publicKernel;
|
|
12
|
+
this.globalVariables = globalVariables;
|
|
13
|
+
this.historicalHeader = historicalHeader;
|
|
14
|
+
this.publicContractsDB = publicContractsDB;
|
|
15
|
+
this.publicStateDB = publicStateDB;
|
|
16
|
+
this.phase = phase;
|
|
17
|
+
}
|
|
18
|
+
async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
|
|
19
|
+
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
20
|
+
const [kernelInputs, publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs, revertReason] = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput, previousPublicKernelProof).catch(
|
|
21
|
+
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
22
|
+
async (err) => {
|
|
23
|
+
await this.publicStateDB.rollbackToCommit();
|
|
24
|
+
throw err;
|
|
25
|
+
});
|
|
26
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
|
|
27
|
+
await this.publicStateDB.checkpoint();
|
|
28
|
+
// Return a list of teardown proving requests
|
|
29
|
+
const kernelRequests = kernelInputs.map(input => {
|
|
30
|
+
const request = {
|
|
31
|
+
type: PublicKernelType.TEARDOWN,
|
|
32
|
+
inputs: input,
|
|
33
|
+
};
|
|
34
|
+
return request;
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
kernelRequests,
|
|
38
|
+
kernelInputs,
|
|
39
|
+
publicKernelOutput,
|
|
40
|
+
publicKernelProof,
|
|
41
|
+
revertReason,
|
|
42
|
+
returnValues: undefined,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFXLE1BQU0sc0JBQXNCLENBQUM7QUFVM0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsb0JBQW9CO0lBQzVELFlBQ1ksRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QixFQUMvQixRQUEyQixpQkFBaUIsQ0FBQyxRQUFRO1FBRTVELEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFUeEUsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDL0IsVUFBSyxHQUFMLEtBQUssQ0FBZ0Q7SUFHOUQsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQ25CLEVBQU0sRUFDTiwwQkFBMkQsRUFDM0QseUJBQWdDO1FBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxDQUFDLEdBQ25HLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLEtBQUs7UUFDcEcsd0ZBQXdGO1FBQ3hGLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUNGLENBQUM7UUFDSixFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV0Qyw2Q0FBNkM7UUFDN0MsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMvQixNQUFNLEVBQUUsS0FBSzthQUNkLENBQUM7WUFDRixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU87WUFDTCxjQUFjO1lBQ2QsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsWUFBWTtZQUNaLFlBQVksRUFBRSxTQUFTO1NBQ3hCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { type GlobalVariables, type Header } from '@aztec/circuits.js';
|
|
3
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
4
|
+
import { type AvmContext } from '../avm/avm_context.js';
|
|
5
|
+
import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
6
|
+
import { type AvmMachineState } from '../avm/avm_machine_state.js';
|
|
7
|
+
import { AvmContractCallResults } from '../avm/avm_message_call_result.js';
|
|
8
|
+
import { type JournalData } from '../avm/journal/journal.js';
|
|
9
|
+
import { type PublicExecution, type PublicExecutionResult } from './execution.js';
|
|
10
|
+
import { PublicExecutionContext } from './public_execution_context.js';
|
|
11
|
+
/**
|
|
12
|
+
* Convert a PublicExecution(Environment) object to an AvmExecutionEnvironment
|
|
13
|
+
*
|
|
14
|
+
* @param current
|
|
15
|
+
* @param globalVariables
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare function createAvmExecutionEnvironment(current: PublicExecution, header: Header, globalVariables: GlobalVariables): AvmExecutionEnvironment;
|
|
19
|
+
export declare function createPublicExecutionContext(avmContext: AvmContext, calldata: Fr[]): PublicExecutionContext;
|
|
20
|
+
/**
|
|
21
|
+
* Convert the result of an AVM contract call to a PublicExecutionResult for the public kernel
|
|
22
|
+
*
|
|
23
|
+
* @param execution
|
|
24
|
+
* @param newWorldState
|
|
25
|
+
* @param result
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
export declare function convertAvmResults(executionContext: PublicExecutionContext, newWorldState: JournalData, result: AvmContractCallResults, endMachineState: AvmMachineState): Promise<PublicExecutionResult>;
|
|
29
|
+
export declare function convertPublicExecutionResult(res: PublicExecutionResult): AvmContractCallResults;
|
|
30
|
+
export declare function updateAvmContextFromPublicExecutionResult(ctx: AvmContext, result: PublicExecutionResult): void;
|
|
31
|
+
export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
|
|
32
|
+
export declare function isAvmBytecode(bytecode: Buffer): boolean;
|
|
33
|
+
//# sourceMappingURL=transitional_adaptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AAEA,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,MAAM,EAKZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,GAC/B,uBAAuB,CAoBzB;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,sBAAsB,CAmC3G;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,sBAAsB,EACxC,aAAa,EAAE,WAAW,EAC1B,MAAM,EAAE,sBAAsB,EAC9B,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CA+DhC;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,qBAAqB,GAAG,sBAAsB,CAE/F;AAED,wBAAgB,yCAAyC,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAoD9G;AASD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGvD"}
|