Add option to bypass share validation

This commit is contained in:
Sammy Libre 2016-12-05 21:28:58 +05:00
parent 75d032844b
commit 7d214047cf
3 changed files with 15 additions and 4 deletions

View File

@ -1,6 +1,7 @@
{
"address": "46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em",
"bypassAddressValidation": false,
"bypassAddressValidation": true,
"bypassShareValidation": true,
"threads": 2,

View File

@ -3,6 +3,7 @@ package pool
type Config struct {
Address string `json:"address"`
BypassAddressValidation bool `json:"bypassAddressValidation"`
BypassShareValidation bool `json:"bypassShareValidation"`
Stratum Stratum `json:"stratum"`
Daemon Daemon `json:"daemon"`

View File

@ -110,10 +110,16 @@ func (m *Miner) processShare(s *StratumServer, job *Job, t *BlockTemplate, nonce
nonceBuff, _ := hex.DecodeString(nonce)
copy(shareBuff[39:], nonceBuff)
convertedBlob := cnutil.ConvertBlob(shareBuff)
hashBytes := hashing.Hash(convertedBlob, false)
var hashBytes, convertedBlob []byte
if hex.EncodeToString(hashBytes) != result {
if s.config.BypassShareValidation {
hashBytes, _ = hex.DecodeString(result)
} else {
convertedBlob = cnutil.ConvertBlob(shareBuff)
hashBytes = hashing.Hash(convertedBlob, false)
}
if !s.config.BypassShareValidation && hex.EncodeToString(hashBytes) != result {
log.Printf("Bad hash from miner %v@%v", m.Login, m.IP)
return false
}
@ -125,6 +131,9 @@ func (m *Miner) processShare(s *StratumServer, job *Job, t *BlockTemplate, nonce
if err != nil {
log.Printf("Block submission failure at height %v: %v", t.Height, err)
} else {
if len(convertedBlob) == 0 {
convertedBlob = cnutil.ConvertBlob(shareBuff)
}
blockFastHash := hex.EncodeToString(hashing.FastHash(convertedBlob))
// Immediately refresh current BT and send new jobs
s.refreshBlockTemplate(true)