forked from cerc-io/plugeth
eth: accept leading zeros for nonce parameter of submitWork (#3558)
This commit is contained in:
parent
e0ceeab0d1
commit
c5df37c111
@ -423,9 +423,9 @@ func CalcUncleHash(uncles []*Header) common.Hash {
|
|||||||
|
|
||||||
// WithMiningResult returns a new block with the data from b
|
// WithMiningResult returns a new block with the data from b
|
||||||
// where nonce and mix digest are set to the provided values.
|
// where nonce and mix digest are set to the provided values.
|
||||||
func (b *Block) WithMiningResult(nonce uint64, mixDigest common.Hash) *Block {
|
func (b *Block) WithMiningResult(nonce BlockNonce, mixDigest common.Hash) *Block {
|
||||||
cpy := *b.header
|
cpy := *b.header
|
||||||
binary.BigEndian.PutUint64(cpy.Nonce[:], nonce)
|
cpy.Nonce = nonce
|
||||||
cpy.MixDigest = mixDigest
|
cpy.MixDigest = mixDigest
|
||||||
return &Block{
|
return &Block{
|
||||||
header: &cpy,
|
header: &cpy,
|
||||||
|
@ -96,8 +96,8 @@ func (s *PublicMinerAPI) Mining() bool {
|
|||||||
|
|
||||||
// SubmitWork can be used by external miner to submit their POW solution. It returns an indication if the work was
|
// SubmitWork can be used by external miner to submit their POW solution. It returns an indication if the work was
|
||||||
// accepted. Note, this is not an indication if the provided work was valid!
|
// accepted. Note, this is not an indication if the provided work was valid!
|
||||||
func (s *PublicMinerAPI) SubmitWork(nonce hexutil.Uint64, solution, digest common.Hash) bool {
|
func (s *PublicMinerAPI) SubmitWork(nonce types.BlockNonce, solution, digest common.Hash) bool {
|
||||||
return s.agent.SubmitWork(uint64(nonce), digest, solution)
|
return s.agent.SubmitWork(nonce, digest, solution)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetWork returns a work package for external miner. The work package consists of 3 strings
|
// GetWork returns a work package for external miner. The work package consists of 3 strings
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/logger"
|
"github.com/ethereum/go-ethereum/logger"
|
||||||
"github.com/ethereum/go-ethereum/logger/glog"
|
"github.com/ethereum/go-ethereum/logger/glog"
|
||||||
"github.com/ethereum/go-ethereum/pow"
|
"github.com/ethereum/go-ethereum/pow"
|
||||||
@ -112,7 +113,7 @@ func (self *CpuAgent) mine(work *Work, stop <-chan struct{}) {
|
|||||||
// Mine
|
// Mine
|
||||||
nonce, mixDigest := self.pow.Search(work.Block, stop, self.index)
|
nonce, mixDigest := self.pow.Search(work.Block, stop, self.index)
|
||||||
if nonce != 0 {
|
if nonce != 0 {
|
||||||
block := work.Block.WithMiningResult(nonce, common.BytesToHash(mixDigest))
|
block := work.Block.WithMiningResult(types.EncodeNonce(nonce), common.BytesToHash(mixDigest))
|
||||||
self.returnCh <- &Result{work, block}
|
self.returnCh <- &Result{work, block}
|
||||||
} else {
|
} else {
|
||||||
self.returnCh <- nil
|
self.returnCh <- nil
|
||||||
|
@ -25,6 +25,7 @@ import (
|
|||||||
|
|
||||||
"github.com/ethereum/ethash"
|
"github.com/ethereum/ethash"
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/logger"
|
"github.com/ethereum/go-ethereum/logger"
|
||||||
"github.com/ethereum/go-ethereum/logger/glog"
|
"github.com/ethereum/go-ethereum/logger/glog"
|
||||||
"github.com/ethereum/go-ethereum/pow"
|
"github.com/ethereum/go-ethereum/pow"
|
||||||
@ -132,7 +133,7 @@ func (a *RemoteAgent) GetWork() ([3]string, error) {
|
|||||||
// SubmitWork tries to inject a PoW solution tinto the remote agent, returning
|
// SubmitWork tries to inject a PoW solution tinto the remote agent, returning
|
||||||
// whether the solution was acceted or not (not can be both a bad PoW as well as
|
// whether the solution was acceted or not (not can be both a bad PoW as well as
|
||||||
// any other error, like no work pending).
|
// any other error, like no work pending).
|
||||||
func (a *RemoteAgent) SubmitWork(nonce uint64, mixDigest, hash common.Hash) bool {
|
func (a *RemoteAgent) SubmitWork(nonce types.BlockNonce, mixDigest, hash common.Hash) bool {
|
||||||
a.mu.Lock()
|
a.mu.Lock()
|
||||||
defer a.mu.Unlock()
|
defer a.mu.Unlock()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user