From 9e4b7f4c9305ffd74317552121b72f49276a0fa0 Mon Sep 17 00:00:00 2001 From: Piers Powlesland Date: Fri, 6 Sep 2024 13:27:12 +0100 Subject: [PATCH] core/types: ensure signers instantiated only once --- core/types/transaction_signing.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/types/transaction_signing.go b/core/types/transaction_signing.go index 7eb5938bb7..73011e238b 100644 --- a/core/types/transaction_signing.go +++ b/core/types/transaction_signing.go @@ -64,7 +64,7 @@ func MakeSigner(config *params.ChainConfig, blockNumber *big.Int, blockTime uint // Use this in transaction-handling code where the current block number is unknown. If you // have the current block number available, use MakeSigner instead. func LatestSigner(config *params.ChainConfig) Signer { - var signer Signer = HomesteadSigner{} + var signer Signer if config.ChainID != nil { switch { case config.CancunTime != nil: @@ -75,7 +75,11 @@ func LatestSigner(config *params.ChainConfig) Signer { signer = NewEIP2930Signer(config.ChainID) case config.EIP155Block != nil: signer = NewEIP155Signer(config.ChainID) + default: + signer = HomesteadSigner{} } + } else { + signer = HomesteadSigner{} } return signer } @@ -88,9 +92,11 @@ func LatestSigner(config *params.ChainConfig) Signer { // configuration are unknown. If you have a ChainConfig, use LatestSigner instead. // If you have a ChainConfig and know the current block number, use MakeSigner instead. func LatestSignerForChainID(chainID *big.Int) Signer { - var signer Signer = HomesteadSigner{} + var signer Signer if chainID != nil { signer = NewCancunSigner(chainID) + } else { + signer = HomesteadSigner{} } return signer }