Merge pull request #925 from obscuren/worker_owned_accounts
miner, cmd/geth: miner will not ignored owned account transactions
This commit is contained in:
commit
76215ca9f3
@ -275,11 +275,20 @@ func (js *jsre) verbosity(call otto.FunctionCall) otto.Value {
|
||||
}
|
||||
|
||||
func (js *jsre) startMining(call otto.FunctionCall) otto.Value {
|
||||
threads, err := call.Argument(0).ToInteger()
|
||||
var (
|
||||
threads int64
|
||||
err error
|
||||
)
|
||||
|
||||
if len(call.ArgumentList) > 0 {
|
||||
threads, err = call.Argument(0).ToInteger()
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return otto.FalseValue()
|
||||
}
|
||||
} else {
|
||||
threads = 4
|
||||
}
|
||||
|
||||
err = js.ethereum.StartMining(int(threads))
|
||||
if err != nil {
|
||||
|
@ -21,21 +21,41 @@ import (
|
||||
|
||||
var jsonlogger = logger.NewJsonLogger()
|
||||
|
||||
// Work holds the current work
|
||||
type Work struct {
|
||||
Number uint64
|
||||
Nonce uint64
|
||||
MixDigest []byte
|
||||
SeedHash []byte
|
||||
}
|
||||
|
||||
// Agent can register themself with the worker
|
||||
type Agent interface {
|
||||
Work() chan<- *types.Block
|
||||
SetReturnCh(chan<- *types.Block)
|
||||
Stop()
|
||||
Start()
|
||||
GetHashRate() int64
|
||||
}
|
||||
|
||||
// environment is the workers current environment and holds
|
||||
// all of the current state information
|
||||
type environment struct {
|
||||
totalUsedGas *big.Int
|
||||
state *state.StateDB
|
||||
coinbase *state.StateObject
|
||||
block *types.Block
|
||||
family *set.Set
|
||||
uncles *set.Set
|
||||
remove *set.Set
|
||||
tcount int
|
||||
totalUsedGas *big.Int // total gas usage in the cycle
|
||||
state *state.StateDB // apply state changes here
|
||||
coinbase *state.StateObject // the miner's account
|
||||
block *types.Block // the new block
|
||||
family *set.Set // family set (used for checking uncles)
|
||||
uncles *set.Set // uncle set
|
||||
remove *set.Set // tx which will be removed
|
||||
tcount int // tx count in cycle
|
||||
ignoredTransactors *set.Set
|
||||
lowGasTransactors *set.Set
|
||||
ownedAccounts *set.Set
|
||||
lowGasTxs types.Transactions
|
||||
}
|
||||
|
||||
// env returns a new environment for the current cycle
|
||||
func env(block *types.Block, eth core.Backend) *environment {
|
||||
state := state.New(block.Root(), eth.StateDb())
|
||||
env := &environment{
|
||||
@ -50,21 +70,7 @@ func env(block *types.Block, eth core.Backend) *environment {
|
||||
return env
|
||||
}
|
||||
|
||||
type Work struct {
|
||||
Number uint64
|
||||
Nonce uint64
|
||||
MixDigest []byte
|
||||
SeedHash []byte
|
||||
}
|
||||
|
||||
type Agent interface {
|
||||
Work() chan<- *types.Block
|
||||
SetReturnCh(chan<- *types.Block)
|
||||
Stop()
|
||||
Start()
|
||||
GetHashRate() int64
|
||||
}
|
||||
|
||||
// worker is the main object which takes care of applying messages to the new state
|
||||
type worker struct {
|
||||
mu sync.Mutex
|
||||
|
||||
@ -375,8 +381,8 @@ func (self *worker) commitTransactions(transactions types.Transactions) {
|
||||
// We can skip err. It has already been validated in the tx pool
|
||||
from, _ := tx.From()
|
||||
|
||||
// check if it falls within margin
|
||||
if tx.GasPrice().Cmp(self.gasPrice) < 0 {
|
||||
// Check if it falls within margin. Txs from owned accounts are always processed.
|
||||
if tx.GasPrice().Cmp(self.gasPrice) < 0 && !current.ownedAccounts.Has(from) {
|
||||
// ignore the transaction and transactor. We ignore the transactor
|
||||
// because nonce will fail after ignoring this transaction so there's
|
||||
// no point
|
||||
|
Loading…
Reference in New Issue
Block a user