miner.go 959 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package miner
  2. import (
  3. "math/big"
  4. "github.com/ethereum/go-ethereum/core"
  5. "github.com/ethereum/go-ethereum/logger"
  6. "github.com/ethereum/go-ethereum/pow/ezp"
  7. )
  8. var minerlogger = logger.NewLogger("MINER")
  9. type Miner struct {
  10. worker *worker
  11. MinAcceptedGasPrice *big.Int
  12. Extra string
  13. Coinbase []byte
  14. mining bool
  15. }
  16. func New(coinbase []byte, eth core.Backend) *Miner {
  17. miner := &Miner{
  18. Coinbase: coinbase,
  19. worker: newWorker(coinbase, eth),
  20. }
  21. for i := 0; i < 4; i++ {
  22. miner.worker.register(NewCpuMiner(i, ezp.New()))
  23. }
  24. return miner
  25. }
  26. func (self *Miner) Mining() bool {
  27. return self.mining
  28. }
  29. func (self *Miner) Start() {
  30. self.mining = true
  31. self.worker.start()
  32. self.worker.commitNewWork()
  33. }
  34. func (self *Miner) Stop() {
  35. self.mining = false
  36. self.worker.stop()
  37. }
  38. func (self *Miner) HashRate() int64 {
  39. var tot int64
  40. for _, agent := range self.worker.agents {
  41. tot += agent.Pow().GetHashrate()
  42. }
  43. return tot
  44. }