diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-04 04:04:31 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-04 04:04:31 +0800 |
commit | 26de12d9bf23bce7de26b3b6629601ec2e58ad5b (patch) | |
tree | 0d4b76fcb717049d988b7f283967f43dc5517a5e /pow | |
parent | e9f1e868e2bc0205d0b7655cd07fcaba9b2bc97d (diff) | |
download | go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar.gz go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar.bz2 go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar.lz go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar.xz go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.tar.zst go-tangerine-26de12d9bf23bce7de26b3b6629601ec2e58ad5b.zip |
Changed nonce to a uint64
Diffstat (limited to 'pow')
-rw-r--r-- | pow/block.go | 5 | ||||
-rw-r--r-- | pow/ezp/pow.go | 16 | ||||
-rw-r--r-- | pow/pow.go | 2 |
3 files changed, 14 insertions, 9 deletions
diff --git a/pow/block.go b/pow/block.go index eb07bc86e..3bc63978b 100644 --- a/pow/block.go +++ b/pow/block.go @@ -1,14 +1,15 @@ package pow import ( - "github.com/ethereum/go-ethereum/core/types" "math/big" + + "github.com/ethereum/go-ethereum/core/types" ) type Block interface { Difficulty() *big.Int HashNoNonce() []byte - Nonce() []byte + Nonce() uint64 MixDigest() []byte SeedHash() []byte NumberU64() uint64 diff --git a/pow/ezp/pow.go b/pow/ezp/pow.go index 49854c3d0..3ca502d06 100644 --- a/pow/ezp/pow.go +++ b/pow/ezp/pow.go @@ -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) diff --git a/pow/pow.go b/pow/pow.go index 11aecbd6b..3908e5f76 100644 --- a/pow/pow.go +++ b/pow/pow.go @@ -1,7 +1,7 @@ package pow type PoW interface { - Search(block Block, stop <-chan struct{}) ([]byte, []byte, []byte) + Search(block Block, stop <-chan struct{}) (uint64, []byte, []byte) Verify(block Block) bool GetHashrate() int64 Turbo(bool) |