Ver Fonte

miner: avoid unnecessary work (#15883)

Jim McDonald há 7 anos atrás
pai
commit
18a7d31338
2 ficheiros alterados com 10 adições e 0 exclusões
  1. 5 0
      core/gaspool.go
  2. 5 0
      miner/worker.go

+ 5 - 0
core/gaspool.go

@@ -44,6 +44,11 @@ func (gp *GasPool) SubGas(amount uint64) error {
 	return nil
 }
 
+// Gas returns the amount of gas remaining in the pool.
+func (gp *GasPool) Gas() uint64 {
+	return uint64(*gp)
+}
+
 func (gp *GasPool) String() string {
 	return fmt.Sprintf("%d", *gp)
 }

+ 5 - 0
miner/worker.go

@@ -512,6 +512,11 @@ func (env *Work) commitTransactions(mux *event.TypeMux, txs *types.TransactionsB
 	var coalescedLogs []*types.Log
 
 	for {
+		// If we don't have enough gas for any further transactions then we're done
+		if gp.Gas() < params.TxGas {
+			log.Trace("Not enough gas for further transactions", "gp", gp)
+			break
+		}
 		// Retrieve the next transaction and abort if all done
 		tx := txs.Peek()
 		if tx == nil {