all: swap out the C++ ethash to the pure Go one (mining todo)
This commit is contained in:
committed by
Felix Lange
parent
3b00a77de5
commit
567d41d936
@ -111,7 +111,7 @@ func (self *CpuAgent) mine(work *Work, stop <-chan struct{}) {
|
||||
log.Debug(fmt.Sprintf("(re)started agent[%d]. mining...\n", self.index))
|
||||
|
||||
// Mine
|
||||
nonce, mixDigest := self.pow.Search(work.Block, stop, self.index)
|
||||
nonce, mixDigest := self.pow.Search(work.Block, stop)
|
||||
if nonce != 0 {
|
||||
block := work.Block.WithMiningResult(types.EncodeNonce(nonce), common.BytesToHash(mixDigest))
|
||||
self.returnCh <- &Result{work, block}
|
||||
@ -121,5 +121,5 @@ func (self *CpuAgent) mine(work *Work, stop <-chan struct{}) {
|
||||
}
|
||||
|
||||
func (self *CpuAgent) GetHashRate() int64 {
|
||||
return self.pow.GetHashrate()
|
||||
return int64(self.pow.Hashrate())
|
||||
}
|
||||
|
@ -159,7 +159,7 @@ func (self *Miner) Mining() bool {
|
||||
}
|
||||
|
||||
func (self *Miner) HashRate() (tot int64) {
|
||||
tot += self.pow.GetHashrate()
|
||||
tot += int64(self.pow.Hashrate())
|
||||
// do we care this might race? is it worth we're rewriting some
|
||||
// aspects of the worker/locking up agents so we can get an accurate
|
||||
// hashrate?
|
||||
|
@ -24,7 +24,6 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/ethash"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
@ -115,7 +114,7 @@ func (a *RemoteAgent) GetWork() ([3]string, error) {
|
||||
block := a.currentWork.Block
|
||||
|
||||
res[0] = block.HashNoNonce().Hex()
|
||||
seedHash, _ := ethash.GetSeedHash(block.NumberU64())
|
||||
seedHash := pow.EthashSeedHash(block.NumberU64())
|
||||
res[1] = common.BytesToHash(seedHash).Hex()
|
||||
// Calculate the "target" to be returned to the external miner
|
||||
n := big.NewInt(1)
|
||||
@ -145,8 +144,8 @@ func (a *RemoteAgent) SubmitWork(nonce types.BlockNonce, mixDigest, hash common.
|
||||
}
|
||||
// Make sure the PoW solutions is indeed valid
|
||||
block := work.Block.WithMiningResult(nonce, mixDigest)
|
||||
if !a.pow.Verify(block) {
|
||||
log.Warn(fmt.Sprintf("Invalid PoW submitted for %x", hash))
|
||||
if err := a.pow.Verify(block); err != nil {
|
||||
log.Warn(fmt.Sprintf("Invalid PoW submitted for %x: %v", hash, err))
|
||||
return false
|
||||
}
|
||||
// Solutions seems to be valid, return to the miner and notify acceptance
|
||||
|
Reference in New Issue
Block a user