@aztec/simulator 0.62.0 → 0.63.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 -16
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +2 -70
- package/dest/acvm/oracle/oracle.d.ts +4 -4
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +10 -11
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -5
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +8 -8
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +2 -1
- package/dest/avm/avm_machine_state.d.ts +27 -8
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +6 -10
- package/dest/avm/avm_memory_types.d.ts +8 -0
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +5 -1
- package/dest/avm/avm_simulator.d.ts +2 -19
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +12 -14
- package/dest/avm/avm_tree.d.ts +249 -0
- package/dest/avm/avm_tree.d.ts.map +1 -0
- package/dest/avm/avm_tree.js +637 -0
- package/dest/avm/errors.d.ts +4 -17
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +21 -50
- package/dest/avm/fixtures/index.d.ts +7 -2
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +12 -12
- package/dest/avm/index.d.ts +1 -0
- package/dest/avm/index.d.ts.map +1 -1
- package/dest/avm/index.js +2 -1
- package/dest/avm/journal/journal.d.ts +43 -24
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +172 -39
- package/dest/avm/journal/nullifiers.d.ts +5 -4
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +2 -3
- package/dest/avm/journal/public_storage.d.ts +6 -5
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +1 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +4 -10
- package/dest/avm/opcodes/arithmetic.d.ts +4 -1
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +18 -4
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +1 -3
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +1 -2
- package/dest/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/avm/opcodes/contract.js +2 -3
- package/dest/avm/opcodes/control_flow.d.ts +4 -0
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +21 -6
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +1 -2
- package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/avm/opcodes/ec_add.js +5 -11
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +1 -2
- package/dest/avm/opcodes/external_calls.d.ts +4 -2
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +38 -22
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +1 -4
- package/dest/avm/opcodes/instruction.d.ts +4 -0
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +7 -1
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +1 -7
- package/dest/avm/opcodes/misc.js +3 -3
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +6 -5
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +2 -4
- package/dest/avm/serialization/bytecode_serialization.d.ts +1 -6
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +24 -20
- package/dest/client/client_execution_context.d.ts +7 -11
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +18 -20
- package/dest/client/db_oracle.d.ts +17 -10
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +5 -4
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +3 -2
- package/dest/client/view_data_oracle.d.ts +6 -12
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +10 -12
- package/dest/common/errors.d.ts +15 -2
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +85 -4
- package/dest/mocks/fixtures.d.ts +9 -28
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +12 -57
- package/dest/public/dual_side_effect_trace.d.ts +34 -26
- package/dest/public/dual_side_effect_trace.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.js +48 -36
- package/dest/public/enqueued_call_side_effect_trace.d.ts +96 -33
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
- package/dest/public/enqueued_call_side_effect_trace.js +212 -138
- package/dest/public/execution.d.ts +50 -17
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -29
- package/dest/public/executor.d.ts +28 -11
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +33 -33
- package/dest/public/index.d.ts +4 -5
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +4 -5
- package/dest/public/public_db_sources.d.ts +1 -0
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +12 -5
- package/dest/public/public_processor.d.ts +7 -11
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +60 -42
- package/dest/public/public_processor_metrics.d.ts +3 -3
- package/dest/public/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_processor_metrics.js +1 -1
- package/dest/public/public_tx_context.d.ts +130 -0
- package/dest/public/public_tx_context.d.ts.map +1 -0
- package/dest/public/public_tx_context.js +293 -0
- package/dest/public/public_tx_simulator.d.ts +36 -0
- package/dest/public/public_tx_simulator.d.ts.map +1 -0
- package/dest/public/public_tx_simulator.js +148 -0
- package/dest/public/side_effect_trace.d.ts +30 -15
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +70 -16
- package/dest/public/side_effect_trace_interface.d.ts +43 -12
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/transitional_adapters.d.ts +9 -0
- package/dest/public/transitional_adapters.d.ts.map +1 -0
- package/dest/public/transitional_adapters.js +127 -0
- package/dest/public/utils.d.ts +5 -0
- package/dest/public/utils.d.ts.map +1 -0
- package/dest/public/utils.js +30 -0
- package/package.json +12 -9
- package/src/acvm/acvm.ts +3 -94
- package/src/acvm/oracle/oracle.ts +9 -14
- package/src/acvm/oracle/typed_oracle.ts +8 -8
- package/src/avm/avm_gas.ts +1 -0
- package/src/avm/avm_machine_state.ts +28 -12
- package/src/avm/avm_memory_types.ts +5 -0
- package/src/avm/avm_simulator.ts +13 -16
- package/src/avm/avm_tree.ts +785 -0
- package/src/avm/errors.ts +25 -48
- package/src/avm/fixtures/index.ts +16 -12
- package/src/avm/index.ts +1 -0
- package/src/avm/journal/journal.ts +291 -52
- package/src/avm/journal/nullifiers.ts +7 -7
- package/src/avm/journal/public_storage.ts +5 -5
- package/src/avm/opcodes/accrued_substate.ts +3 -9
- package/src/avm/opcodes/arithmetic.ts +26 -4
- package/src/avm/opcodes/bitwise.ts +0 -2
- package/src/avm/opcodes/comparators.ts +0 -1
- package/src/avm/opcodes/contract.ts +1 -2
- package/src/avm/opcodes/control_flow.ts +24 -5
- package/src/avm/opcodes/conversion.ts +0 -1
- package/src/avm/opcodes/ec_add.ts +6 -9
- package/src/avm/opcodes/environment_getters.ts +0 -1
- package/src/avm/opcodes/external_calls.ts +39 -21
- package/src/avm/opcodes/hashing.ts +0 -3
- package/src/avm/opcodes/instruction.ts +7 -0
- package/src/avm/opcodes/memory.ts +0 -6
- package/src/avm/opcodes/misc.ts +2 -2
- package/src/avm/opcodes/multi_scalar_mul.ts +5 -4
- package/src/avm/opcodes/storage.ts +1 -3
- package/src/avm/serialization/bytecode_serialization.ts +31 -22
- package/src/client/client_execution_context.ts +22 -23
- package/src/client/db_oracle.ts +22 -11
- package/src/client/private_execution.ts +5 -4
- package/src/client/unconstrained_execution.ts +2 -1
- package/src/client/view_data_oracle.ts +14 -13
- package/src/common/errors.ts +119 -3
- package/src/mocks/fixtures.ts +15 -106
- package/src/public/dual_side_effect_trace.ts +138 -50
- package/src/public/enqueued_call_side_effect_trace.ts +352 -212
- package/src/public/execution.ts +58 -42
- package/src/public/executor.ts +52 -67
- package/src/public/index.ts +7 -5
- package/src/public/public_db_sources.ts +12 -4
- package/src/public/public_processor.ts +111 -73
- package/src/public/public_processor_metrics.ts +3 -3
- package/src/public/public_tx_context.ts +411 -0
- package/src/public/public_tx_simulator.ts +232 -0
- package/src/public/side_effect_trace.ts +154 -28
- package/src/public/side_effect_trace_interface.ts +92 -14
- package/src/public/transitional_adapters.ts +347 -0
- package/src/public/utils.ts +32 -0
- package/dest/public/enqueued_call_simulator.d.ts +0 -43
- package/dest/public/enqueued_call_simulator.d.ts.map +0 -1
- package/dest/public/enqueued_call_simulator.js +0 -156
- package/dest/public/enqueued_calls_processor.d.ts +0 -43
- package/dest/public/enqueued_calls_processor.d.ts.map +0 -1
- package/dest/public/enqueued_calls_processor.js +0 -209
- package/dest/public/hints_builder.d.ts +0 -29
- package/dest/public/hints_builder.d.ts.map +0 -1
- package/dest/public/hints_builder.js +0 -75
- package/dest/public/public_kernel.d.ts +0 -30
- package/dest/public/public_kernel.d.ts.map +0 -1
- package/dest/public/public_kernel.js +0 -67
- package/dest/public/public_kernel_circuit_simulator.d.ts +0 -25
- package/dest/public/public_kernel_circuit_simulator.d.ts.map +0 -1
- package/dest/public/public_kernel_circuit_simulator.js +0 -2
- package/dest/public/public_kernel_tail_simulator.d.ts +0 -15
- package/dest/public/public_kernel_tail_simulator.d.ts.map +0 -1
- package/dest/public/public_kernel_tail_simulator.js +0 -39
- package/src/public/enqueued_call_simulator.ts +0 -360
- package/src/public/enqueued_calls_processor.ts +0 -372
- package/src/public/hints_builder.ts +0 -168
- package/src/public/public_kernel.ts +0 -100
- package/src/public/public_kernel_circuit_simulator.ts +0 -32
- package/src/public/public_kernel_tail_simulator.ts +0 -97
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { NestedProcessReturnValues, Tx,
|
|
3
|
-
import { ContractClassRegisteredEvent,
|
|
4
|
-
import {
|
|
2
|
+
import { MerkleTreeId, NestedProcessReturnValues, Tx, TxExecutionPhase, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls, } from '@aztec/circuit-types';
|
|
3
|
+
import { ContractClassRegisteredEvent, Fr, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT, PublicDataWrite, } from '@aztec/circuits.js';
|
|
4
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { Timer } from '@aztec/foundation/timer';
|
|
7
7
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
8
8
|
import { Attributes, trackSpan } from '@aztec/telemetry-client';
|
|
9
|
-
import { EnqueuedCallsProcessor } from './enqueued_calls_processor.js';
|
|
10
9
|
import { PublicExecutor } from './executor.js';
|
|
11
10
|
import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from './fee_payment.js';
|
|
12
11
|
import { WorldStateDB } from './public_db_sources.js';
|
|
13
|
-
import { RealPublicKernelCircuitSimulator } from './public_kernel.js';
|
|
14
12
|
import { PublicProcessorMetrics } from './public_processor_metrics.js';
|
|
13
|
+
import { PublicTxSimulator } from './public_tx_simulator.js';
|
|
15
14
|
/**
|
|
16
15
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
17
16
|
*/
|
|
18
17
|
export class PublicProcessorFactory {
|
|
19
|
-
constructor(contractDataSource,
|
|
18
|
+
constructor(contractDataSource, telemetryClient) {
|
|
20
19
|
this.contractDataSource = contractDataSource;
|
|
21
|
-
this.simulator = simulator;
|
|
22
20
|
this.telemetryClient = telemetryClient;
|
|
23
21
|
}
|
|
24
22
|
/**
|
|
@@ -32,8 +30,7 @@ export class PublicProcessorFactory {
|
|
|
32
30
|
const historicalHeader = maybeHistoricalHeader ?? merkleTree.getInitialHeader();
|
|
33
31
|
const worldStateDB = new WorldStateDB(merkleTree, this.contractDataSource);
|
|
34
32
|
const publicExecutor = new PublicExecutor(worldStateDB, telemetryClient);
|
|
35
|
-
|
|
36
|
-
return PublicProcessor.create(merkleTree, publicExecutor, publicKernelSimulator, globalVariables, historicalHeader, worldStateDB, this.telemetryClient);
|
|
33
|
+
return PublicProcessor.create(merkleTree, publicExecutor, globalVariables, historicalHeader, worldStateDB, this.telemetryClient);
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
36
|
/**
|
|
@@ -45,20 +42,18 @@ let PublicProcessor = (() => {
|
|
|
45
42
|
let _instanceExtraInitializers = [];
|
|
46
43
|
let _processTxWithPublicCalls_decorators;
|
|
47
44
|
return _a = class PublicProcessor {
|
|
48
|
-
constructor(db,
|
|
45
|
+
constructor(db, globalVariables, historicalHeader, worldStateDB, publicTxSimulator, telemetryClient, log = createDebugLogger('aztec:sequencer:public-processor')) {
|
|
49
46
|
this.db = (__runInitializers(this, _instanceExtraInitializers), db);
|
|
50
|
-
this.publicExecutor = publicExecutor;
|
|
51
|
-
this.publicKernel = publicKernel;
|
|
52
47
|
this.globalVariables = globalVariables;
|
|
53
48
|
this.historicalHeader = historicalHeader;
|
|
54
49
|
this.worldStateDB = worldStateDB;
|
|
55
|
-
this.
|
|
50
|
+
this.publicTxSimulator = publicTxSimulator;
|
|
56
51
|
this.log = log;
|
|
57
52
|
this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
|
|
58
53
|
}
|
|
59
|
-
static create(db, publicExecutor,
|
|
60
|
-
const
|
|
61
|
-
return new _a(db,
|
|
54
|
+
static create(db, publicExecutor, globalVariables, historicalHeader, worldStateDB, telemetryClient) {
|
|
55
|
+
const publicTxSimulator = PublicTxSimulator.create(db, publicExecutor, globalVariables, worldStateDB);
|
|
56
|
+
return new _a(db, globalVariables, historicalHeader, worldStateDB, publicTxSimulator, telemetryClient);
|
|
62
57
|
}
|
|
63
58
|
get tracer() {
|
|
64
59
|
return this.metrics.tracer;
|
|
@@ -82,19 +77,16 @@ let PublicProcessor = (() => {
|
|
|
82
77
|
}
|
|
83
78
|
try {
|
|
84
79
|
const [processedTx, returnValues] = !tx.hasPublicCalls()
|
|
85
|
-
?
|
|
80
|
+
? await this.processPrivateOnlyTx(tx)
|
|
86
81
|
: await this.processTxWithPublicCalls(tx);
|
|
87
82
|
this.log.debug(`Processed tx`, {
|
|
88
83
|
txHash: processedTx.hash,
|
|
89
|
-
historicalHeaderHash: processedTx.
|
|
90
|
-
blockNumber: processedTx.
|
|
91
|
-
lastArchiveRoot: processedTx.
|
|
84
|
+
historicalHeaderHash: processedTx.constants.historicalHeader.hash(),
|
|
85
|
+
blockNumber: processedTx.constants.globalVariables.blockNumber,
|
|
86
|
+
lastArchiveRoot: processedTx.constants.historicalHeader.lastArchive.root,
|
|
92
87
|
});
|
|
93
|
-
// Set fee payment update request into the processed tx
|
|
94
|
-
processedTx.finalPublicDataUpdateRequests = await this.createFinalDataUpdateRequests(processedTx);
|
|
95
88
|
// Commit the state updates from this transaction
|
|
96
89
|
await this.worldStateDB.commit();
|
|
97
|
-
validateProcessedTx(processedTx);
|
|
98
90
|
// Re-validate the transaction
|
|
99
91
|
if (txValidator) {
|
|
100
92
|
// Only accept processed transactions that are not double-spends,
|
|
@@ -110,6 +102,28 @@ let PublicProcessor = (() => {
|
|
|
110
102
|
if (processedTxHandler) {
|
|
111
103
|
await processedTxHandler.addNewTx(processedTx);
|
|
112
104
|
}
|
|
105
|
+
// Update the state so that the next tx in the loop has the correct .startState
|
|
106
|
+
// NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either:
|
|
107
|
+
// a) had only 1 tx with public calls per block, so this loop had len 1
|
|
108
|
+
// b) always had a txHandler with the same db passed to it as this.db, which updated the db in buildBaseRollupHints in this loop
|
|
109
|
+
// To see how this ^ happens, move back to one shared db in test_context and run orchestrator_multi_public_functions.test.ts
|
|
110
|
+
// The below is taken from buildBaseRollupHints:
|
|
111
|
+
await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(processedTx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
112
|
+
try {
|
|
113
|
+
await this.db.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(processedTx.txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map(n => n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
if (txValidator) {
|
|
117
|
+
// Ideally the validator has already caught this above, but just in case:
|
|
118
|
+
throw new Error(`Transaction ${processedTx.hash} invalid after processing public functions`);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// We have no validator and assume this call should blindly process txs with duplicates being caught later
|
|
122
|
+
this.log.warn(`Detected duplicate nullifier after public processing for: ${processedTx.hash}.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const allPublicDataWrites = padArrayEnd(processedTx.txEffect.publicDataWrites, PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
126
|
+
await this.db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, allPublicDataWrites.map(x => x.toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
|
|
113
127
|
result.push(processedTx);
|
|
114
128
|
returns = returns.concat(returnValues ?? []);
|
|
115
129
|
}
|
|
@@ -131,38 +145,39 @@ let PublicProcessor = (() => {
|
|
|
131
145
|
* request for updating fee balance. It also updates the local public state db.
|
|
132
146
|
* See build_or_patch_payment_update_request in base_rollup_inputs.nr for more details.
|
|
133
147
|
*/
|
|
134
|
-
async
|
|
135
|
-
const finalPublicDataUpdateRequests = [
|
|
136
|
-
...tx.data.end.publicDataUpdateRequests,
|
|
137
|
-
...times(PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, () => PublicDataUpdateRequest.empty()),
|
|
138
|
-
];
|
|
139
|
-
const feePayer = tx.data.feePayer;
|
|
148
|
+
async getFeePaymentPublicDataWrite(publicDataWrites, txFee, feePayer) {
|
|
140
149
|
if (feePayer.isZero()) {
|
|
141
|
-
return
|
|
150
|
+
return;
|
|
142
151
|
}
|
|
143
152
|
const feeJuiceAddress = ProtocolContractAddress.FeeJuice;
|
|
144
153
|
const balanceSlot = computeFeePayerBalanceStorageSlot(feePayer);
|
|
145
154
|
const leafSlot = computeFeePayerBalanceLeafSlot(feePayer);
|
|
146
|
-
const txFee = tx.data.getTransactionFee(this.globalVariables.gasFees);
|
|
147
155
|
this.log.debug(`Deducting ${txFee} balance in Fee Juice for ${feePayer}`);
|
|
148
|
-
const
|
|
149
|
-
const balance =
|
|
150
|
-
?
|
|
156
|
+
const existingBalanceWrite = publicDataWrites.find(write => write.leafSlot.equals(leafSlot));
|
|
157
|
+
const balance = existingBalanceWrite
|
|
158
|
+
? existingBalanceWrite.value
|
|
151
159
|
: await this.worldStateDB.storageRead(feeJuiceAddress, balanceSlot);
|
|
152
160
|
if (balance.lt(txFee)) {
|
|
153
161
|
throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance} needs ${txFee})`);
|
|
154
162
|
}
|
|
155
163
|
const updatedBalance = balance.sub(txFee);
|
|
156
164
|
await this.worldStateDB.storageWrite(feeJuiceAddress, balanceSlot, updatedBalance);
|
|
157
|
-
|
|
158
|
-
|
|
165
|
+
return new PublicDataWrite(leafSlot, updatedBalance);
|
|
166
|
+
}
|
|
167
|
+
async processPrivateOnlyTx(tx) {
|
|
168
|
+
const gasFees = this.globalVariables.gasFees;
|
|
169
|
+
const transactionFee = tx.data.gasUsed.computeFee(gasFees);
|
|
170
|
+
const accumulatedData = tx.data.forRollup.end;
|
|
171
|
+
const feePaymentPublicDataWrite = await this.getFeePaymentPublicDataWrite(accumulatedData.publicDataWrites, transactionFee, tx.data.feePayer);
|
|
172
|
+
const processedTx = makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, this.globalVariables);
|
|
173
|
+
return [processedTx];
|
|
159
174
|
}
|
|
160
175
|
async processTxWithPublicCalls(tx) {
|
|
161
176
|
const timer = new Timer();
|
|
162
|
-
const { avmProvingRequest,
|
|
163
|
-
if (!
|
|
177
|
+
const { avmProvingRequest, gasUsed, revertCode, revertReason, processedPhases } = await this.publicTxSimulator.simulate(tx);
|
|
178
|
+
if (!avmProvingRequest) {
|
|
164
179
|
this.metrics.recordFailedTx();
|
|
165
|
-
throw new Error('
|
|
180
|
+
throw new Error('Avm proving result was not generated.');
|
|
166
181
|
}
|
|
167
182
|
processedPhases.forEach(phase => {
|
|
168
183
|
if (phase.revertReason) {
|
|
@@ -172,10 +187,13 @@ let PublicProcessor = (() => {
|
|
|
172
187
|
this.metrics.recordPhaseDuration(phase.phase, phase.durationMs);
|
|
173
188
|
}
|
|
174
189
|
});
|
|
175
|
-
this.metrics.recordClassRegistration(...ContractClassRegisteredEvent.fromLogs(tx.
|
|
190
|
+
this.metrics.recordClassRegistration(...ContractClassRegisteredEvent.fromLogs(tx.contractClassLogs.unrollLogs(), ProtocolContractAddress.ContractClassRegisterer));
|
|
176
191
|
const phaseCount = processedPhases.length;
|
|
177
192
|
this.metrics.recordTx(phaseCount, timer.ms());
|
|
178
|
-
const
|
|
193
|
+
const data = avmProvingRequest.inputs.output;
|
|
194
|
+
const feePaymentPublicDataWrite = await this.getFeePaymentPublicDataWrite(data.accumulatedData.publicDataWrites, data.transactionFee, tx.data.feePayer);
|
|
195
|
+
const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, avmProvingRequest, feePaymentPublicDataWrite, gasUsed, revertCode, revertReason);
|
|
196
|
+
const returnValues = processedPhases.find(({ phase }) => phase === TxExecutionPhase.APP_LOGIC)?.returnValues ?? [];
|
|
179
197
|
return [processedTx, returnValues];
|
|
180
198
|
}
|
|
181
199
|
},
|
|
@@ -190,4 +208,4 @@ let PublicProcessor = (() => {
|
|
|
190
208
|
_a;
|
|
191
209
|
})();
|
|
192
210
|
export { PublicProcessor };
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUdMLHlCQUF5QixFQUd6QixFQUFFLEVBRUYsZUFBZSxFQUNmLG1CQUFtQixHQUNwQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCw0QkFBNEIsRUFJNUIsc0NBQXNDLEVBQ3RDLDJDQUEyQyxFQUMzQyx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQXFDLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR25HLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLGtCQUFzQyxFQUN0QyxTQUE2QixFQUM3QixlQUFnQztRQUZoQyx1QkFBa0IsR0FBbEIsa0JB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
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFFWix5QkFBeUIsRUFHekIsRUFBRSxFQUNGLGdCQUFnQixFQUVoQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLDRCQUE0QixFQUU1QixFQUFFLEVBR0Ysc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw0Q0FBNEMsRUFDNUMsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0Isa0JBQXNDLEVBQVUsZUFBZ0M7UUFBaEYs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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type TxExecutionPhase } from '@aztec/circuit-types';
|
|
2
2
|
import { type ContractClassRegisteredEvent } from '@aztec/circuits.js';
|
|
3
3
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
4
4
|
export declare class PublicProcessorMetrics {
|
|
@@ -10,10 +10,10 @@ export declare class PublicProcessorMetrics {
|
|
|
10
10
|
private phaseCount;
|
|
11
11
|
private bytecodeDeployed;
|
|
12
12
|
constructor(client: TelemetryClient, name?: string);
|
|
13
|
-
recordPhaseDuration(phaseName:
|
|
13
|
+
recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number): void;
|
|
14
14
|
recordTx(phaseCount: number, durationMs: number): void;
|
|
15
15
|
recordFailedTx(): void;
|
|
16
|
-
recordRevertedPhase(phaseName:
|
|
16
|
+
recordRevertedPhase(phaseName: TxExecutionPhase): void;
|
|
17
17
|
recordClassRegistration(...events: ContractClassRegisteredEvent[]): void;
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=public_processor_metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../src/public/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;gBAExB,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB;IAkC7D,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM;IAKnE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAQ/C,cAAc;IAMd,mBAAmB,CAAC,SAAS,EAAE,gBAAgB;IAI/C,uBAAuB,CAAC,GAAG,MAAM,EAAE,4BAA4B,EAAE;CAUlE"}
|
|
@@ -56,4 +56,4 @@ export class PublicProcessorMetrics {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yX21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUNMLFVBQVUsRUFFVixPQUFPLEVBSVAsU0FBUyxHQUNWLE1BQU0seUJBQXlCLENBQUM7QUFFakMsTUFBTSxPQUFPLHNCQUFzQjtJQVlqQyxZQUFZLE1BQXVCLEVBQUUsSUFBSSxHQUFHLGlCQUFpQjtRQUMzRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFO1lBQzVFLFdBQVcsRUFBRSw0Q0FBNEM7WUFDekQsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFO1lBQzFFLFdBQVcsRUFBRSxrQ0FBa0M7U0FDaEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFO1lBQ3JGLFdBQVcsRUFBRSw0QkFBNEI7U0FDMUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsRUFBRTtZQUNsRixXQUFXLEVBQUUsc0NBQXNDO1lBQ25ELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRTtZQUNoRixXQUFXLEVBQUUseUJBQXlCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxxQ0FBcUMsRUFBRTtZQUMzRixXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQTJCLEVBQUUsVUFBa0I7UUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFrQixFQUFFLFVBQWtCO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDbEIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNsQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUEyQjtRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsdUJBQXVCLENBQUMsR0FBRyxNQUFzQztRQUMvRCxJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixhQUFhLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUNyRCxDQUFDO1FBRUQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { type AvmProvingRequest, type MerkleTreeReadOperations, type PublicExecutionRequest, type SimulationError, type Tx, TxExecutionPhase, TxHash } from '@aztec/circuit-types';
|
|
2
|
+
import { Fr, Gas, type GasSettings, type GlobalVariables, type Header, type PrivateToPublicAccumulatedData, type PublicCallRequest, RevertCode, type StateReference } from '@aztec/circuits.js';
|
|
3
|
+
import { AvmPersistableStateManager } from '../avm/index.js';
|
|
4
|
+
import { PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
|
|
5
|
+
import { type EnqueuedPublicCallExecutionResult } from './execution.js';
|
|
6
|
+
import { type WorldStateDB } from './public_db_sources.js';
|
|
7
|
+
/**
|
|
8
|
+
* The transaction-level context for public execution.
|
|
9
|
+
*/
|
|
10
|
+
export declare class PublicTxContext {
|
|
11
|
+
readonly state: PhaseStateManager;
|
|
12
|
+
private readonly globalVariables;
|
|
13
|
+
private readonly historicalHeader;
|
|
14
|
+
private readonly startStateReference;
|
|
15
|
+
private readonly startGasUsed;
|
|
16
|
+
private readonly gasSettings;
|
|
17
|
+
private readonly setupCallRequests;
|
|
18
|
+
private readonly appLogicCallRequests;
|
|
19
|
+
private readonly teardownCallRequests;
|
|
20
|
+
private readonly setupExecutionRequests;
|
|
21
|
+
private readonly appLogicExecutionRequests;
|
|
22
|
+
private readonly teardownExecutionRequests;
|
|
23
|
+
private readonly nonRevertibleAccumulatedDataFromPrivate;
|
|
24
|
+
private readonly revertibleAccumulatedDataFromPrivate;
|
|
25
|
+
trace: PublicEnqueuedCallSideEffectTrace;
|
|
26
|
+
private log;
|
|
27
|
+
private gasUsed;
|
|
28
|
+
teardownGasUsed: Gas;
|
|
29
|
+
private halted;
|
|
30
|
+
private revertCode;
|
|
31
|
+
revertReason: SimulationError | undefined;
|
|
32
|
+
avmProvingRequest: AvmProvingRequest | undefined;
|
|
33
|
+
constructor(state: PhaseStateManager, globalVariables: GlobalVariables, historicalHeader: Header, // FIXME(dbanks12): remove
|
|
34
|
+
startStateReference: StateReference, startGasUsed: Gas, gasSettings: GasSettings, setupCallRequests: PublicCallRequest[], appLogicCallRequests: PublicCallRequest[], teardownCallRequests: PublicCallRequest[], setupExecutionRequests: PublicExecutionRequest[], appLogicExecutionRequests: PublicExecutionRequest[], teardownExecutionRequests: PublicExecutionRequest[], nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, trace: PublicEnqueuedCallSideEffectTrace);
|
|
35
|
+
static create(db: MerkleTreeReadOperations, worldStateDB: WorldStateDB, tx: Tx, globalVariables: GlobalVariables): Promise<PublicTxContext>;
|
|
36
|
+
/**
|
|
37
|
+
* Signal that the entire transaction execution is done.
|
|
38
|
+
* All phases have been processed.
|
|
39
|
+
* Actual transaction fee and actual total consumed gas can now be queried.
|
|
40
|
+
*/
|
|
41
|
+
halt(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Revert execution a phase. Populate revertReason & revertCode.
|
|
44
|
+
* If in setup, throw an error (transaction will be thrown out).
|
|
45
|
+
* NOTE: this does not "halt" the entire transaction execution.
|
|
46
|
+
*/
|
|
47
|
+
revert(phase: TxExecutionPhase, revertReason?: SimulationError | undefined, culprit?: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get the revert code.
|
|
50
|
+
* @returns The revert code.
|
|
51
|
+
*/
|
|
52
|
+
getFinalRevertCode(): RevertCode;
|
|
53
|
+
/**
|
|
54
|
+
* Construct & return transaction hash.
|
|
55
|
+
* @returns The transaction's hash.
|
|
56
|
+
*/
|
|
57
|
+
getTxHash(): TxHash;
|
|
58
|
+
/**
|
|
59
|
+
* Are there any call requests for the speciiied phase?
|
|
60
|
+
*/
|
|
61
|
+
hasPhase(phase: TxExecutionPhase): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get the call requests for the specified phase (including args hashes).
|
|
64
|
+
*/
|
|
65
|
+
getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequest[];
|
|
66
|
+
/**
|
|
67
|
+
* Get the call requests for the specified phase (including actual args).
|
|
68
|
+
*/
|
|
69
|
+
getExecutionRequestsForPhase(phase: TxExecutionPhase): PublicExecutionRequest[];
|
|
70
|
+
/**
|
|
71
|
+
* How much gas is left for the specified phase?
|
|
72
|
+
*/
|
|
73
|
+
getGasLeftForPhase(phase: TxExecutionPhase): Gas;
|
|
74
|
+
/**
|
|
75
|
+
* Consume gas. Track gas for teardown phase separately.
|
|
76
|
+
*/
|
|
77
|
+
consumeGas(phase: TxExecutionPhase, gas: Gas): void;
|
|
78
|
+
/**
|
|
79
|
+
* Compute the gas used using the actual gas used during teardown instead
|
|
80
|
+
* of the teardown gas limit.
|
|
81
|
+
* Note that this.gasUsed is initialized from private's gasUsed which includes
|
|
82
|
+
* teardown gas limit.
|
|
83
|
+
*/
|
|
84
|
+
getActualGasUsed(): Gas;
|
|
85
|
+
/**
|
|
86
|
+
* The gasUsed as if the entire teardown gas limit was consumed.
|
|
87
|
+
*/
|
|
88
|
+
getGasUsedForFee(): Gas;
|
|
89
|
+
/**
|
|
90
|
+
* Get the transaction fee as is available to the specified phase.
|
|
91
|
+
* Only teardown should have access to the actual transaction fee.
|
|
92
|
+
*/
|
|
93
|
+
getTransactionFee(phase: TxExecutionPhase): Fr;
|
|
94
|
+
/**
|
|
95
|
+
* Compute the transaction fee.
|
|
96
|
+
* Should only be called during or after teardown.
|
|
97
|
+
*/
|
|
98
|
+
private getTransactionFeeUnsafe;
|
|
99
|
+
/**
|
|
100
|
+
* Generate the public inputs for the AVM circuit.
|
|
101
|
+
*/
|
|
102
|
+
private generateAvmCircuitPublicInputs;
|
|
103
|
+
/**
|
|
104
|
+
* Generate the proving request for the AVM circuit.
|
|
105
|
+
*/
|
|
106
|
+
generateProvingRequest(endStateReference: StateReference): AvmProvingRequest;
|
|
107
|
+
updateProvingRequest(real: boolean, phase: TxExecutionPhase, worldStateDB: WorldStateDB, stateManager: AvmPersistableStateManager, executionRequest: PublicExecutionRequest, result: EnqueuedPublicCallExecutionResult, allocatedGas: Gas): Promise<void>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Thin wrapper around the state manager to handle forking and merging for phases.
|
|
111
|
+
*
|
|
112
|
+
* This lets us keep track of whether the state has already been forked
|
|
113
|
+
* so that we can conditionally fork at the start of a phase.
|
|
114
|
+
*
|
|
115
|
+
* There is a state manager that lives at the level of the entire transaction,
|
|
116
|
+
* but for setup and teardown the active state manager will be a fork of the
|
|
117
|
+
* transaction level one.
|
|
118
|
+
*/
|
|
119
|
+
declare class PhaseStateManager {
|
|
120
|
+
private readonly txStateManager;
|
|
121
|
+
private currentlyActiveStateManager;
|
|
122
|
+
constructor(txStateManager: AvmPersistableStateManager);
|
|
123
|
+
fork(): void;
|
|
124
|
+
getActiveStateManager(): AvmPersistableStateManager;
|
|
125
|
+
isForked(): boolean;
|
|
126
|
+
mergeForkedState(): void;
|
|
127
|
+
discardForkedState(): void;
|
|
128
|
+
}
|
|
129
|
+
export {};
|
|
130
|
+
//# sourceMappingURL=public_tx_context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../src/public/public_tx_context.ts"],"names":[],"mappings":"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"}
|