Solidity
函式的氣體需求:未知或不恒定
這是我契約中的一項功能。值得注意的是,它顯示了一個警告,即氣體需求量很大
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
是錯別字。但實際問題在下面得到了準確的回答。
兩件事情。
首先,
payable
和constant
一起使用是矛盾的。其次,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); } }
希望能幫助到你。