diff --git a/core/chain_manager.go b/core/chain_manager.go
index e872533043a9f5e770ea30b72e12223425f854d6..a0ce20006c163fe28c8626e6315efe15e880895d 100644
--- a/core/chain_manager.go
+++ b/core/chain_manager.go
@@ -111,12 +111,13 @@ type ChainManager struct {
 
 func NewChainManager(genesis *types.Block, blockDb, stateDb common.Database, pow pow.PoW, mux *event.TypeMux) (*ChainManager, error) {
 	bc := &ChainManager{
-		blockDb:  blockDb,
-		stateDb:  stateDb,
-		eventMux: mux,
-		quit:     make(chan struct{}),
-		cache:    NewBlockCache(blockCacheLimit),
-		pow:      pow,
+		blockDb:      blockDb,
+		stateDb:      stateDb,
+		genesisBlock: GenesisBlock(42, stateDb),
+		eventMux:     mux,
+		quit:         make(chan struct{}),
+		cache:        NewBlockCache(blockCacheLimit),
+		pow:          pow,
 	}
 
 	// Check the genesis block given to the chain manager. If the genesis block mismatches block number 0
diff --git a/eth/backend.go b/eth/backend.go
index 06627416d46695acbdd76ff7394aea0878b468e6..fcbea04a25976cec96ce34b774507f30307f62c1 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -285,7 +285,7 @@ func New(config *Config) (*Ethereum, error) {
 	}
 
 	eth.pow = ethash.New()
-	genesis := core.GenesisBlock(uint64(config.GenesisNonce), blockDb)
+	genesis := core.GenesisBlock(uint64(config.GenesisNonce), stateDb)
 	eth.chainManager, err = core.NewChainManager(genesis, blockDb, stateDb, eth.pow, eth.EventMux())
 	if err != nil {
 		return nil, err