Browse Source

Add option to bypass share validation

pool
Sammy Libre 8 years ago
parent
commit
7d214047cf
  1. 3
      config.example.json
  2. 1
      go-pool/pool/pool.go
  3. 15
      go-pool/stratum/miner.go

3
config.example.json

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

1
go-pool/pool/pool.go

@ -3,6 +3,7 @@ package pool @@ -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"`

15
go-pool/stratum/miner.go

@ -110,10 +110,16 @@ func (m *Miner) processShare(s *StratumServer, job *Job, t *BlockTemplate, nonce @@ -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 @@ -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)

Loading…
Cancel
Save