mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
eth: get rid of etherbase mentions
This commit is contained in:
parent
a81a19296f
commit
81276b36ba
1 changed files with 7 additions and 71 deletions
|
|
@ -28,7 +28,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/hexutil"
|
"github.com/ethereum/go-ethereum/common/hexutil"
|
||||||
"github.com/ethereum/go-ethereum/consensus"
|
"github.com/ethereum/go-ethereum/consensus"
|
||||||
"github.com/ethereum/go-ethereum/consensus/clique"
|
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
"github.com/ethereum/go-ethereum/core/bloombits"
|
"github.com/ethereum/go-ethereum/core/bloombits"
|
||||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||||
|
|
@ -90,7 +89,6 @@ type Ethereum struct {
|
||||||
|
|
||||||
miner *miner.Miner
|
miner *miner.Miner
|
||||||
gasPrice *big.Int
|
gasPrice *big.Int
|
||||||
etherbase common.Address
|
|
||||||
|
|
||||||
networkID uint64
|
networkID uint64
|
||||||
netRPCService *ethapi.NetAPI
|
netRPCService *ethapi.NetAPI
|
||||||
|
|
@ -165,7 +163,6 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
|
||||||
closeBloomHandler: make(chan struct{}),
|
closeBloomHandler: make(chan struct{}),
|
||||||
networkID: networkID,
|
networkID: networkID,
|
||||||
gasPrice: config.Miner.GasPrice,
|
gasPrice: config.Miner.GasPrice,
|
||||||
etherbase: config.Miner.PendingFeeRecipient,
|
|
||||||
bloomRequests: make(chan chan *bloombits.Retrieval),
|
bloomRequests: make(chan chan *bloombits.Retrieval),
|
||||||
bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocks, params.BloomConfirms),
|
bloomIndexer: core.NewBloomIndexer(chainDb, params.BloomBitsBlocks, params.BloomConfirms),
|
||||||
p2pServer: stack.Server(),
|
p2pServer: stack.Server(),
|
||||||
|
|
@ -212,7 +209,11 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {
|
||||||
if config.OverrideVerkle != nil {
|
if config.OverrideVerkle != nil {
|
||||||
overrides.OverrideVerkle = config.OverrideVerkle
|
overrides.OverrideVerkle = config.OverrideVerkle
|
||||||
}
|
}
|
||||||
eth.blockchain, err = core.NewBlockChain(chainDb, cacheConfig, config.Genesis, &overrides, eth.engine, vmConfig, eth.shouldPreserve, &config.TransactionHistory)
|
// TODO (MariusVanDerWijden) get rid of shouldPreserve in a follow-up PR
|
||||||
|
shouldPreserve := func(header *types.Header) bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
eth.blockchain, err = core.NewBlockChain(chainDb, cacheConfig, config.Genesis, &overrides, eth.engine, vmConfig, shouldPreserve, &config.TransactionHistory)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -337,71 +338,6 @@ func (s *Ethereum) ResetWithGenesisBlock(gb *types.Block) {
|
||||||
s.blockchain.ResetWithGenesisBlock(gb)
|
s.blockchain.ResetWithGenesisBlock(gb)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Ethereum) Etherbase() (eb common.Address, err error) {
|
|
||||||
s.lock.RLock()
|
|
||||||
etherbase := s.etherbase
|
|
||||||
s.lock.RUnlock()
|
|
||||||
|
|
||||||
if etherbase != (common.Address{}) {
|
|
||||||
return etherbase, nil
|
|
||||||
}
|
|
||||||
return common.Address{}, errors.New("etherbase must be explicitly specified")
|
|
||||||
}
|
|
||||||
|
|
||||||
// isLocalBlock checks whether the specified block is mined
|
|
||||||
// by local miner accounts.
|
|
||||||
//
|
|
||||||
// We regard two types of accounts as local miner account: etherbase
|
|
||||||
// and accounts specified via `txpool.locals` flag.
|
|
||||||
func (s *Ethereum) isLocalBlock(header *types.Header) bool {
|
|
||||||
author, err := s.engine.Author(header)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Failed to retrieve block author", "number", header.Number.Uint64(), "hash", header.Hash(), "err", err)
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
// Check whether the given address is etherbase.
|
|
||||||
s.lock.RLock()
|
|
||||||
etherbase := s.etherbase
|
|
||||||
s.lock.RUnlock()
|
|
||||||
if author == etherbase {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
// Check whether the given address is specified by `txpool.local`
|
|
||||||
// CLI flag.
|
|
||||||
for _, account := range s.config.TxPool.Locals {
|
|
||||||
if account == author {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// shouldPreserve checks whether we should preserve the given block
|
|
||||||
// during the chain reorg depending on whether the author of block
|
|
||||||
// is a local account.
|
|
||||||
func (s *Ethereum) shouldPreserve(header *types.Header) bool {
|
|
||||||
// The reason we need to disable the self-reorg preserving for clique
|
|
||||||
// is it can be probable to introduce a deadlock.
|
|
||||||
//
|
|
||||||
// e.g. If there are 7 available signers
|
|
||||||
//
|
|
||||||
// r1 A
|
|
||||||
// r2 B
|
|
||||||
// r3 C
|
|
||||||
// r4 D
|
|
||||||
// r5 A [X] F G
|
|
||||||
// r6 [X]
|
|
||||||
//
|
|
||||||
// In the round5, the in-turn signer E is offline, so the worst case
|
|
||||||
// is A, F and G sign the block of round5 and reject the block of opponents
|
|
||||||
// and in the round6, the last available signer B is offline, the whole
|
|
||||||
// network is stuck.
|
|
||||||
if _, ok := s.engine.(*clique.Clique); ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return s.isLocalBlock(header)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Ethereum) Miner() *miner.Miner { return s.miner }
|
func (s *Ethereum) Miner() *miner.Miner { return s.miner }
|
||||||
|
|
||||||
func (s *Ethereum) AccountManager() *accounts.Manager { return s.accountManager }
|
func (s *Ethereum) AccountManager() *accounts.Manager { return s.accountManager }
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue