Go-Ethereum
由於gas不足,無法在乙太坊私有鏈上使用“乙太坊錢包”執行合約
我已經創建了乙太坊私有網路並開采了足夠的乙太幣。我已經部署了一個智能合約“Hello World”並嘗試執行已部署合約中的功能。
但是由於gas低,契約不會被執行。
我已經包含了契約程式碼供您參考。
pragma solidity ^0.4.2; contract HelloWorld { uint public balance; function HelloWorld(){ balance=1000; } function deposit(uint _value) returns (uint _newValue){ balance += _value; return balance; } }
我已經使用 browsersolidity 和 truffle 成功地執行了這個合約。但它不會使用乙太坊錢包執行。
在solidity 0.4.0 之後,您需要為任何將接收的函式指定“payable”。它可以防止將乙太幣發送到不期望它並且不知道如何處理它的函式。正如您可能已經猜到的那樣,發送到非付費函式會像您所看到的那樣拋出。
只要您不通過消息發送價值,我看不出您現有契約不會執行的明顯原因。可能值得探索。
作為替代方案,我添加了應付賬款,因此您可以毫無例外地實際轉賬(螢幕截圖中似乎發送了 4 個)。還稍微調整了參數和內部結構,因此“值”是收到的實際值。
pragma solidity ^0.4.2; contract HelloWorld { uint public balance; function HelloWorld(){ balance=1000; } function deposit() payable returns (uint _newValue){ balance += msg.value; return balance; } }
希望能幫助到你。