From 9766a428e3cac3e0a0ddbced9186a9d8da32efc8 Mon Sep 17 00:00:00 2001 From: Lee Bousfield Date: Thu, 22 Jun 2023 11:57:14 -0600 Subject: [PATCH] Fix EVM for gas estimation for scheduled messages --- internal/ethapi/api.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 3406459f2..2a6705b19 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -1027,6 +1027,11 @@ func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash // Arbitrum: a tx can schedule another (see retryables) scheduled := result.ScheduledTxes for runMode == core.MessageGasEstimationMode && len(scheduled) > 0 { + // This will panic if the scheduled tx is signed, but we only schedule unsigned ones + msg, err := core.TransactionToMessage(scheduled[0], types.NewArbitrumSigner(nil), header.BaseFee) + if err != nil { + return nil, err + } // make a new EVM for the scheduled Tx (an EVM must never be reused) evm, vmError, err := b.GetEVM(ctx, msg, state, header, &vm.Config{NoBaseFee: true}) if err != nil { @@ -1037,11 +1042,6 @@ func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash evm.Cancel() }() - // This will panic if the scheduled tx is signed, but we only schedule unsigned ones - msg, err := core.TransactionToMessage(scheduled[0], types.NewArbitrumSigner(nil), header.BaseFee) - if err != nil { - return nil, err - } scheduledTxResult, err := core.ApplyMessage(evm, msg, gp) if err != nil { return nil, err // Bail out