From 7b8b4fcb0e8fd411bf523d06492e966e20e1b613 Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Wed, 27 Mar 2019 18:54:10 +0800 Subject: dex: do not propose skip block if not in notary set (#303) --- dex/recovery.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dex/recovery.go b/dex/recovery.go index 4c3da7d5a..adeb1f612 100644 --- a/dex/recovery.go +++ b/dex/recovery.go @@ -314,6 +314,7 @@ type Recovery struct { gov *DexconGovernance contract common.Address confirmation int + publicKey string privateKey *ecdsa.PrivateKey nodeAddress common.Address client *ethrpc.EthRPC @@ -326,6 +327,7 @@ func NewRecovery(config *params.RecoveryConfig, networkRPC string, gov: gov, contract: config.Contract, confirmation: config.Confirmation, + publicKey: hex.EncodeToString(crypto.FromECDSAPub(&privKey.PublicKey)), privateKey: privKey, nodeAddress: crypto.PubkeyToAddress(privKey.PublicKey), client: client, @@ -429,6 +431,14 @@ func (r *Recovery) genVoteForSkipBlockTx(height uint64) (*types.Transaction, err } func (r *Recovery) ProposeSkipBlock(height uint64) error { + notarySet, err := r.gov.NotarySet(r.gov.Round()) + if err != nil { + return err + } + if _, ok := notarySet[r.publicKey]; !ok { + return errors.New("not in notary set") + } + tx, err := r.genVoteForSkipBlockTx(height) if err == errAlreadyVoted { return nil -- cgit v1.2.3