aboutsummaryrefslogtreecommitdiffstats
path: root/miner
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-05-17 03:07:27 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-05-17 03:07:27 +0800
commita2f23ca9b181fa4409fdee3076316f3127038b9b (patch)
tree4aff39e2ad7ff31562468830b7f3435188e1672c /miner
parente20158176d2061ff95cdf022aa7113aa7c47a98e (diff)
downloaddexon-a2f23ca9b181fa4409fdee3076316f3127038b9b.tar.gz
dexon-a2f23ca9b181fa4409fdee3076316f3127038b9b.tar.zst
dexon-a2f23ca9b181fa4409fdee3076316f3127038b9b.zip
cmd, core, eth, miner: remove txpool gas price limits (#14442)
Diffstat (limited to 'miner')
-rw-r--r--miner/miner.go13
-rw-r--r--miner/worker.go68
2 files changed, 9 insertions, 72 deletions
diff --git a/miner/miner.go b/miner/miner.go
index 453fff04d..fec0a40f5 100644
--- a/miner/miner.go
+++ b/miner/miner.go
@@ -19,7 +19,6 @@ package miner
import (
"fmt"
- "math/big"
"sync/atomic"
"github.com/ethereum/go-ethereum/accounts"
@@ -104,18 +103,6 @@ out:
}
}
-func (m *Miner) GasPrice() *big.Int {
- return new(big.Int).Set(m.worker.gasPrice)
-}
-
-func (m *Miner) SetGasPrice(price *big.Int) {
- // FIXME block tests set a nil gas price. Quick dirty fix
- if price == nil {
- return
- }
- m.worker.setGasPrice(price)
-}
-
func (self *Miner) Start(coinbase common.Address) {
atomic.StoreInt32(&self.shouldStart, 1)
self.worker.setEtherbase(coinbase)
diff --git a/miner/worker.go b/miner/worker.go
index 01241b3f3..e64917261 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -59,14 +59,12 @@ type Work struct {
config *params.ChainConfig
signer types.Signer
- state *state.StateDB // apply state changes here
- ancestors *set.Set // ancestor set (used for checking uncle parent validity)
- family *set.Set // family set (used for checking uncle invalidity)
- uncles *set.Set // uncle set
- tcount int // tx count in cycle
- ownedAccounts *set.Set
- lowGasTxs types.Transactions
- failedTxs types.Transactions
+ state *state.StateDB // apply state changes here
+ ancestors *set.Set // ancestor set (used for checking uncle parent validity)
+ family *set.Set // family set (used for checking uncle invalidity)
+ uncles *set.Set // uncle set
+ tcount int // tx count in cycle
+ failedTxs types.Transactions
Block *types.Block // the new block
@@ -103,7 +101,6 @@ type worker struct {
chainDb ethdb.Database
coinbase common.Address
- gasPrice *big.Int
extra []byte
currentMu sync.Mutex
@@ -132,7 +129,6 @@ func newWorker(config *params.ChainConfig, engine consensus.Engine, coinbase com
mux: mux,
chainDb: eth.ChainDb(),
recv: make(chan *Result, resultQueueSize),
- gasPrice: new(big.Int),
chain: eth.BlockChain(),
proc: eth.BlockChain().Validator(),
possibleUncles: make(map[common.Hash]*types.Block),
@@ -252,7 +248,7 @@ func (self *worker) update() {
txs := map[common.Address]types.Transactions{acc: {ev.Tx}}
txset := types.NewTransactionsByPriceAndNonce(txs)
- self.current.commitTransactions(self.mux, txset, self.gasPrice, self.chain, self.coinbase)
+ self.current.commitTransactions(self.mux, txset, self.chain, self.coinbase)
self.currentMu.Unlock()
}
}
@@ -375,22 +371,10 @@ func (self *worker) makeCurrent(parent *types.Block, header *types.Header) error
}
// Keep track of transactions which return errors so they can be removed
work.tcount = 0
- work.ownedAccounts = accountAddressesSet(accounts)
self.current = work
return nil
}
-func (w *worker) setGasPrice(p *big.Int) {
- w.mu.Lock()
- defer w.mu.Unlock()
-
- // calculate the minimal gas price the miner accepts when sorting out transactions.
- const pct = int64(90)
- w.gasPrice = gasprice(p, pct)
-
- w.mux.Post(core.GasPriceChanged{Price: w.gasPrice})
-}
-
func (self *worker) commitNewWork() {
self.mu.Lock()
defer self.mu.Unlock()
@@ -460,9 +444,8 @@ func (self *worker) commitNewWork() {
return
}
txs := types.NewTransactionsByPriceAndNonce(pending)
- work.commitTransactions(self.mux, txs, self.gasPrice, self.chain, self.coinbase)
+ work.commitTransactions(self.mux, txs, self.chain, self.coinbase)
- self.eth.TxPool().RemoveBatch(work.lowGasTxs)
self.eth.TxPool().RemoveBatch(work.failedTxs)
// compute uncles for the new block.
@@ -515,7 +498,7 @@ func (self *worker) commitUncle(work *Work, uncle *types.Header) error {
return nil
}
-func (env *Work) commitTransactions(mux *event.TypeMux, txs *types.TransactionsByPriceAndNonce, gasPrice *big.Int, bc *core.BlockChain, coinbase common.Address) {
+func (env *Work) commitTransactions(mux *event.TypeMux, txs *types.TransactionsByPriceAndNonce, bc *core.BlockChain, coinbase common.Address) {
gp := new(core.GasPool).AddGas(env.header.GasLimit)
var coalescedLogs []*types.Log
@@ -539,17 +522,6 @@ func (env *Work) commitTransactions(mux *event.TypeMux, txs *types.TransactionsB
txs.Pop()
continue
}
-
- // Ignore any transactions (and accounts subsequently) with low gas limits
- if tx.GasPrice().Cmp(gasPrice) < 0 && !env.ownedAccounts.Has(from) {
- // Pop the current low-priced transaction without shifting in the next from the account
- log.Warn("Transaction below gas price", "sender", from, "hash", tx.Hash(), "have", tx.GasPrice(), "want", gasPrice)
-
- env.lowGasTxs = append(env.lowGasTxs, tx)
- txs.Pop()
-
- continue
- }
// Start executing the transaction
env.state.StartRecord(tx.Hash(), common.Hash{}, env.tcount)
@@ -607,25 +579,3 @@ func (env *Work) commitTransaction(tx *types.Transaction, bc *core.BlockChain, c
return nil, receipt.Logs
}
-
-// TODO: remove or use
-func (self *worker) HashRate() int64 {
- return 0
-}
-
-// gasprice calculates a reduced gas price based on the pct
-// XXX Use big.Rat?
-func gasprice(price *big.Int, pct int64) *big.Int {
- p := new(big.Int).Set(price)
- p.Div(p, big.NewInt(100))
- p.Mul(p, big.NewInt(pct))
- return p
-}
-
-func accountAddressesSet(accounts []accounts.Account) *set.Set {
- accountSet := set.New()
- for _, account := range accounts {
- accountSet.Add(account.Address)
- }
- return accountSet
-}