我正在尝试使用最新的ganache-cli v6.0.3 (ganache-core: 2.0.2)和Remix (http!http://remix.ethereum.org上的版本)。因此,在没有标准端口8545上任何额外参数的情况下启动ganache-cli之后,我通过web3提供程序http://127.0.0.1:8545在Remix上连接,我的帐户就会显示出来,就像Ganache显示的那样。
这是我想要部署的合同:
pragma solidity ^0.4.20;
contract Test {
uint[4] public arr; // [0,0,0,0]
event TestLog(string logmessage);
function Test() public {
arr[0] = 1; // [1,0,0,0]
}
function checkArray() public {
if(arr[0] == 1) { // arr == [1,?,?,?]
arr[1] = 1;
arr[0] = 0; // switch values [0,1,0,0]
}
TestLog("some log");
}
}它适用于Remix:[vm] from:0xca3...a733c, to:Test.checkArray() 0x692...77b3a, value:0 wei, data:0x7b3...f7296, 1 logs, hash:0xa6f...87209中内置的Javascript VM。
如果我试图在通过checkArray提供程序连接到ganache的Remix中运行web3函数,就会得到一个transact to Test.checkArray errored: VM Exception while processing transaction: out of gas错误。
我在这里做错什么了?把gasLimit和ganache-cli -l 5000000放在一起没有帮助,甚至更高的值,以及一个非常小的gasPrice和很高的气体限制的后续测试。在Remix网站建立交易时,设置错误的气体限制是Remix的问题吗?我也在一个私人的节点上试过,结果也是一样的:没有气体.
任何帮助都很感激!
发布于 2018-03-04 19:04:54
这似乎是一个testrpc/ganache错误。造成故障的线路是将0位置的数组值分别设置为零arr[0] = 0;。
我使用Rinkeby与相同的合同,它的工作,最初的预期。您可以在这里测试它:https://rinkeby.etherscan.io/address/0x78aC7667BdeDC3b1CdF43611AdF7a88e05b600F5
由于这是一些非常基本的功能,我只能说:他妈的怎么回事?
发布于 2018-03-13 16:36:30
在我看来,设置arr[0]是不正确的,因为该元素不存在。它总是离开数组的末尾。使用arr.push(1)扩展数组的长度。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/41651
复制相似问题