core/types: ensure signers instantiated only once

This commit is contained in:
Piers Powlesland 2024-09-06 13:27:12 +01:00
parent 4f6ffd0a48
commit 9e4b7f4c93

View file

@ -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 // Use this in transaction-handling code where the current block number is unknown. If you
// have the current block number available, use MakeSigner instead. // have the current block number available, use MakeSigner instead.
func LatestSigner(config *params.ChainConfig) Signer { func LatestSigner(config *params.ChainConfig) Signer {
var signer Signer = HomesteadSigner{} var signer Signer
if config.ChainID != nil { if config.ChainID != nil {
switch { switch {
case config.CancunTime != nil: case config.CancunTime != nil:
@ -75,7 +75,11 @@ func LatestSigner(config *params.ChainConfig) Signer {
signer = NewEIP2930Signer(config.ChainID) signer = NewEIP2930Signer(config.ChainID)
case config.EIP155Block != nil: case config.EIP155Block != nil:
signer = NewEIP155Signer(config.ChainID) signer = NewEIP155Signer(config.ChainID)
default:
signer = HomesteadSigner{}
} }
} else {
signer = HomesteadSigner{}
} }
return signer return signer
} }
@ -88,9 +92,11 @@ func LatestSigner(config *params.ChainConfig) Signer {
// configuration are unknown. If you have a ChainConfig, use LatestSigner instead. // 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. // If you have a ChainConfig and know the current block number, use MakeSigner instead.
func LatestSignerForChainID(chainID *big.Int) Signer { func LatestSignerForChainID(chainID *big.Int) Signer {
var signer Signer = HomesteadSigner{} var signer Signer
if chainID != nil { if chainID != nil {
signer = NewCancunSigner(chainID) signer = NewCancunSigner(chainID)
} else {
signer = HomesteadSigner{}
} }
return signer return signer
} }