Solidity

函式的氣體需求:未知或不恒定

  • November 24, 2017

這是我契約中的一項功能。值得注意的是,它顯示了一個警告,即氣體需求量很大remix。我推測這可​​能是我在嘗試使用truffle.

首先,我需要了解這個問題。

function sendEther(string data) payable {
 address sender = msg.sender;
 uint value = msg.value;
 voter[sender].data = data;
 voter[sender].amount = value;
 voterIndex[voter_count] = sender;
 voter_count = voter_count + 1;
 Deposit(sender, value);
}

注意:我發現了一個類似的問題,使用者試圖發送可能是普通地址或契約的交易,因此出現了問題。不知道為什麼會發生在我身上。

**編輯:**關鍵字constant是錯別字。但實際問題在下面得到了準確的回答。

兩件事情。

首先,payableconstant一起使用是矛盾的。其次,string由於string.

我充實了它,直到它可以編譯,複製了氣體警告錯誤並通過更改 good’ol 消除了警告bytes32。固定大小介面的另一個優點是它可以從其他合約中呼叫。

更新:

您可以使用新的 Solidity 編譯器在合約之間傳遞字元串。

pragma solidity ^0.4.15;

contract X {

   struct Voter {
       bytes32 data;
       uint amount;
   }
   mapping(address => Voter) voter;
   address[] voterIndex;
   uint voter_count;

   event Deposit(address a, uint b);

   function sendEther(bytes32 data) public payable  {
     address sender = msg.sender;
     uint value = msg.value;
     voter[sender].data = data;
     voter[sender].amount = value;
     voterIndex[voter_count] = sender;
     voter_count = voter_count + 1;
     Deposit(sender, value);
   }

}

希望能幫助到你。

引用自:https://ethereum.stackexchange.com/questions/28217