mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
core: cache tx signature before obtaining lock (#19351)
This commit is contained in:
parent
c5b22fbc32
commit
65baaaaf80
1 changed files with 7 additions and 2 deletions
|
|
@ -970,8 +970,9 @@ func (pool *TxPool) AddRemotes(txs []*types.Transaction) []error {
|
|||
|
||||
// addTx enqueues a single transaction into the pool if it is valid.
|
||||
func (pool *TxPool) addTx(tx *types.Transaction, local bool) error {
|
||||
tx.CacheHash()
|
||||
types.CacheSigner(pool.signer, tx)
|
||||
// Cache sender in transaction before obtaining lock (pool.signer is immutable)
|
||||
types.Sender(pool.signer, tx)
|
||||
|
||||
pool.mu.Lock()
|
||||
defer pool.mu.Unlock()
|
||||
|
||||
|
|
@ -990,6 +991,10 @@ func (pool *TxPool) addTx(tx *types.Transaction, local bool) error {
|
|||
|
||||
// addTxs attempts to queue a batch of transactions if they are valid.
|
||||
func (pool *TxPool) addTxs(txs []*types.Transaction, local bool) []error {
|
||||
// Cache senders in transactions before obtaining lock (pool.signer is immutable)
|
||||
for _, tx := range txs {
|
||||
types.Sender(pool.signer, tx)
|
||||
}
|
||||
pool.mu.Lock()
|
||||
defer pool.mu.Unlock()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue