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 }