diff --git a/core/tx_pool.go b/core/tx_pool.go index 1157af50bd..f6f2a9b356 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -192,7 +192,6 @@ type TxPool struct { chainHeadSub event.Subscription signer types.Signer mu sync.RWMutex - promotedTxCh chan TxPreEvent currentState *state.StateDB // Current state in the blockchain head pendingState *state.ManagedState // Pending state tracking virtual nonces @@ -220,17 +219,16 @@ func NewTxPool(config TxPoolConfig, chainconfig *params.ChainConfig, chain block // Create the transaction pool with its initial settings pool := &TxPool{ - config: config, - chainconfig: chainconfig, - chain: chain, - signer: types.NewEIP155Signer(chainconfig.ChainId), - pending: make(map[common.Address]*txList), - queue: make(map[common.Address]*txList), - beats: make(map[common.Address]time.Time), - all: make(map[common.Hash]*types.Transaction), - chainHeadCh: make(chan ChainHeadEvent, chainHeadChanSize), - gasPrice: new(big.Int).SetUint64(config.PriceLimit), - promotedTxCh: make(chan TxPreEvent, config.GlobalSlots), + config: config, + chainconfig: chainconfig, + chain: chain, + signer: types.NewEIP155Signer(chainconfig.ChainId), + pending: make(map[common.Address]*txList), + queue: make(map[common.Address]*txList), + beats: make(map[common.Address]time.Time), + all: make(map[common.Hash]*types.Transaction), + chainHeadCh: make(chan ChainHeadEvent, chainHeadChanSize), + gasPrice: new(big.Int).SetUint64(config.PriceLimit), } pool.locals = newAccountSet(pool.signer) pool.priced = newTxPricedList(&pool.all) @@ -335,10 +333,6 @@ func (pool *TxPool) loop() { } pool.mu.Unlock() } - - // Handle promoted transaction - case txPreEvent := <-pool.promotedTxCh: - pool.txFeed.Send(txPreEvent) } } } @@ -658,10 +652,8 @@ func (pool *TxPool) add(tx *types.Transaction, local bool) (bool, error) { log.Trace("Pooled new executable transaction", "hash", hash, "from", from, "to", tx.To()) - // We've directly injected a replacement transaction, notify subsystems - go func(tx *types.Transaction) { - pool.promotedTxCh <- TxPreEvent{tx} - }(tx) + // We've directly injected a replacement transaction, notify subsystems. + pool.txFeed.Send(TxPreEvent{tx}) return old != nil, nil } @@ -755,9 +747,7 @@ func (pool *TxPool) promoteTx(addr common.Address, hash common.Hash, tx *types.T pool.beats[addr] = time.Now() pool.pendingState.SetNonce(addr, tx.Nonce()+1) - go func(tx *types.Transaction) { - pool.promotedTxCh <- TxPreEvent{tx} - }(tx) + pool.txFeed.Send(TxPreEvent{tx}) } // AddLocal enqueues a single transaction into the pool if it is valid, marking