mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-15 17:30:44 +00:00
added CHAIN, HEADER PARAMS
This commit is contained in:
parent
5e63e39cc3
commit
0cb82cf94f
2 changed files with 29 additions and 1 deletions
|
|
@ -289,6 +289,14 @@ func startNode(ctx *cli.Context, stack *node.Node) {
|
||||||
if err := stack.Service(ðereum); err != nil {
|
if err := stack.Service(ðereum); err != nil {
|
||||||
utils.Fatalf("Ethereum service not running: %v", err)
|
utils.Fatalf("Ethereum service not running: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mining only enabled for validator nodes
|
||||||
|
if ok, err := ethereum.ValidateMiner(); err != nil {
|
||||||
|
utils.Fatalf("Can't verify validator permission: %v", err)
|
||||||
|
} else if !ok {
|
||||||
|
utils.Fatalf("Only validator can mine blocks")
|
||||||
|
}
|
||||||
|
|
||||||
// Use a reduced number of threads if requested
|
// Use a reduced number of threads if requested
|
||||||
if threads := ctx.GlobalInt(utils.MinerThreadsFlag.Name); threads > 0 {
|
if threads := ctx.GlobalInt(utils.MinerThreadsFlag.Name); threads > 0 {
|
||||||
type threaded interface {
|
type threaded interface {
|
||||||
|
|
|
||||||
|
|
@ -334,6 +334,26 @@ func (self *Ethereum) SetEtherbase(etherbase common.Address) {
|
||||||
self.miner.SetEtherbase(etherbase)
|
self.miner.SetEtherbase(etherbase)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Ethereum) ValidateMiner() (bool, error) {
|
||||||
|
eb, err := s.Etherbase()
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if c, ok := s.engine.(*clique.Clique); !ok {
|
||||||
|
return false, fmt.Errorf("Only verify miners in Clique protocol")
|
||||||
|
} else {
|
||||||
|
//check if miner's wallet is in set of validators
|
||||||
|
snap, err := c.GetSnapshot(s.blockchain, s.blockchain.CurrentHeader())
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Errorf("Can't verify miner: %v", err)
|
||||||
|
}
|
||||||
|
if _, authorized := snap.Signers[eb]; !authorized {
|
||||||
|
return false, fmt.Errorf("This miner doesn't belong to set of validators")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Ethereum) StartMining(local bool) error {
|
func (s *Ethereum) StartMining(local bool) error {
|
||||||
eb, err := s.Etherbase()
|
eb, err := s.Etherbase()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -428,4 +448,4 @@ func (s *Ethereum) Stop() error {
|
||||||
close(s.shutdownChan)
|
close(s.shutdownChan)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue