diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-03-06 02:00:01 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-03-09 22:50:14 +0800 |
commit | 567d41d9363706b4b13ce0903804e8acf214af49 (patch) | |
tree | 8c091f0385589074573df3f7964c99417c5950ee /pow/pow.go | |
parent | 3b00a77de57ab2737a7887521c192ce004c721e3 (diff) | |
download | dexon-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.go | 42 |
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 } |