github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/miner/miner.go (about) 1 package miner 2 3 import ( 4 "math/big" 5 6 "github.com/jonasnick/go-ethereum/eth" 7 "github.com/jonasnick/go-ethereum/logger" 8 "github.com/jonasnick/go-ethereum/pow/ezp" 9 ) 10 11 var minerlogger = logger.NewLogger("MINER") 12 13 type Miner struct { 14 worker *worker 15 16 MinAcceptedGasPrice *big.Int 17 Extra string 18 19 coinbase []byte 20 mining bool 21 } 22 23 func New(coinbase []byte, eth *eth.Ethereum) *Miner { 24 miner := &Miner{ 25 coinbase: coinbase, 26 worker: newWorker(coinbase, eth), 27 } 28 29 for i := 0; i < 4; i++ { 30 miner.worker.register(NewCpuMiner(i, ezp.New())) 31 } 32 33 return miner 34 } 35 36 func (self *Miner) Mining() bool { 37 return self.mining 38 } 39 40 func (self *Miner) Start() { 41 self.mining = true 42 43 self.worker.start() 44 45 self.worker.commitNewWork() 46 } 47 48 func (self *Miner) Stop() { 49 self.mining = false 50 51 self.worker.stop() 52 } 53 54 func (self *Miner) HashRate() int64 { 55 var tot int64 56 for _, agent := range self.worker.agents { 57 tot += agent.Pow().GetHashrate() 58 } 59 60 return tot 61 }