Changed nonce to a uint64

This commit is contained in:
obscuren
2015-03-03 21:04:31 +01:00
parent e9f1e868e2
commit 26de12d9bf
10 changed files with 30 additions and 25 deletions

View File

@ -1,11 +1,11 @@
package ezp
import (
"encoding/binary"
"math/big"
"math/rand"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/crypto/sha3"
"github.com/ethereum/go-ethereum/ethutil"
"github.com/ethereum/go-ethereum/logger"
@ -32,7 +32,7 @@ func (pow *EasyPow) Turbo(on bool) {
pow.turbo = on
}
func (pow *EasyPow) Search(block pow.Block, stop <-chan struct{}) ([]byte, []byte, []byte) {
func (pow *EasyPow) Search(block pow.Block, stop <-chan struct{}) (uint64, []byte, []byte) {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
hash := block.HashNoNonce()
diff := block.Difficulty()
@ -57,7 +57,7 @@ empty:
for {
select {
case <-stop:
return nil, nil, nil
return 0, nil, nil
default:
i++
@ -65,7 +65,7 @@ empty:
hashes := ((float64(1e9) / float64(elapsed)) * float64(i-starti)) / 1000
pow.HashRate = int64(hashes)
sha := crypto.Sha3(big.NewInt(r.Int63()).Bytes())
sha := uint64(r.Int63())
if verify(hash, diff, sha) {
return sha, nil, nil
}
@ -75,16 +75,20 @@ empty:
time.Sleep(20 * time.Microsecond)
}
}
return 0, nil, nil
}
func (pow *EasyPow) Verify(block pow.Block) bool {
return Verify(block)
}
func verify(hash []byte, diff *big.Int, nonce []byte) bool {
func verify(hash []byte, diff *big.Int, nonce uint64) bool {
sha := sha3.NewKeccak256()
d := append(hash, nonce...)
n := make([]byte, 8)
binary.PutUvarint(n, nonce)
d := append(hash, n...)
sha.Write(d)
verification := new(big.Int).Div(ethutil.BigPow(2, 256), diff)