github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/store/orgchain/validation/tx_handler_vote.go (about)

     1  package validation
     2  
     3  import "github.com/sixexorg/magnetic-ring/core/orgchain/types"
     4  
     5  func voteTxRoute(tx *types.Transaction) ([]*OpLog, bool) {
     6  	switch tx.TxType {
     7  	case types.VoteIncreaseUT:
     8  		return AnalysisVoteIncreaseUT(tx), true
     9  	case types.VoteApply:
    10  		return AnalysisVoteApply(tx), true
    11  	case types.ReplyVote:
    12  		return AnalysisReplyVote(tx), true
    13  	}
    14  
    15  	return nil, false
    16  }
    17  
    18  func AnalysisVoteIncreaseUT(tx *types.Transaction) []*OpLog {
    19  	oplogs := make([]*OpLog, 0, 2)
    20  	oplogs = append(oplogs, oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Fee, Account_energy_consume))
    21  	oplogs = append(oplogs, oplogPraseAddresUint64(tx.TxData.From, tx.TxData.Nonce, Account_nonce_add))
    22  	return oplogs
    23  }
    24  
    25  func AnalysisReplyVote(tx *types.Transaction) []*OpLog {
    26  	oplogs := make([]*OpLog, 0, 3)
    27  	oplogs = append(oplogs, oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Fee, Account_energy_consume))
    28  	oplogs = append(oplogs, oplogPraseAddresUint64(tx.TxData.From, tx.TxData.Nonce, Account_nonce_add))
    29  	m := Vote_against
    30  	if tx.TxData.VoteReply == 1 {
    31  		m = Vote_agree
    32  	} else if tx.TxData.VoteReply == 2 {
    33  		m = Vote_abstention
    34  	}
    35  	oplogs = append(oplogs, oplogPraseHashAddress(tx.TxData.TxHash, tx.TxData.From, m))
    36  	return oplogs
    37  }
    38  func AnalysisVoteApply(tx *types.Transaction) []*OpLog {
    39  	oplogs := make([]*OpLog, 0)
    40  	return oplogs
    41  }
    42  
    43  func voteTypeContains(typ types.TransactionType) bool {
    44  	if typ == types.VoteApply || typ == types.VoteIncreaseUT {
    45  		return true
    46  	}
    47  	return false
    48  }