OSDN Git Service

delete first tx vote amount restrict (#301)
authoroysheng <33340252+oysheng@users.noreply.github.com>
Wed, 17 Jul 2019 06:01:16 +0000 (14:01 +0800)
committerPaladz <yzhu101@uottawa.ca>
Wed, 17 Jul 2019 06:01:16 +0000 (14:01 +0800)
proposal/proposal.go
protocol/state/consensus_result.go
protocol/tx.go
protocol/validation/tx.go

index 35c021f..a4c51e4 100644 (file)
@@ -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
        }
index ff4a2a3..53bdbeb 100644 (file)
@@ -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
                }
index f24f95a..234b010 100644 (file)
@@ -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)
index d360854..bd493c5 100644 (file)
@@ -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