From 1b35511b58dac0acdc5ca3f4f539a00d73a42430 Mon Sep 17 00:00:00 2001 From: oysheng <33340252+oysheng@users.noreply.github.com> Date: Wed, 17 Jul 2019 14:01:16 +0800 Subject: [PATCH] delete first tx vote amount restrict (#301) --- proposal/proposal.go | 15 +++++---------- protocol/state/consensus_result.go | 8 -------- protocol/tx.go | 11 ----------- protocol/validation/tx.go | 4 ++++ 4 files changed, 9 insertions(+), 29 deletions(-) diff --git a/proposal/proposal.go b/proposal/proposal.go index 35c021f0..a4c51e43 100644 --- a/proposal/proposal.go +++ b/proposal/proposal.go @@ -108,11 +108,6 @@ func NewBlockTemplate(c *protocol.Chain, txPool *protocol.TxPool, accountManager txs := txPool.GetTransactions() sort.Sort(byTime(txs)) - consensusResult, err := c.GetConsensusResultByHash(&preBlockHash) - if err != nil { - return nil, err - } - entriesTxs := []*bc.Tx{} for _, txDesc := range txs { entriesTxs = append(entriesTxs, txDesc.Tx.Tx) @@ -147,11 +142,6 @@ func NewBlockTemplate(c *protocol.Chain, txPool *protocol.TxPool, accountManager continue } - if err := consensusResult.ApplyTransaction(txDesc.Tx); err != nil { - blkGenSkipTxForErr(txPool, &tx.ID, err) - continue - } - if err := txStatus.SetStatus(len(b.Transactions), gasOnlyTx); err != nil { return nil, err } @@ -171,6 +161,11 @@ func NewBlockTemplate(c *protocol.Chain, txPool *protocol.TxPool, accountManager return nil, errors.Wrap(err, "fail on createCoinbaseTx") } + consensusResult, err := c.GetConsensusResultByHash(&preBlockHash) + if err != nil { + return nil, err + } + if err := consensusResult.AttachCoinbaseReward(b); err != nil { return nil, err } diff --git a/protocol/state/consensus_result.go b/protocol/state/consensus_result.go index ff4a2a3b..53bdbeb1 100644 --- a/protocol/state/consensus_result.go +++ b/protocol/state/consensus_result.go @@ -145,15 +145,7 @@ func (c *ConsensusResult) ApplyTransaction(tx *types.Tx) error { continue } - if voteOutput.Amount < consensus.ActiveNetParams.MinVoteOutputAmount { - return errors.New("invalid vote transaction with vote amount less than MinVoteOutputAmount") - } - pubkey := hex.EncodeToString(voteOutput.Vote) - if _, ok := c.NumOfVote[pubkey]; !ok && voteOutput.Amount < consensus.ActiveNetParams.MinConsensusNodeVoteNum { - return errors.New("invalid vote transaction with first vote amount less than MinConsensusNodeVoteNum") - } - if c.NumOfVote[pubkey], ok = checked.AddUint64(c.NumOfVote[pubkey], voteOutput.Amount); !ok { return checked.ErrOverflow } diff --git a/protocol/tx.go b/protocol/tx.go index f24f95a6..234b0107 100644 --- a/protocol/tx.go +++ b/protocol/tx.go @@ -3,7 +3,6 @@ package protocol import ( log "github.com/sirupsen/logrus" - "github.com/vapor/errors" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" "github.com/vapor/protocol/state" @@ -45,16 +44,6 @@ func (c *Chain) validateTx(tx *types.Tx) (bool, error) { } bh := c.BestBlockHeader() - blockHash := bh.Hash() - consensusResult, err := c.GetConsensusResultByHash(&blockHash) - if err != nil { - return false, err - } - - if err := consensusResult.ApplyTransaction(tx); err != nil { - return false, errors.Wrap(validation.ErrVoteOutputAmount, err) - } - gasStatus, err := validation.ValidateTx(tx.Tx, types.MapBlock(&types.Block{BlockHeader: *bh})) if !gasStatus.GasValid { c.txPool.AddErrCache(&tx.ID, err) diff --git a/protocol/validation/tx.go b/protocol/validation/tx.go index d360854e..bd493c52 100644 --- a/protocol/validation/tx.go +++ b/protocol/validation/tx.go @@ -245,6 +245,10 @@ func checkValid(vs *validationState, e bc.Entry) (err error) { return errors.Wrap(err, "checking vote output source") } + if e.Source.Value.Amount < consensus.ActiveNetParams.MinVoteOutputAmount { + return ErrVoteOutputAmount + } + case *bc.Retirement: vs2 := *vs vs2.sourcePos = 0 -- 2.11.0