aboutsummaryrefslogtreecommitdiffstats
path: root/miner
diff options
context:
space:
mode:
Diffstat (limited to 'miner')
-rw-r--r--miner/agent.go4
-rw-r--r--miner/miner.go9
-rw-r--r--miner/worker.go10
3 files changed, 16 insertions, 7 deletions
diff --git a/miner/agent.go b/miner/agent.go
index 9046f5d5a..5b2bfdb06 100644
--- a/miner/agent.go
+++ b/miner/agent.go
@@ -69,8 +69,8 @@ done:
func (self *CpuMiner) mine(block *types.Block) {
minerlogger.Infof("(re)started agent[%d]. mining...\n", self.index)
- nonce := self.pow.Search(block, self.quitCurrentOp)
+ nonce, mixDigest, seedHash := self.pow.Search(block, self.quitCurrentOp)
if nonce != nil {
- self.returnCh <- Work{block.Number().Uint64(), nonce}
+ self.returnCh <- Work{block.Number().Uint64(), nonce, mixDigest, seedHash}
}
}
diff --git a/miner/miner.go b/miner/miner.go
index 6b416be8e..b60422a3a 100644
--- a/miner/miner.go
+++ b/miner/miner.go
@@ -5,7 +5,7 @@ import (
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/pow/ezp"
+ "github.com/ethereum/go-ethereum/pow"
)
var minerlogger = logger.NewLogger("MINER")
@@ -18,16 +18,19 @@ type Miner struct {
Coinbase []byte
mining bool
+
+ pow pow.PoW
}
-func New(coinbase []byte, eth core.Backend, minerThreads int) *Miner {
+func New(coinbase []byte, eth core.Backend, pow pow.PoW, minerThreads int) *Miner {
miner := &Miner{
Coinbase: coinbase,
worker: newWorker(coinbase, eth),
+ pow: pow,
}
for i := 0; i < minerThreads; i++ {
- miner.worker.register(NewCpuMiner(i, ezp.New()))
+ miner.worker.register(NewCpuMiner(i, miner.pow))
}
return miner
diff --git a/miner/worker.go b/miner/worker.go
index afce68c35..774ef9a7e 100644
--- a/miner/worker.go
+++ b/miner/worker.go
@@ -43,8 +43,10 @@ func env(block *types.Block, eth core.Backend) *environment {
}
type Work struct {
- Number uint64
- Nonce []byte
+ Number uint64
+ Nonce []byte
+ MixDigest []byte
+ SeedHash []byte
}
type Agent interface {
@@ -143,9 +145,13 @@ out:
func (self *worker) wait() {
for {
for work := range self.recv {
+ // Someone Successfully Mined!
block := self.current.block
if block.Number().Uint64() == work.Number && block.Nonce() == nil {
self.current.block.Header().Nonce = work.Nonce
+ self.current.block.Header().MixDigest = work.MixDigest
+ self.current.block.Header().SeedHash = work.SeedHash
+ fmt.Println(self.current.block)
if err := self.chain.InsertChain(types.Blocks{self.current.block}); err == nil {
self.mux.Post(core.NewMinedBlockEvent{self.current.block})