diff options
Diffstat (limited to 'miner/miner.go')
-rw-r--r-- | miner/miner.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/miner/miner.go b/miner/miner.go new file mode 100644 index 000000000..7bf67a6ec --- /dev/null +++ b/miner/miner.go @@ -0,0 +1,55 @@ +package miner + +import ( + "math/big" + + "github.com/ethereum/ethash" + "github.com/ethereum/go-ethereum/core" + "github.com/ethereum/go-ethereum/logger" + "github.com/ethereum/go-ethereum/pow" +) + +var minerlogger = logger.NewLogger("MINER") + +type Miner struct { + worker *worker + + MinAcceptedGasPrice *big.Int + Extra string + + mining bool + eth core.Backend + pow pow.PoW +} + +func New(eth core.Backend, pow pow.PoW, minerThreads int) *Miner { + // note: minerThreads is currently ignored because + // ethash is not thread safe. + return &Miner{eth: eth, pow: pow} +} + +func (self *Miner) Mining() bool { + return self.mining +} + +func (self *Miner) Start(coinbase []byte) { + self.mining = true + self.worker = newWorker(coinbase, self.eth) + self.worker.register(NewCpuMiner(0, self.pow)) + + self.pow.(*ethash.Ethash).UpdateDAG() + + self.worker.start() + self.worker.commitNewWork() +} + +func (self *Miner) Stop() { + self.mining = false + self.worker.stop() + + //self.pow.(*ethash.Ethash).Stop() +} + +func (self *Miner) HashRate() int64 { + return self.worker.HashRate() +} |