diff --git a/core/state_processor.go b/core/state_processor.go index 0f29b6e6fe..010a3a153c 100644 --- a/core/state_processor.go +++ b/core/state_processor.go @@ -71,7 +71,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg } InitSignerInTransactions(p.config, header, block.Transactions()) - // Iterate over and process the individual transactions + // Iterate over and process the individual transactions for i, tx := range block.Transactions() { statedb.Prepare(tx.Hash(), block.Hash(), i) receipt, _, err := ApplyTransaction(p.config, p.bc, nil, gp, statedb, header, tx, usedGas, cfg) diff --git a/core/tx_pool.go b/core/tx_pool.go index a15fb1a606..d781437f59 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -801,6 +801,8 @@ 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) pool.mu.Lock() defer pool.mu.Unlock() @@ -819,6 +821,9 @@ 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 { + for _, tx := range txs { + types.CacheSigner(pool.signer, tx) + } pool.mu.Lock() defer pool.mu.Unlock()