aboutsummaryrefslogtreecommitdiffstats
path: root/miner/miner.go
diff options
context:
space:
mode:
Diffstat (limited to 'miner/miner.go')
-rw-r--r--miner/miner.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/miner/miner.go b/miner/miner.go
new file mode 100644
index 000000000..0cc2361c8
--- /dev/null
+++ b/miner/miner.go
@@ -0,0 +1,61 @@
+package miner
+
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/core"
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/pow/ezp"
+)
+
+var minerlogger = logger.NewLogger("MINER")
+
+type Miner struct {
+ worker *worker
+
+ MinAcceptedGasPrice *big.Int
+ Extra string
+
+ Coinbase []byte
+ mining bool
+}
+
+func New(coinbase []byte, eth core.Backend, minerThreads int) *Miner {
+ miner := &Miner{
+ Coinbase: coinbase,
+ worker: newWorker(coinbase, eth),
+ }
+
+ for i := 0; i < minerThreads; i++ {
+ miner.worker.register(NewCpuMiner(i, ezp.New()))
+ }
+
+ return miner
+}
+
+func (self *Miner) Mining() bool {
+ return self.mining
+}
+
+func (self *Miner) Start() {
+ self.mining = true
+
+ self.worker.start()
+
+ self.worker.commitNewWork()
+}
+
+func (self *Miner) Stop() {
+ self.mining = false
+
+ self.worker.stop()
+}
+
+func (self *Miner) HashRate() int64 {
+ var tot int64
+ for _, agent := range self.worker.agents {
+ tot += agent.Pow().GetHashrate()
+ }
+
+ return tot
+}