2017-08-10 7 views
0

以下はなぜ機能しないのですか? 計算とガス使用の関数の使用

The contract won't allow this transaction to be executed

uint transactionFee = (msg.value * 2)/100; 
uint transactionReward = (msg.value * 2)/100; 
uint receiverMoney = msg.value - limitTransactionCosts(transactionFee - transactionReward); 
これが働いている間:

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 OK、それはである – BananazZ

+0

機能である「 - 」問題のシンボルので、私は –

+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; 
関連する問題