From 567d41d9363706b4b13ce0903804e8acf214af49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Sun, 5 Mar 2017 20:00:01 +0200 Subject: all: swap out the C++ ethash to the pure Go one (mining todo) --- light/lightchain.go | 3 +++ light/lightchain_test.go | 14 ++++---------- light/odr_test.go | 3 ++- light/txpool_test.go | 3 ++- 4 files changed, 11 insertions(+), 12 deletions(-) (limited to 'light') diff --git a/light/lightchain.go b/light/lightchain.go index 773c0f38b..a45022e81 100644 --- a/light/lightchain.go +++ b/light/lightchain.go @@ -169,6 +169,9 @@ func (self *LightChain) loadLastState() error { headerTd := self.GetTd(header.Hash(), header.Number.Uint64()) log.Info("Loaded most recent local header", "number", header.Number, "hash", header.Hash(), "td", headerTd) + // Try to be smart and issue a pow verification for the head to pre-generate caches + go self.pow.Verify(types.NewBlockWithHeader(header)) + return nil } diff --git a/light/lightchain_test.go b/light/lightchain_test.go index 0ba925887..8a99c69f1 100644 --- a/light/lightchain_test.go +++ b/light/lightchain_test.go @@ -22,7 +22,6 @@ import ( "runtime" "testing" - "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/types" @@ -67,7 +66,7 @@ func newCanonical(n int) (ethdb.Database, *LightChain, error) { // Initialize a fresh chain with only a genesis block genesis, _ := core.WriteTestNetGenesisBlock(db) - blockchain, _ := NewLightChain(&dummyOdr{db: db}, testChainConfig(), core.FakePow{}, evmux) + blockchain, _ := NewLightChain(&dummyOdr{db: db}, testChainConfig(), pow.FakePow{}, evmux) // Create and inject the requested chain if n == 0 { return db, blockchain, nil @@ -82,15 +81,10 @@ func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } -func thePow() pow.PoW { - pow, _ := ethash.NewForTesting() - return pow -} - func theLightChain(db ethdb.Database, t *testing.T) *LightChain { var eventMux event.TypeMux core.WriteTestNetGenesisBlock(db) - LightChain, err := NewLightChain(&dummyOdr{db: db}, testChainConfig(), thePow(), &eventMux) + LightChain, err := NewLightChain(&dummyOdr{db: db}, testChainConfig(), pow.NewTestEthash(), &eventMux) if err != nil { t.Error("failed creating LightChain:", err) t.FailNow() @@ -311,7 +305,7 @@ func (odr *dummyOdr) Retrieve(ctx context.Context, req OdrRequest) error { func chm(genesis *types.Block, db ethdb.Database) *LightChain { odr := &dummyOdr{db: db} var eventMux event.TypeMux - bc := &LightChain{odr: odr, chainDb: db, genesisBlock: genesis, eventMux: &eventMux, pow: core.FakePow{}} + bc := &LightChain{odr: odr, chainDb: db, genesisBlock: genesis, eventMux: &eventMux, pow: pow.FakePow{}} bc.hc, _ = core.NewHeaderChain(db, testChainConfig(), bc.Validator, bc.getProcInterrupt) bc.bodyCache, _ = lru.New(100) bc.bodyRLPCache, _ = lru.New(100) @@ -394,7 +388,7 @@ func TestReorgBadHeaderHashes(t *testing.T) { core.BadHashes[headers[3].Hash()] = true defer func() { delete(core.BadHashes, headers[3].Hash()) }() // Create a new chain manager and check it rolled back the state - ncm, err := NewLightChain(&dummyOdr{db: db}, testChainConfig(), core.FakePow{}, new(event.TypeMux)) + ncm, err := NewLightChain(&dummyOdr{db: db}, testChainConfig(), pow.FakePow{}, new(event.TypeMux)) if err != nil { t.Fatalf("failed to create new chain manager: %v", err) } diff --git a/light/odr_test.go b/light/odr_test.go index 6987db644..e2eced346 100644 --- a/light/odr_test.go +++ b/light/odr_test.go @@ -33,6 +33,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/pow" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" "golang.org/x/net/context" @@ -247,7 +248,7 @@ func testChainGen(i int, block *core.BlockGen) { func testChainOdr(t *testing.T, protocol int, expFail uint64, fn odrTestFn) { var ( evmux = new(event.TypeMux) - pow = new(core.FakePow) + pow = new(pow.FakePow) sdb, _ = ethdb.NewMemDatabase() ldb, _ = ethdb.NewMemDatabase() genesis = core.WriteGenesisBlockForTesting(sdb, core.GenesisAccount{Address: testBankAddress, Balance: testBankFunds}) diff --git a/light/txpool_test.go b/light/txpool_test.go index af2dcbbef..980c7c898 100644 --- a/light/txpool_test.go +++ b/light/txpool_test.go @@ -29,6 +29,7 @@ import ( "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/pow" "golang.org/x/net/context" ) @@ -82,7 +83,7 @@ func TestTxPool(t *testing.T) { var ( evmux = new(event.TypeMux) - pow = new(core.FakePow) + pow = new(pow.FakePow) sdb, _ = ethdb.NewMemDatabase() ldb, _ = ethdb.NewMemDatabase() genesis = core.WriteGenesisBlockForTesting(sdb, core.GenesisAccount{Address: testBankAddress, Balance: testBankFunds}) -- cgit v1.2.3