From 34792a6c50902832201da7031cb8fe62136a361a Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Wed, 24 Apr 2024 19:03:38 -0300 Subject: [PATCH] feat: Use gas fees from historical header for computing tx fee --- .../crates/public-kernel-lib/src/public_kernel_teardown.nr | 3 +-- yarn-project/simulator/src/public/public_processor.test.ts | 1 + yarn-project/simulator/src/public/teardown_phase_manager.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr index 9b19bb71dcc5..19eb4170c0c8 100644 --- a/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr +++ b/noir-projects/noir-protocol-circuits/crates/public-kernel-lib/src/public_kernel_teardown.nr @@ -36,8 +36,7 @@ impl PublicKernelTeardownCircuitPrivateInputs { let transaction_fee = self.public_call.call_stack_item.public_inputs.transaction_fee; // Note that teardown_gas is already included in end.gas_used as it was injected by the private kernel let total_gas_used = self.previous_kernel.public_inputs.end.gas_used.add(self.previous_kernel.public_inputs.end_non_revertible.gas_used); - // TODO(palla/gas): Load gas fees from a PublicConstantData struct that's currently missing - let block_gas_fees = GasFees::default(); + let block_gas_fees = self.previous_kernel.public_inputs.constants.historical_header.global_variables.gas_fees; let inclusion_fee = self.previous_kernel.public_inputs.constants.tx_context.gas_settings.inclusion_fee; let computed_transaction_fee = total_gas_used.compute_fee(block_gas_fees) + inclusion_fee; diff --git a/yarn-project/simulator/src/public/public_processor.test.ts b/yarn-project/simulator/src/public/public_processor.test.ts index 7f52b6352f9a..0e96cb7a3b32 100644 --- a/yarn-project/simulator/src/public/public_processor.test.ts +++ b/yarn-project/simulator/src/public/public_processor.test.ts @@ -184,6 +184,7 @@ describe('public_processor', () => { ); const header = Header.empty(); + header.globalVariables.gasFees = GasFees.default(); const stateReference = new StateReference( header.state.l1ToL2MessageTree, new PartialStateReference(header.state.partial.noteHashTree, header.state.partial.nullifierTree, snap), diff --git a/yarn-project/simulator/src/public/teardown_phase_manager.ts b/yarn-project/simulator/src/public/teardown_phase_manager.ts index 6cec359c9c5b..b8ab019b335c 100644 --- a/yarn-project/simulator/src/public/teardown_phase_manager.ts +++ b/yarn-project/simulator/src/public/teardown_phase_manager.ts @@ -70,7 +70,7 @@ export class TeardownPhaseManager extends AbstractPhaseManager { protected override getTransactionFee(tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs): Fr { const gasSettings = tx.data.constants.txContext.gasSettings; - const gasFees = this.globalVariables.gasFees; + const gasFees = this.historicalHeader.globalVariables.gasFees; // No need to add teardown limits since they are already included in end.gasUsed const gasUsed = previousPublicKernelOutput.end.gasUsed.add(previousPublicKernelOutput.endNonRevertibleData.gasUsed); const txFee = gasSettings.inclusionFee.add(gasUsed.computeFee(gasFees));