Skip to content

Commit 0342496

Browse files
authored
core/types: more easily extensible tx signing (#30372)
This change makes the code slightly easier for downstream-projects to extend with more signer-types, but if functionalily equivalent to the previous code.
1 parent 4c4f212 commit 0342496

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

core/types/transaction_signing.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,21 +64,24 @@ func MakeSigner(config *params.ChainConfig, blockNumber *big.Int, blockTime uint
6464
// Use this in transaction-handling code where the current block number is unknown. If you
6565
// have the current block number available, use MakeSigner instead.
6666
func LatestSigner(config *params.ChainConfig) Signer {
67+
var signer Signer
6768
if config.ChainID != nil {
68-
if config.CancunTime != nil {
69-
return NewCancunSigner(config.ChainID)
70-
}
71-
if config.LondonBlock != nil {
72-
return NewLondonSigner(config.ChainID)
73-
}
74-
if config.BerlinBlock != nil {
75-
return NewEIP2930Signer(config.ChainID)
76-
}
77-
if config.EIP155Block != nil {
78-
return NewEIP155Signer(config.ChainID)
69+
switch {
70+
case config.CancunTime != nil:
71+
signer = NewCancunSigner(config.ChainID)
72+
case config.LondonBlock != nil:
73+
signer = NewLondonSigner(config.ChainID)
74+
case config.BerlinBlock != nil:
75+
signer = NewEIP2930Signer(config.ChainID)
76+
case config.EIP155Block != nil:
77+
signer = NewEIP155Signer(config.ChainID)
78+
default:
79+
signer = HomesteadSigner{}
7980
}
81+
} else {
82+
signer = HomesteadSigner{}
8083
}
81-
return HomesteadSigner{}
84+
return signer
8285
}
8386

8487
// LatestSignerForChainID returns the 'most permissive' Signer available. Specifically,
@@ -89,10 +92,13 @@ func LatestSigner(config *params.ChainConfig) Signer {
8992
// configuration are unknown. If you have a ChainConfig, use LatestSigner instead.
9093
// If you have a ChainConfig and know the current block number, use MakeSigner instead.
9194
func LatestSignerForChainID(chainID *big.Int) Signer {
92-
if chainID == nil {
93-
return HomesteadSigner{}
95+
var signer Signer
96+
if chainID != nil {
97+
signer = NewCancunSigner(chainID)
98+
} else {
99+
signer = HomesteadSigner{}
94100
}
95-
return NewCancunSigner(chainID)
101+
return signer
96102
}
97103

98104
// SignTx signs the transaction using the given signer and private key.

0 commit comments

Comments
 (0)