aboutsummaryrefslogtreecommitdiffstats
path: root/pow/ezp/pow.go
diff options
context:
space:
mode:
Diffstat (limited to 'pow/ezp/pow.go')
-rw-r--r--pow/ezp/pow.go16
1 files changed, 10 insertions, 6 deletions
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)