@aztec/simulator 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/acvm/acvm.d.ts +2 -2
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +3 -3
- package/dest/acvm/oracle/oracle.d.ts +6 -4
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +20 -11
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -3
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +10 -4
- package/dest/acvm/serialize.js +2 -2
- package/dest/avm/avm_gas.d.ts +1 -5
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +67 -73
- package/dest/avm/avm_simulator.d.ts +5 -0
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +8 -1
- package/dest/avm/fixtures/index.d.ts +3 -0
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +13 -1
- package/dest/avm/index.d.ts +2 -0
- package/dest/avm/index.d.ts.map +1 -0
- package/dest/avm/index.js +2 -0
- package/dest/avm/journal/host_storage.d.ts +1 -1
- package/dest/avm/journal/host_storage.d.ts.map +1 -1
- package/dest/avm/journal/journal.d.ts +2 -0
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +6 -2
- package/dest/avm/journal/trace.d.ts +2 -0
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +7 -1
- package/dest/avm/journal/trace_types.d.ts +1 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.js +1 -1
- package/dest/avm/opcodes/arithmetic.d.ts +1 -7
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +1 -12
- package/dest/avm/opcodes/conversion.js +2 -2
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +4 -3
- package/dest/avm/opcodes/instruction.d.ts +1 -1
- package/dest/avm/opcodes/instruction.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction.js +6 -4
- package/dest/avm/opcodes/memory.d.ts +0 -4
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +1 -7
- package/dest/avm/opcodes/storage.d.ts +0 -5
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +1 -7
- package/dest/avm/serialization/bytecode_serialization.js +2 -2
- package/dest/client/client_execution_context.d.ts +11 -19
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +26 -43
- package/dest/client/db_oracle.d.ts +7 -1
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_note_cache.d.ts +0 -17
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +1 -24
- package/dest/client/execution_result.d.ts +8 -4
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +16 -6
- package/dest/client/private_execution.d.ts +2 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +20 -9
- package/dest/client/simulator.d.ts +0 -16
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +8 -25
- package/dest/client/unconstrained_execution.d.ts +2 -3
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +5 -7
- package/dest/client/view_data_oracle.d.ts +2 -0
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +7 -1
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -2
- package/dest/mocks/fixtures.d.ts +14 -10
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +22 -16
- package/dest/{simulator → providers}/acvm_native.d.ts.map +1 -1
- package/dest/{simulator → providers}/acvm_native.js +13 -14
- package/dest/providers/acvm_wasm.d.ts.map +1 -0
- package/dest/providers/acvm_wasm.js +15 -0
- package/dest/providers/index.d.ts.map +1 -0
- package/dest/{simulator → providers}/index.js +1 -1
- package/dest/{simulator → providers}/simulation_provider.d.ts.map +1 -1
- package/dest/{simulator → providers}/simulation_provider.js +1 -1
- package/dest/public/abstract_phase_manager.d.ts +43 -42
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +77 -106
- package/dest/public/app_logic_phase_manager.d.ts +6 -7
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +14 -14
- package/dest/public/{db.d.ts → db_interfaces.d.ts} +3 -3
- package/dest/public/db_interfaces.d.ts.map +1 -0
- package/dest/public/db_interfaces.js +2 -0
- package/dest/public/execution.d.ts +16 -9
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +3 -30
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +32 -282
- package/dest/public/fee_payment.d.ts +11 -0
- package/dest/public/fee_payment.d.ts.map +1 -0
- package/dest/public/fee_payment.js +24 -0
- package/dest/public/hints_builder.d.ts +1 -0
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +6 -2
- package/dest/public/index.d.ts +4 -2
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +5 -3
- package/dest/public/phase_manager_factory.d.ts +1 -1
- package/dest/public/phase_manager_factory.d.ts.map +1 -1
- package/dest/public/{public_executor.d.ts → public_db_sources.d.ts} +3 -2
- package/dest/public/public_db_sources.d.ts.map +1 -0
- package/dest/public/public_db_sources.js +198 -0
- package/dest/public/public_kernel.js +14 -14
- package/dest/public/public_processor.d.ts +6 -4
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +46 -27
- package/dest/public/setup_phase_manager.d.ts +6 -8
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +11 -20
- package/dest/public/tail_phase_manager.d.ts +4 -10
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +15 -35
- package/dest/public/teardown_phase_manager.d.ts +6 -8
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +15 -21
- package/dest/public/transitional_adaptors.d.ts +1 -1
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +8 -6
- package/dest/public/utils.d.ts +2 -2
- package/dest/public/utils.d.ts.map +1 -1
- package/dest/public/utils.js +21 -14
- package/package.json +12 -9
- package/src/acvm/acvm.ts +0 -3
- package/src/acvm/oracle/oracle.ts +36 -13
- package/src/acvm/oracle/typed_oracle.ts +12 -3
- package/src/acvm/serialize.ts +1 -1
- package/src/avm/avm_gas.ts +66 -73
- package/src/avm/avm_simulator.ts +9 -0
- package/src/avm/fixtures/index.ts +20 -0
- package/src/avm/index.ts +1 -0
- package/src/avm/journal/host_storage.ts +1 -1
- package/src/avm/journal/journal.ts +6 -1
- package/src/avm/journal/trace.ts +12 -0
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/arithmetic.ts +1 -14
- package/src/avm/opcodes/conversion.ts +1 -1
- package/src/avm/opcodes/external_calls.ts +3 -1
- package/src/avm/opcodes/instruction.ts +5 -3
- package/src/avm/opcodes/memory.ts +1 -8
- package/src/avm/opcodes/storage.ts +1 -8
- package/src/avm/serialization/bytecode_serialization.ts +1 -1
- package/src/client/client_execution_context.ts +33 -45
- package/src/client/db_oracle.ts +8 -1
- package/src/client/execution_note_cache.ts +0 -28
- package/src/client/execution_result.ts +21 -7
- package/src/client/private_execution.ts +36 -21
- package/src/client/simulator.ts +7 -27
- package/src/client/unconstrained_execution.ts +9 -12
- package/src/client/view_data_oracle.ts +8 -0
- package/src/index.ts +3 -1
- package/src/mocks/fixtures.ts +30 -32
- package/src/{simulator → providers}/acvm_native.ts +21 -19
- package/src/{simulator → providers}/acvm_wasm.ts +2 -16
- package/src/public/abstract_phase_manager.ts +138 -205
- package/src/public/app_logic_phase_manager.ts +23 -39
- package/src/public/{db.ts → db_interfaces.ts} +2 -2
- package/src/public/execution.ts +15 -8
- package/src/public/executor.ts +51 -398
- package/src/public/fee_payment.ts +26 -0
- package/src/public/hints_builder.ts +6 -0
- package/src/public/index.ts +4 -2
- package/src/public/phase_manager_factory.ts +1 -1
- package/src/public/{public_executor.ts → public_db_sources.ts} +3 -2
- package/src/public/public_kernel.ts +24 -24
- package/src/public/public_processor.ts +77 -33
- package/src/public/setup_phase_manager.ts +20 -45
- package/src/public/tail_phase_manager.ts +17 -65
- package/src/public/teardown_phase_manager.ts +22 -41
- package/src/public/transitional_adaptors.ts +7 -11
- package/src/public/utils.ts +20 -14
- package/dest/public/db.d.ts.map +0 -1
- package/dest/public/db.js +0 -2
- package/dest/public/public_execution_context.d.ts +0 -121
- package/dest/public/public_execution_context.d.ts.map +0 -1
- package/dest/public/public_execution_context.js +0 -214
- package/dest/public/public_executor.d.ts.map +0 -1
- package/dest/public/public_executor.js +0 -197
- package/dest/public/state_actions.d.ts +0 -39
- package/dest/public/state_actions.d.ts.map +0 -1
- package/dest/public/state_actions.js +0 -80
- package/dest/simulator/acvm_wasm.d.ts.map +0 -1
- package/dest/simulator/acvm_wasm.js +0 -22
- package/dest/simulator/index.d.ts.map +0 -1
- package/src/public/public_execution_context.ts +0 -289
- package/src/public/state_actions.ts +0 -102
- /package/dest/{simulator → providers}/acvm_native.d.ts +0 -0
- /package/dest/{simulator → providers}/acvm_wasm.d.ts +0 -0
- /package/dest/{simulator → providers}/index.d.ts +0 -0
- /package/dest/{simulator → providers}/simulation_provider.d.ts +0 -0
- /package/src/{simulator → providers}/index.ts +0 -0
- /package/src/{simulator → providers}/simulation_provider.ts +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { NestedProcessReturnValues, Tx,
|
|
1
|
+
import { NestedProcessReturnValues, Tx, makeProcessedTx, validateProcessedTx, } from '@aztec/circuit-types';
|
|
2
|
+
import { AztecAddress, GAS_TOKEN_ADDRESS, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicDataUpdateRequest, } from '@aztec/circuits.js';
|
|
3
|
+
import { times } from '@aztec/foundation/collection';
|
|
2
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
-
import {
|
|
4
|
-
import { PublicExecutor } from '@aztec/simulator';
|
|
5
|
+
import { PublicExecutor, computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot, } from '@aztec/simulator';
|
|
5
6
|
import { PublicKernelPhase, publicKernelPhaseToKernelType, } from './abstract_phase_manager.js';
|
|
6
7
|
import { PhaseManagerFactory } from './phase_manager_factory.js';
|
|
7
|
-
import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from './
|
|
8
|
+
import { ContractsDataSourcePublicDB, WorldStateDB, WorldStatePublicDB } from './public_db_sources.js';
|
|
8
9
|
import { RealPublicKernelCircuitSimulator } from './public_kernel.js';
|
|
9
10
|
/**
|
|
10
11
|
* Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
|
|
@@ -56,7 +57,7 @@ export class PublicProcessor {
|
|
|
56
57
|
txs = txs.map(tx => Tx.clone(tx));
|
|
57
58
|
const result = [];
|
|
58
59
|
const failed = [];
|
|
59
|
-
|
|
60
|
+
let returns = [];
|
|
60
61
|
for (const tx of txs) {
|
|
61
62
|
// only process up to the limit of the block
|
|
62
63
|
if (result.length >= maxTransactions) {
|
|
@@ -66,6 +67,10 @@ export class PublicProcessor {
|
|
|
66
67
|
const [processedTx, returnValues] = !tx.hasPublicCalls()
|
|
67
68
|
? [makeProcessedTx(tx, tx.data.toKernelCircuitPublicInputs(), tx.proof, [])]
|
|
68
69
|
: await this.processTxWithPublicCalls(tx);
|
|
70
|
+
// Set fee payment update request into the processed tx
|
|
71
|
+
processedTx.finalPublicDataUpdateRequests = await this.createFinalDataUpdateRequests(processedTx);
|
|
72
|
+
// Commit the state updates from this transaction
|
|
73
|
+
await this.publicStateDB.commit();
|
|
69
74
|
validateProcessedTx(processedTx);
|
|
70
75
|
// Re-validate the transaction
|
|
71
76
|
if (txValidator) {
|
|
@@ -83,11 +88,11 @@ export class PublicProcessor {
|
|
|
83
88
|
await blockProver.addNewTx(processedTx);
|
|
84
89
|
}
|
|
85
90
|
result.push(processedTx);
|
|
86
|
-
returns.
|
|
91
|
+
returns = returns.concat(returnValues ?? []);
|
|
87
92
|
}
|
|
88
93
|
catch (err) {
|
|
89
94
|
const errorMessage = err instanceof Error ? err.message : 'Unknown error';
|
|
90
|
-
this.log.warn(`Failed to process tx ${tx.getTxHash()}: ${errorMessage}`);
|
|
95
|
+
this.log.warn(`Failed to process tx ${tx.getTxHash()}: ${errorMessage} ${err?.stack}`);
|
|
91
96
|
failed.push({
|
|
92
97
|
tx,
|
|
93
98
|
error: err instanceof Error ? err : new Error(errorMessage),
|
|
@@ -98,49 +103,63 @@ export class PublicProcessor {
|
|
|
98
103
|
return [result, failed, returns];
|
|
99
104
|
}
|
|
100
105
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
106
|
+
* Creates the final set of data update requests for the transaction. This includes the
|
|
107
|
+
* set of public data update requests as returned by the public kernel, plus a data update
|
|
108
|
+
* request for updating fee balance. It also updates the local public state db.
|
|
109
|
+
* See build_or_patch_payment_update_request in base_rollup_inputs.nr for more details.
|
|
103
110
|
*/
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
111
|
+
async createFinalDataUpdateRequests(tx) {
|
|
112
|
+
const finalPublicDataUpdateRequests = [
|
|
113
|
+
...tx.data.end.publicDataUpdateRequests,
|
|
114
|
+
...times(PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, () => PublicDataUpdateRequest.empty()),
|
|
115
|
+
];
|
|
116
|
+
const feePayer = tx.data.feePayer;
|
|
117
|
+
if (feePayer.isZero()) {
|
|
118
|
+
return finalPublicDataUpdateRequests;
|
|
119
|
+
}
|
|
120
|
+
const gasToken = AztecAddress.fromBigInt(GAS_TOKEN_ADDRESS);
|
|
121
|
+
const balanceSlot = computeFeePayerBalanceStorageSlot(feePayer);
|
|
122
|
+
const leafSlot = computeFeePayerBalanceLeafSlot(feePayer);
|
|
123
|
+
const txFee = tx.data.getTransactionFee(this.globalVariables.gasFees);
|
|
124
|
+
this.log.debug(`Deducting ${txFee} balance in gas tokens for ${feePayer}`);
|
|
125
|
+
const existingBalanceWriteIndex = finalPublicDataUpdateRequests.findIndex(request => request.leafSlot.equals(leafSlot));
|
|
126
|
+
const balance = existingBalanceWriteIndex > -1
|
|
127
|
+
? finalPublicDataUpdateRequests[existingBalanceWriteIndex].newValue
|
|
128
|
+
: await this.publicStateDB.storageRead(gasToken, balanceSlot);
|
|
129
|
+
if (balance.lt(txFee)) {
|
|
130
|
+
throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance} needs ${txFee})`);
|
|
131
|
+
}
|
|
132
|
+
const updatedBalance = balance.sub(txFee);
|
|
133
|
+
await this.publicStateDB.storageWrite(gasToken, balanceSlot, updatedBalance);
|
|
134
|
+
finalPublicDataUpdateRequests[existingBalanceWriteIndex > -1 ? existingBalanceWriteIndex : MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX] = new PublicDataUpdateRequest(leafSlot, updatedBalance, 0);
|
|
135
|
+
return finalPublicDataUpdateRequests;
|
|
107
136
|
}
|
|
108
137
|
async processTxWithPublicCalls(tx) {
|
|
109
138
|
let returnValues = [];
|
|
110
|
-
const
|
|
139
|
+
const publicProvingRequests = [];
|
|
111
140
|
let phase = PhaseManagerFactory.phaseFromTx(tx, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
112
141
|
this.log.debug(`Beginning processing in phase ${phase?.phase} for tx ${tx.getTxHash()}`);
|
|
113
|
-
let proof = tx.proof;
|
|
114
142
|
let publicKernelPublicInput = tx.data.toPublicKernelCircuitPublicInputs();
|
|
115
143
|
let finalKernelOutput;
|
|
116
144
|
let revertReason;
|
|
117
|
-
const timer = new Timer();
|
|
118
145
|
const gasUsed = {};
|
|
119
146
|
while (phase) {
|
|
120
|
-
const output = await phase.handle(tx, publicKernelPublicInput
|
|
147
|
+
const output = await phase.handle(tx, publicKernelPublicInput);
|
|
121
148
|
gasUsed[publicKernelPhaseToKernelType(phase.phase)] = output.gasUsed;
|
|
122
149
|
if (phase.phase === PublicKernelPhase.APP_LOGIC) {
|
|
123
150
|
returnValues = output.returnValues;
|
|
124
151
|
}
|
|
125
|
-
|
|
152
|
+
publicProvingRequests.push(...output.publicProvingRequests);
|
|
126
153
|
publicKernelPublicInput = output.publicKernelOutput;
|
|
127
154
|
finalKernelOutput = output.finalKernelOutput;
|
|
128
|
-
proof = output.publicKernelProof;
|
|
129
155
|
revertReason ?? (revertReason = output.revertReason);
|
|
130
156
|
phase = PhaseManagerFactory.phaseFromOutput(publicKernelPublicInput, phase, this.db, this.publicExecutor, this.publicKernel, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
|
|
131
157
|
}
|
|
132
158
|
if (!finalKernelOutput) {
|
|
133
159
|
throw new Error('Final public kernel was not executed.');
|
|
134
160
|
}
|
|
135
|
-
const processedTx = makeProcessedTx(tx, finalKernelOutput, proof,
|
|
136
|
-
this.log.debug(`Processed public part of ${tx.getTxHash()}`, {
|
|
137
|
-
eventName: 'tx-sequencer-processing',
|
|
138
|
-
duration: timer.ms(),
|
|
139
|
-
effectsSize: toTxEffect(processedTx).toBuffer().length,
|
|
140
|
-
publicDataUpdateRequests: processedTx.data.end.publicDataUpdateRequests.filter(x => !x.leafSlot.isZero()).length ?? 0,
|
|
141
|
-
...tx.getStats(),
|
|
142
|
-
});
|
|
161
|
+
const processedTx = makeProcessedTx(tx, finalKernelOutput, tx.proof, publicProvingRequests, revertReason, gasUsed);
|
|
143
162
|
return [processedTx, returnValues];
|
|
144
163
|
}
|
|
145
164
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wseUJBQXlCLEVBSXpCLEVBQUUsRUFFRixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLFlBQVksRUFDWixpQkFBaUIsRUFJakIsc0NBQXNDLEVBQ3RDLDJDQUEyQyxFQUMzQyx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUNMLGNBQWMsRUFHZCw4QkFBOEIsRUFDOUIsaUNBQWlDLEdBQ2xDLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUVMLGlCQUFpQixFQUNqQiw2QkFBNkIsR0FDOUIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1UsVUFBZ0MsRUFDaEMsa0JBQXNDLEVBQ3RDLFNBQTZCO1FBRjdCLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBb0I7SUFDcEMsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLGdCQUFvQyxF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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type GlobalVariables, type Header, type
|
|
1
|
+
import { type PublicProvingRequest, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type GlobalVariables, type Header, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
/**
|
|
9
9
|
* The phase manager responsible for performing the fee preparation phase.
|
|
@@ -12,14 +12,12 @@ export declare class SetupPhaseManager extends AbstractPhaseManager {
|
|
|
12
12
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
13
13
|
protected publicStateDB: PublicStateDB;
|
|
14
14
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
15
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
16
|
-
|
|
17
|
-
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
15
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
16
|
+
publicProvingRequests: PublicProvingRequest[];
|
|
18
17
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
19
|
-
publicKernelProof: Proof;
|
|
20
18
|
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
21
19
|
returnValues: never[];
|
|
22
|
-
gasUsed: import("@aztec/circuits.js").Gas;
|
|
20
|
+
gasUsed: import("@aztec/circuits.js").Gas | undefined;
|
|
23
21
|
}>;
|
|
24
22
|
}
|
|
25
23
|
//# sourceMappingURL=setup_phase_manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/setup_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"setup_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/setup_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,oBAAoB;IAOvD,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA2C;IAKrC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;;CAsB1F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
-
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
2
|
+
import { AbstractPhaseManager, PublicKernelPhase, makeAvmProvingRequest } from './abstract_phase_manager.js';
|
|
3
3
|
/**
|
|
4
4
|
* The phase manager responsible for performing the fee preparation phase.
|
|
5
5
|
*/
|
|
@@ -9,33 +9,24 @@ export class SetupPhaseManager extends AbstractPhaseManager {
|
|
|
9
9
|
this.publicContractsDB = publicContractsDB;
|
|
10
10
|
this.publicStateDB = publicStateDB;
|
|
11
11
|
}
|
|
12
|
-
async handle(tx, previousPublicKernelOutput
|
|
12
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
13
13
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
14
|
-
|
|
14
|
+
// TODO(#6464): Should we allow emitting contracts in the private setup phase?
|
|
15
|
+
// if so, this should only add contracts that were deployed during private app logic.
|
|
16
|
+
await this.publicContractsDB.addNewContracts(tx);
|
|
17
|
+
const { publicProvingInformation, kernelOutput, newUnencryptedLogs, revertReason, gasUsed } = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput).catch(
|
|
15
18
|
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
16
19
|
async (err) => {
|
|
17
20
|
await this.publicStateDB.rollbackToCommit();
|
|
18
21
|
throw err;
|
|
19
22
|
});
|
|
20
|
-
tx.unencryptedLogs.addFunctionLogs(
|
|
23
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedLogs);
|
|
21
24
|
await this.publicStateDB.checkpoint();
|
|
22
25
|
// Return a list of setup proving requests
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
type: PublicKernelType.SETUP,
|
|
26
|
-
inputs: input,
|
|
27
|
-
};
|
|
28
|
-
return request;
|
|
26
|
+
const publicProvingRequests = publicProvingInformation.map(info => {
|
|
27
|
+
return makeAvmProvingRequest(info, PublicKernelType.SETUP);
|
|
29
28
|
});
|
|
30
|
-
return {
|
|
31
|
-
kernelRequests,
|
|
32
|
-
kernelInputs,
|
|
33
|
-
publicKernelOutput,
|
|
34
|
-
publicKernelProof,
|
|
35
|
-
revertReason,
|
|
36
|
-
returnValues: [],
|
|
37
|
-
gasUsed,
|
|
38
|
-
};
|
|
29
|
+
return { publicProvingRequests, publicKernelOutput: kernelOutput, revertReason, returnValues: [], gasUsed };
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvc2V0dXBfcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNDLE1BQU0sc0JBQXNCLENBQUM7QUFLNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJN0c7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsb0JBQW9CO0lBQ3pELFlBQ0UsRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ2QsaUJBQThDLEVBQzlDLGFBQTRCLEVBQ3RDLFFBQTJCLGlCQUFpQixDQUFDLEtBQUs7UUFFbEQsS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUp4RSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBSXhDLENBQUM7SUFFUSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQU0sRUFBRSwwQkFBMkQ7UUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsOEVBQThFO1FBQzlFLHFGQUFxRjtRQUNyRixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsTUFBTSxFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQ3pGLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLEtBQUs7UUFDekUsd0ZBQXdGO1FBQ3hGLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUNGLENBQUM7UUFDSixFQUFFLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV0QywwQ0FBMEM7UUFDMUMsTUFBTSxxQkFBcUIsR0FBMkIsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hGLE9BQU8scUJBQXFCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0NBQ0YifQ==
|
|
@@ -1,27 +1,21 @@
|
|
|
1
1
|
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type
|
|
2
|
+
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
export declare class TailPhaseManager extends AbstractPhaseManager {
|
|
9
9
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
10
10
|
protected publicStateDB: PublicStateDB;
|
|
11
11
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
12
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
13
|
-
|
|
12
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
13
|
+
publicProvingRequests: import("@aztec/circuit-types").PublicKernelTailRequest[];
|
|
14
14
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
15
15
|
finalKernelOutput: KernelCircuitPublicInputs;
|
|
16
|
-
publicKernelProof: Proof;
|
|
17
|
-
revertReason: undefined;
|
|
18
16
|
returnValues: never[];
|
|
19
|
-
gasUsed: undefined;
|
|
20
17
|
}>;
|
|
21
|
-
private runTailKernelCircuit;
|
|
22
18
|
private simulate;
|
|
23
19
|
private buildPrivateInputs;
|
|
24
|
-
private sortNoteHashes;
|
|
25
|
-
private sortLogsHashes;
|
|
26
20
|
}
|
|
27
21
|
//# sourceMappingURL=tail_phase_manager.d.ts.map
|
|
@@ -1 +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,
|
|
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,EAG9B,KAAK,+BAA+B,EAGrC,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,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF,qBAAa,gBAAiB,SAAQ,oBAAoB;IAOtD,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA0C;IAKpC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;YAwB3E,QAAQ;YAQR,kBAAkB;CAoDjC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
|
-
import {
|
|
2
|
+
import { CombineHints, MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, PublicKernelTailCircuitPrivateInputs, mergeAccumulatedData, } from '@aztec/circuits.js';
|
|
3
3
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
4
4
|
export class TailPhaseManager extends AbstractPhaseManager {
|
|
5
5
|
constructor(db, publicExecutor, publicKernel, globalVariables, historicalHeader, publicContractsDB, publicStateDB, phase = PublicKernelPhase.TAIL) {
|
|
@@ -7,63 +7,43 @@ export class TailPhaseManager extends AbstractPhaseManager {
|
|
|
7
7
|
this.publicContractsDB = publicContractsDB;
|
|
8
8
|
this.publicStateDB = publicStateDB;
|
|
9
9
|
}
|
|
10
|
-
async handle(tx, previousPublicKernelOutput
|
|
10
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
11
11
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
12
|
-
const [inputs, finalKernelOutput] = await this.
|
|
12
|
+
const [inputs, finalKernelOutput] = await this.simulate(previousPublicKernelOutput).catch(
|
|
13
13
|
// the abstract phase manager throws if simulation gives error in non-revertible phase
|
|
14
14
|
async (err) => {
|
|
15
15
|
await this.publicStateDB.rollbackToCommit();
|
|
16
16
|
throw err;
|
|
17
17
|
});
|
|
18
|
-
// commit the state updates from this transaction
|
|
19
|
-
await this.publicStateDB.commit();
|
|
20
18
|
// Return a tail proving request
|
|
21
|
-
const
|
|
19
|
+
const kernelRequest = {
|
|
22
20
|
type: PublicKernelType.TAIL,
|
|
23
21
|
inputs: inputs,
|
|
24
22
|
};
|
|
25
23
|
return {
|
|
26
|
-
|
|
24
|
+
publicProvingRequests: [kernelRequest],
|
|
27
25
|
publicKernelOutput: previousPublicKernelOutput,
|
|
28
26
|
finalKernelOutput,
|
|
29
|
-
publicKernelProof: makeEmptyProof(),
|
|
30
|
-
revertReason: undefined,
|
|
31
27
|
returnValues: [],
|
|
32
|
-
gasUsed: undefined,
|
|
33
28
|
};
|
|
34
29
|
}
|
|
35
|
-
async
|
|
36
|
-
|
|
37
|
-
previousOutput.end.unencryptedLogsHashes = this.sortLogsHashes(previousOutput.end.unencryptedLogsHashes);
|
|
38
|
-
const [inputs, output] = await this.simulate(previousOutput, previousProof);
|
|
39
|
-
// Temporary hack. Should sort them in the tail circuit.
|
|
40
|
-
const noteHashes = mergeAccumulatedData(previousOutput.endNonRevertibleData.newNoteHashes, previousOutput.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
|
|
41
|
-
output.end.newNoteHashes = this.sortNoteHashes(noteHashes);
|
|
42
|
-
return [inputs, output];
|
|
43
|
-
}
|
|
44
|
-
async simulate(previousOutput, previousProof) {
|
|
45
|
-
const inputs = await this.buildPrivateInputs(previousOutput, previousProof);
|
|
30
|
+
async simulate(previousOutput) {
|
|
31
|
+
const inputs = await this.buildPrivateInputs(previousOutput);
|
|
46
32
|
// We take a deep copy (clone) of these to pass to the prover
|
|
47
33
|
return [inputs.clone(), await this.publicKernel.publicKernelCircuitTail(inputs)];
|
|
48
34
|
}
|
|
49
|
-
async buildPrivateInputs(previousOutput
|
|
50
|
-
const previousKernel = this.getPreviousKernelData(previousOutput
|
|
51
|
-
const { validationRequests, endNonRevertibleData, end } = previousOutput;
|
|
52
|
-
const pendingNullifiers = mergeAccumulatedData(
|
|
35
|
+
async buildPrivateInputs(previousOutput) {
|
|
36
|
+
const previousKernel = this.getPreviousKernelData(previousOutput);
|
|
37
|
+
const { validationRequests, endNonRevertibleData: nonRevertibleData, end: revertibleData } = previousOutput;
|
|
38
|
+
const pendingNullifiers = mergeAccumulatedData(nonRevertibleData.newNullifiers, revertibleData.newNullifiers, MAX_NEW_NULLIFIERS_PER_TX);
|
|
53
39
|
const nullifierReadRequestHints = await this.hintsBuilder.getNullifierReadRequestHints(validationRequests.nullifierReadRequests, pendingNullifiers);
|
|
54
40
|
const nullifierNonExistentReadRequestHints = await this.hintsBuilder.getNullifierNonExistentReadRequestHints(validationRequests.nullifierNonExistentReadRequests, pendingNullifiers);
|
|
55
|
-
const pendingPublicDataWrites = mergeAccumulatedData(
|
|
41
|
+
const pendingPublicDataWrites = mergeAccumulatedData(nonRevertibleData.publicDataUpdateRequests, revertibleData.publicDataUpdateRequests, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
56
42
|
const publicDataHints = await this.hintsBuilder.getPublicDataHints(validationRequests.publicDataReads, pendingPublicDataWrites);
|
|
57
43
|
const publicDataReadRequestHints = this.hintsBuilder.getPublicDataReadRequestHints(validationRequests.publicDataReads, pendingPublicDataWrites, publicDataHints);
|
|
58
44
|
const currentState = await this.db.getStateReference();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
sortNoteHashes(noteHashes) {
|
|
62
|
-
return sortByCounter(noteHashes).map(n => n.value);
|
|
63
|
-
}
|
|
64
|
-
sortLogsHashes(unencryptedLogsHashes) {
|
|
65
|
-
// TODO(6052): logs here may have duplicate counters from nested calls
|
|
66
|
-
return sortByCounter(unencryptedLogsHashes);
|
|
45
|
+
const hints = CombineHints.fromPublicData({ nonRevertibleData, revertibleData });
|
|
46
|
+
return new PublicKernelTailCircuitPrivateInputs(previousKernel, nullifierReadRequestHints, nullifierNonExistentReadRequestHints, publicDataHints, publicDataReadRequestHints, currentState.partial, hints);
|
|
67
47
|
}
|
|
68
48
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbF9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy90YWlsX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QixnQkFBZ0IsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBQzNGLE9BQU8sRUFDTCxZQUFZLEVBSVoseUJBQXlCLEVBQ3pCLHNDQUFzQyxFQUV0QyxvQ0FBb0MsRUFDcEMsb0JBQW9CLEdBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFJNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJdEYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFvQjtJQUN4RCxZQUNFLEVBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFlBQTBDLEVBQzFDLGVBQWdDLEVBQ2hDLGdCQUF3QixFQUNkLGlCQUE4QyxFQUM5QyxhQUE0QixFQUN0QyxRQUEyQixpQkFBaUIsQ0FBQyxJQUFJO1FBRWpELEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFKeEUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQUM5QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUl4QyxDQUFDO0lBRVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFNLEVBQUUsMEJBQTJEO1FBQ3ZGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxLQUFLO1FBQ3ZGLHNGQUFzRjtRQUN0RixLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDVixN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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Tx } from '@aztec/circuit-types';
|
|
2
|
-
import { type Fr, type Gas, type GlobalVariables, type Header, type
|
|
1
|
+
import { type PublicProvingRequest, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type Fr, type Gas, type GlobalVariables, type Header, type PublicKernelCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type PublicExecutor, type PublicStateDB } from '@aztec/simulator';
|
|
4
4
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
5
5
|
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
6
|
-
import { type ContractsDataSourcePublicDB } from './
|
|
6
|
+
import { type ContractsDataSourcePublicDB } from './public_db_sources.js';
|
|
7
7
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
8
8
|
/**
|
|
9
9
|
* The phase manager responsible for performing the fee preparation phase.
|
|
@@ -12,14 +12,12 @@ export declare class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
12
12
|
protected publicContractsDB: ContractsDataSourcePublicDB;
|
|
13
13
|
protected publicStateDB: PublicStateDB;
|
|
14
14
|
constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, phase?: PublicKernelPhase);
|
|
15
|
-
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs
|
|
16
|
-
|
|
17
|
-
kernelInputs: import("@aztec/circuits.js").PublicKernelCircuitPrivateInputs[];
|
|
15
|
+
handle(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Promise<{
|
|
16
|
+
publicProvingRequests: PublicProvingRequest[];
|
|
18
17
|
publicKernelOutput: PublicKernelCircuitPublicInputs;
|
|
19
|
-
publicKernelProof: Proof;
|
|
20
18
|
revertReason: import("@aztec/circuit-types").SimulationError | undefined;
|
|
21
19
|
returnValues: never[];
|
|
22
|
-
gasUsed: Gas;
|
|
20
|
+
gasUsed: Gas | undefined;
|
|
23
21
|
}>;
|
|
24
22
|
protected getTransactionFee(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Fr;
|
|
25
23
|
protected getAvailableGas(tx: Tx, _previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Gas;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"teardown_phase_manager.d.ts","sourceRoot":"","sources":["../../src/public/teardown_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,oBAAoB,EAAE,KAAK,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EACL,KAAK,EAAE,EACP,KAAK,GAAG,EACR,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,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;AAI/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAyB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAEzF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,oBAAoB;IAO1D,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;gBANtC,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACd,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EACtC,KAAK,GAAE,iBAA8C;IAKxC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B;;;;;;;cAyBtE,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,0BAA0B,EAAE,+BAA+B,GAAG,EAAE;cAU1F,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,2BAA2B,EAAE,+BAA+B,GAAG,GAAG;CAG9G"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PublicKernelType } from '@aztec/circuit-types';
|
|
2
2
|
import { inspect } from 'util';
|
|
3
|
-
import { AbstractPhaseManager, PublicKernelPhase } from './abstract_phase_manager.js';
|
|
3
|
+
import { AbstractPhaseManager, PublicKernelPhase, makeAvmProvingRequest } from './abstract_phase_manager.js';
|
|
4
4
|
/**
|
|
5
5
|
* The phase manager responsible for performing the fee preparation phase.
|
|
6
6
|
*/
|
|
@@ -10,33 +10,27 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
10
10
|
this.publicContractsDB = publicContractsDB;
|
|
11
11
|
this.publicStateDB = publicStateDB;
|
|
12
12
|
}
|
|
13
|
-
async handle(tx, previousPublicKernelOutput
|
|
13
|
+
async handle(tx, previousPublicKernelOutput) {
|
|
14
14
|
this.log.verbose(`Processing tx ${tx.getTxHash()}`);
|
|
15
|
-
const
|
|
15
|
+
const { publicProvingInformation, kernelOutput, newUnencryptedLogs, revertReason, gasUsed } = await this.processEnqueuedPublicCalls(tx, previousPublicKernelOutput).catch(
|
|
16
16
|
// the abstract phase manager throws if simulation gives error in a non-revertible phase
|
|
17
17
|
async (err) => {
|
|
18
18
|
await this.publicStateDB.rollbackToCommit();
|
|
19
19
|
throw err;
|
|
20
20
|
});
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
if (revertReason) {
|
|
22
|
+
await this.publicStateDB.rollbackToCheckpoint();
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// TODO(#6464): Should we allow emitting contracts in the public teardown phase?
|
|
26
|
+
// if so, we should insert them here
|
|
27
|
+
tx.unencryptedLogs.addFunctionLogs(newUnencryptedLogs);
|
|
28
|
+
}
|
|
23
29
|
// Return a list of teardown proving requests
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
type: PublicKernelType.TEARDOWN,
|
|
27
|
-
inputs: input,
|
|
28
|
-
};
|
|
29
|
-
return request;
|
|
30
|
+
const publicProvingRequests = publicProvingInformation.map(info => {
|
|
31
|
+
return makeAvmProvingRequest(info, PublicKernelType.TEARDOWN);
|
|
30
32
|
});
|
|
31
|
-
return {
|
|
32
|
-
kernelRequests,
|
|
33
|
-
kernelInputs,
|
|
34
|
-
publicKernelOutput,
|
|
35
|
-
publicKernelProof,
|
|
36
|
-
revertReason,
|
|
37
|
-
returnValues: [],
|
|
38
|
-
gasUsed,
|
|
39
|
-
};
|
|
33
|
+
return { publicProvingRequests, publicKernelOutput: kernelOutput, revertReason, returnValues: [], gasUsed };
|
|
40
34
|
}
|
|
41
35
|
getTransactionFee(tx, previousPublicKernelOutput) {
|
|
42
36
|
const gasSettings = tx.data.constants.txContext.gasSettings;
|
|
@@ -51,4 +45,4 @@ export class TeardownPhaseManager extends AbstractPhaseManager {
|
|
|
51
45
|
return tx.data.constants.txContext.gasSettings.getTeardownLimits();
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd25fcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvdGVhcmRvd25fcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXNDLE1BQU0sc0JBQXNCLENBQUM7QUFXNUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUk3Rzs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFDNUQsWUFDRSxFQUF3QixFQUN4QixjQUE4QixFQUM5QixZQUEwQyxFQUMxQyxlQUFnQyxFQUNoQyxnQkFBd0IsRUFDZCxpQkFBOEMsRUFDOUMsYUFBNEIsRUFDdEMsUUFBMkIsaUJBQWlCLENBQUMsUUFBUTtRQUVyRCxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBSnhFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFJeEMsQ0FBQztJQUVRLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBTSxFQUFFLDBCQUEyRDtRQUN2RixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FDekYsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxFQUFFLDBCQUEwQixDQUFDLENBQUMsS0FBSztRQUN6RSx3RkFBd0Y7UUFDeEYsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQ0YsQ0FBQztRQUNKLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsQ0FBQzthQUFNLENBQUM7WUFDTixnRkFBZ0Y7WUFDaEYsb0NBQW9DO1lBQ3BDLEVBQUUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDZDQUE2QztRQUM3QyxNQUFNLHFCQUFxQixHQUEyQix3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEYsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQzlHLENBQUM7SUFFa0IsaUJBQWlCLENBQUMsRUFBTSxFQUFFLDBCQUEyRDtRQUN0RyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzdDLGdGQUFnRjtRQUNoRixNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwSCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFa0IsZUFBZSxDQUFDLEVBQU0sRUFBRSwyQkFBNEQ7UUFDckcsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
|
|
@@ -14,7 +14,7 @@ import { type PublicExecution, type PublicExecutionResult } from './execution.js
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function createAvmExecutionEnvironment(current: PublicExecution, header: Header, globalVariables: GlobalVariables, gasSettings: GasSettings, transactionFee: Fr): AvmExecutionEnvironment;
|
|
16
16
|
export declare function createPublicExecution(startSideEffectCounter: number, avmEnvironment: AvmExecutionEnvironment, calldata: Fr[]): PublicExecution;
|
|
17
|
-
export declare function convertAvmResultsToPxResult(avmResult: AvmContractCallResults, startSideEffectCounter: number, fromPx: PublicExecution, startGas: Gas, endAvmContext: AvmContext): PublicExecutionResult;
|
|
17
|
+
export declare function convertAvmResultsToPxResult(avmResult: AvmContractCallResults, startSideEffectCounter: number, fromPx: PublicExecution, startGas: Gas, endAvmContext: AvmContext, bytecode: Buffer | undefined): PublicExecutionResult;
|
|
18
18
|
export declare function markBytecodeAsAvm(bytecode: Buffer): Buffer;
|
|
19
19
|
export declare function decompressBytecodeIfCompressed(bytecode: Buffer): Promise<Buffer>;
|
|
20
20
|
export declare function isAvmBytecode(bytecode: Buffer): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"transitional_adaptors.d.ts","sourceRoot":"","sources":["../../src/public/transitional_adaptors.ts"],"names":[],"mappings":";AAEA,OAAO,EAAe,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAK9C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAGhF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,EAAE,GACjB,uBAAuB,CAiBzB;AAED,wBAAgB,qBAAqB,CACnC,sBAAsB,EAAE,MAAM,EAC9B,cAAc,EAAE,uBAAuB,EACvC,QAAQ,EAAE,EAAE,EAAE,GACb,eAAe,CAgBjB;AAED,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,sBAAsB,EACjC,sBAAsB,EAAE,MAAM,EAC9B,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,GAAG,EACb,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,qBAAqB,CAuBvB;AASD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAGD,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAItE"}
|