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  }