From be6082e77f448a816331b0630c76fe79d88d4b30 Mon Sep 17 00:00:00 2001 From: Tuna Date: Wed, 13 Feb 2019 10:35:25 +0700 Subject: [PATCH] separate validateMN func --- cmd/tomo/main.go | 29 +++++++++++++++++++++++------ eth/backend.go | 37 +++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/cmd/tomo/main.go b/cmd/tomo/main.go index 92aa03bee0..06fb46d33f 100644 --- a/cmd/tomo/main.go +++ b/cmd/tomo/main.go @@ -27,6 +27,7 @@ import ( "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus/posv" "github.com/ethereum/go-ethereum/console" "github.com/ethereum/go-ethereum/core" @@ -292,9 +293,18 @@ func startNode(ctx *cli.Context, stack *node.Node, cfg tomoConfig) { if _, ok := ethereum.Engine().(*posv.Posv); ok { go func() { started := false - ok, err := ethereum.ValidateMasternode() - if err != nil { - utils.Fatalf("Can't verify masternode permission: %v", err) + ok := false + var err error + if common.IsTestnet { + ok, err = ethereum.ValidateMasternodeTestnet() + if err != nil { + utils.Fatalf("Can't verify masternode permission: %v", err) + } + } else { + ok, err = ethereum.ValidateMasternode() + if err != nil { + utils.Fatalf("Can't verify masternode permission: %v", err) + } } if ok { log.Info("Masternode found. Enabling staking mode...") @@ -318,9 +328,16 @@ func startNode(ctx *cli.Context, stack *node.Node, cfg tomoConfig) { defer close(core.CheckpointCh) for range core.CheckpointCh { log.Info("Checkpoint!!! It's time to reconcile node's state...") - ok, err := ethereum.ValidateMasternode() - if err != nil { - utils.Fatalf("Can't verify masternode permission: %v", err) + if common.IsTestnet { + ok, err = ethereum.ValidateMasternodeTestnet() + if err != nil { + utils.Fatalf("Can't verify masternode permission: %v", err) + } + } else { + ok, err = ethereum.ValidateMasternode() + if err != nil { + utils.Fatalf("Can't verify masternode permission: %v", err) + } } if !ok { if started { diff --git a/eth/backend.go b/eth/backend.go index cb6bcfeae4..1e86f96829 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -212,7 +212,7 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { if err != nil { return fmt.Errorf("Can't verify masternode permission: %v", err) } - if !ok && !common.IsTestnet { + if !ok { // silently return as this node doesn't have masternode permission to sign block return nil } @@ -580,22 +580,31 @@ func (s *Ethereum) ValidateMasternode() (bool, error) { } else { return false, fmt.Errorf("Only verify masternode permission in PoSV protocol") } - if common.IsTestnet { - masternodes := []common.Address{ - common.HexToAddress("0xfFC679Dcdf444D2eEb0491A998E7902B411CcF20"), - common.HexToAddress("0xd76fd76F7101811726DCE9E43C2617706a4c45c8"), - common.HexToAddress("0x8A97753311aeAFACfd76a68Cf2e2a9808d3e65E8"), - } - for _, m := range masternodes { - if m == eb { - return true, nil - } - } - return false, nil - } return true, nil } +// ValidateMasternodeTestNet checks if node's address is in set of masternodes in Testnet +func (s *Ethereum) ValidateMasternodeTestnet() (bool, error) { + eb, err := s.Etherbase() + if err != nil { + return false, err + } + if s.chainConfig.Posv == nil { + return false, fmt.Errorf("Only verify masternode permission in PoSV protocol") + } + masternodes := []common.Address{ + common.HexToAddress("0xfFC679Dcdf444D2eEb0491A998E7902B411CcF20"), + common.HexToAddress("0xd76fd76F7101811726DCE9E43C2617706a4c45c8"), + common.HexToAddress("0x8A97753311aeAFACfd76a68Cf2e2a9808d3e65E8"), + } + for _, m := range masternodes { + if m == eb { + return true, nil + } + } + return false, nil +} + func (s *Ethereum) StartStaking(local bool) error { eb, err := s.Etherbase() if err != nil {