eth: add ResetWithGenesisBlock
This depends on a change in ethash which exposes UpdateCache.
This commit is contained in:
parent
6f8a2d6b84
commit
e463479b6c
@ -11,6 +11,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/accounts"
|
"github.com/ethereum/go-ethereum/accounts"
|
||||||
"github.com/ethereum/go-ethereum/blockpool"
|
"github.com/ethereum/go-ethereum/blockpool"
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
"github.com/ethereum/go-ethereum/ethutil"
|
"github.com/ethereum/go-ethereum/ethutil"
|
||||||
@ -123,6 +124,7 @@ type Ethereum struct {
|
|||||||
blockPool *blockpool.BlockPool
|
blockPool *blockpool.BlockPool
|
||||||
accountManager *accounts.Manager
|
accountManager *accounts.Manager
|
||||||
whisper *whisper.Whisper
|
whisper *whisper.Whisper
|
||||||
|
pow *ethash.Ethash
|
||||||
|
|
||||||
net *p2p.Server
|
net *p2p.Server
|
||||||
eventMux *event.TypeMux
|
eventMux *event.TypeMux
|
||||||
@ -175,16 +177,16 @@ func New(config *Config) (*Ethereum, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux())
|
eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux())
|
||||||
pow := ethash.New(eth.chainManager)
|
eth.pow = ethash.New(eth.chainManager)
|
||||||
eth.txPool = core.NewTxPool(eth.EventMux())
|
eth.txPool = core.NewTxPool(eth.EventMux())
|
||||||
eth.blockProcessor = core.NewBlockProcessor(stateDb, pow, eth.txPool, eth.chainManager, eth.EventMux())
|
eth.blockProcessor = core.NewBlockProcessor(stateDb, eth.pow, eth.txPool, eth.chainManager, eth.EventMux())
|
||||||
eth.chainManager.SetProcessor(eth.blockProcessor)
|
eth.chainManager.SetProcessor(eth.blockProcessor)
|
||||||
eth.whisper = whisper.New()
|
eth.whisper = whisper.New()
|
||||||
eth.miner = miner.New(eth, pow, config.MinerThreads)
|
eth.miner = miner.New(eth, eth.pow, config.MinerThreads)
|
||||||
|
|
||||||
hasBlock := eth.chainManager.HasBlock
|
hasBlock := eth.chainManager.HasBlock
|
||||||
insertChain := eth.chainManager.InsertChain
|
insertChain := eth.chainManager.InsertChain
|
||||||
eth.blockPool = blockpool.New(hasBlock, insertChain, pow.Verify)
|
eth.blockPool = blockpool.New(hasBlock, insertChain, eth.pow.Verify)
|
||||||
|
|
||||||
netprv, err := config.nodeKey()
|
netprv, err := config.nodeKey()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -214,6 +216,11 @@ func New(config *Config) (*Ethereum, error) {
|
|||||||
return eth, nil
|
return eth, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Ethereum) ResetWithGenesisBlock(gb *types.Block) {
|
||||||
|
s.chainManager.ResetWithGenesisBlock(gb)
|
||||||
|
s.pow.UpdateCache(true)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Ethereum) StartMining() error {
|
func (s *Ethereum) StartMining() error {
|
||||||
cb, err := s.accountManager.Coinbase()
|
cb, err := s.accountManager.Coinbase()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user