2017-08-10 22 views
0

爲什麼下面不起作用?在計算和使用燃氣時使用函數

uint transactionFee = (msg.value * 2)/100; 
uint transactionReward = (msg.value * 2)/100; 
uint receiverMoney = msg.value - limitTransactionCosts(transactionFee - transactionReward); 

The contract won't allow this transaction to be executed

雖然這是工作:

uint transactionFee = (msg.value * 2)/100; 
uint transactionReward = (msg.value * 2)/100; 
transactionFee = limitTransactionCosts(transactionFee); 
transactionReward = limitTransactionCosts(transactionReward); 

uint receiverMoney = msg.value - transactionFee - transactionReward; 

50.002 Gas

回答

0

您的代碼應該按預期工作,因爲有沒有搞錯。 確保您的limitTransactionCosts具有有效的返回類型(int/float)。 請添加功能代碼進一步分析。

+0

limitTransactionCosts是一個功能 – BananazZ

+0

OK,這是與「 - 」在問題的符號,所以我認爲 –

+0

請你爲函數中添加代碼也 –

0

發現我的錯誤。無論limitTransactionCosts如何,我都會發送交易費用和獎勵。

我的代碼知道是這樣的:

// Calculate costs 
    uint transactionCosts = (msg.value * 4)/1000; 
    transactionCosts = limitTransactionCosts(transactionCosts); 

    uint transactionFee = transactionCosts/2; 
    uint transactionReward = transactionCosts/2; 

    uint receiverMoney = msg.value - transactionCosts;