aboutsummaryrefslogtreecommitdiffstats
path: root/pow
diff options
context:
space:
mode:
authorPaweł Bylica <pawel.bylica@imapp.pl>2015-02-24 01:39:05 +0800
committerPaweł Bylica <pawel.bylica@imapp.pl>2015-02-24 01:39:05 +0800
commit114c3b4efe7f30ab7be0bec013210e7b4c3d08d7 (patch)
tree5230f6fee87dcbac36e1d71d6ab731b55eab8268 /pow
parentb9894c1d0979b9f3e8428b1dc230f1ece106f676 (diff)
parentdd086791acf477da7641c168f82de70ed0b2dca6 (diff)
downloadgo-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar.gz
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar.bz2
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar.lz
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar.xz
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.tar.zst
go-tangerine-114c3b4efe7f30ab7be0bec013210e7b4c3d08d7.zip
Merge remote-tracking branch 'upstream/develop' into evmjit
Diffstat (limited to 'pow')
-rw-r--r--pow/block.go1
-rw-r--r--pow/ezp/pow.go30
2 files changed, 20 insertions, 11 deletions
diff --git a/pow/block.go b/pow/block.go
index 62df2b5ff..31e194d8d 100644
--- a/pow/block.go
+++ b/pow/block.go
@@ -6,4 +6,5 @@ type Block interface {
Difficulty() *big.Int
HashNoNonce() []byte
N() []byte
+ Number() *big.Int
}
diff --git a/pow/ezp/pow.go b/pow/ezp/pow.go
index e4caa076a..540381243 100644
--- a/pow/ezp/pow.go
+++ b/pow/ezp/pow.go
@@ -36,26 +36,34 @@ func (pow *EasyPow) Search(block pow.Block, stop <-chan struct{}) []byte {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
hash := block.HashNoNonce()
diff := block.Difficulty()
- i := int64(0)
+ //i := int64(0)
+ // TODO fix offset
+ i := rand.Int63()
+ starti := i
start := time.Now().UnixNano()
- t := time.Now()
+
+ defer func() { pow.HashRate = 0 }()
+
+ // Make sure stop is empty
+empty:
+ for {
+ select {
+ case <-stop:
+ default:
+ break empty
+ }
+ }
for {
select {
case <-stop:
- powlogger.Infoln("Breaking from mining")
- pow.HashRate = 0
return nil
default:
i++
- if time.Since(t) > (1 * time.Second) {
- elapsed := time.Now().UnixNano() - start
- hashes := ((float64(1e9) / float64(elapsed)) * float64(i)) / 1000
- pow.HashRate = int64(hashes)
-
- t = time.Now()
- }
+ elapsed := time.Now().UnixNano() - start
+ hashes := ((float64(1e9) / float64(elapsed)) * float64(i-starti)) / 1000
+ pow.HashRate = int64(hashes)
sha := crypto.Sha3(big.NewInt(r.Int63()).Bytes())
if verify(hash, diff, sha) {