aboutsummaryrefslogtreecommitdiffstats
path: root/pow/pow.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-03-06 02:00:01 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-03-09 22:50:14 +0800
commit567d41d9363706b4b13ce0903804e8acf214af49 (patch)
tree8c091f0385589074573df3f7964c99417c5950ee /pow/pow.go
parent3b00a77de57ab2737a7887521c192ce004c721e3 (diff)
downloaddexon-567d41d9363706b4b13ce0903804e8acf214af49.tar
dexon-567d41d9363706b4b13ce0903804e8acf214af49.tar.gz
dexon-567d41d9363706b4b13ce0903804e8acf214af49.tar.bz2
dexon-567d41d9363706b4b13ce0903804e8acf214af49.tar.lz
dexon-567d41d9363706b4b13ce0903804e8acf214af49.tar.xz
dexon-567d41d9363706b4b13ce0903804e8acf214af49.tar.zst
dexon-567d41d9363706b4b13ce0903804e8acf214af49.zip
all: swap out the C++ ethash to the pure Go one (mining todo)
Diffstat (limited to 'pow/pow.go')
-rw-r--r--pow/pow.go42
1 files changed, 38 insertions, 4 deletions
diff --git a/pow/pow.go b/pow/pow.go
index 592d96475..4849adb3e 100644
--- a/pow/pow.go
+++ b/pow/pow.go
@@ -16,9 +16,43 @@
package pow
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+ "github.com/ethereum/go-ethereum/core/types"
+)
+
+type Block interface {
+ Difficulty() *big.Int
+ HashNoNonce() common.Hash
+ Nonce() uint64
+ MixDigest() common.Hash
+ NumberU64() uint64
+}
+
+type ChainManager interface {
+ GetBlockByNumber(uint64) *types.Block
+ CurrentBlock() *types.Block
+}
+
type PoW interface {
- Search(block Block, stop <-chan struct{}, index int) (uint64, []byte)
- Verify(block Block) bool
- GetHashrate() int64
- Turbo(bool)
+ Verify(block Block) error
+ Search(block Block, stop <-chan struct{}) (uint64, []byte)
+ Hashrate() float64
}
+
+// FakePow is a non-validating proof of work implementation.
+// It returns true from Verify for any block.
+type FakePow struct{}
+
+// Verify implements PoW, returning a success for an input.
+func (pow FakePow) Verify(block Block) error { return nil }
+
+// Search implements PoW, returning the nonce 0 for any call.
+func (pow FakePow) Search(block Block, stop <-chan struct{}) (uint64, []byte) {
+ return 0, nil
+}
+
+// Hashrate implements PoW, returning 0.
+func (pow FakePow) Hashrate() float64 { return 0 }