aboutsummaryrefslogtreecommitdiffstats
path: root/pow
diff options
context:
space:
mode:
authorAlexandre Van de Sande <alex.vandesande@ethdev.com>2015-02-16 21:43:30 +0800
committerAlexandre Van de Sande <alex.vandesande@ethdev.com>2015-02-16 21:43:30 +0800
commit3068e2688d88912ec33f3d80fd0fe26c4e897dcd (patch)
treeee32ccd17faf650f3e933e9a2d8b4ab52f0d7746 /pow
parent1878630b591b039fadb6f88e15340d04f4af3ed1 (diff)
parent68f6ddc5aaa7ff29d09c1519ccd38d9cf16c0f75 (diff)
downloadgo-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar.gz
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar.bz2
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar.lz
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar.xz
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.tar.zst
go-tangerine-3068e2688d88912ec33f3d80fd0fe26c4e897dcd.zip
merge conflicts
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) {