github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/store/orgchain/validation/tx_handler_common.go (about) 1 package validation 2 3 import "github.com/sixexorg/magnetic-ring/core/orgchain/types" 4 5 func commonTxRoute(tx *types.Transaction) ([]*OpLog, bool) { 6 switch tx.TxType { 7 case types.TransferUT: 8 return AnalysisTansferUT(tx), true 9 case types.EnergyToMain: 10 return AnalysisEnergyToMain(tx), true 11 case types.MSG: 12 AnalysisMSG(tx) 13 } 14 return nil, false 15 } 16 17 //data: from+fee 18 func AnalysisMSG(tx *types.Transaction) []*OpLog { 19 op1 := oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Fee, Account_energy_consume) 20 op2 := oplogPraseAddresUint64(tx.TxData.From, tx.TxData.Nonce, Account_nonce_add) 21 //TODO 22 return []*OpLog{op1, op2} 23 } 24 25 //data:len from 26 func AnalysisTansferUT(tx *types.Transaction) []*OpLog { 27 oplogs := make([]*OpLog, 0, len(tx.TxData.Froms.Tis)+len(tx.TxData.Tos.Tos)+1) 28 oplogs = append(oplogs, oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Fee, Account_energy_consume)) 29 for _, v := range tx.TxData.Froms.Tis { 30 oplogs = append(oplogs, oplogPraseAddressBigInt(v.Address, v.Amount, Account_ut_sub)) 31 oplogs = append(oplogs, oplogPraseAddresUint64(v.Address, v.Nonce, Account_nonce_add)) 32 } 33 for _, v := range tx.TxData.Tos.Tos { 34 oplogs = append(oplogs, oplogPraseAddressBigInt(v.Address, v.Amount, Account_ut_add)) 35 } 36 return oplogs 37 } 38 39 func AnalysisEnergyToMain(tx *types.Transaction) []*OpLog { 40 oplogs := make([]*OpLog, 0, 3) 41 oplogs = append(oplogs, oplogPraseAddresUint64(tx.TxData.From, tx.TxData.Nonce, Account_nonce_add)) 42 oplogs = append(oplogs, oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Fee, Account_energy_consume)) 43 oplogs = append(oplogs, oplogPraseAddressBigInt(tx.TxData.From, tx.TxData.Energy, Account_energy_sub)) 44 return oplogs 45 }