我正在将合同部署到我的私有链中,并尝试调用该合同的功能。
进入geth控制台并完成部署合同后,我调用了该函数,但无法正常工作。
pragma solidity ^0.5.6;
contract SimpleBank {
uint256 storedData;
function set(uint256 data) public{
storedData = data;
}
function get() public view returns (uint256){
return storedData;
}
}
//我试图在geth控制台中调用以下合同功能:
storage.set.sendTransaction(42,{from:eth.accounts [0],gas:10000000})
//这样的挖掘之后:
miner.start(1); admin.sleepBlocks(1); miner.stop();
//我调用了get()函数:
storage.get.call()
它应该返回storedData的值42 但它返回0
我尝试使用网络上的其他可用合同:
pragma solidity 0.5.1;
contract MyContract {
enum State { Waiting, Ready, Active }
State public state;
constructor() public {
state = State.Waiting;
}
function activate() public {
state = State.Active;
}
function isActive() public view returns(bool) {
return state == State.Active;
}
}
//我首先调用了activate():
storage.activate.call()
//我叫isActivete():
storage.isActivate.call()
它应该返回true,但是返回false
如果函数的返回类型为uint256,则始终返回0 并且当返回类型为布尔值时,它总是返回false
函数似乎无法正常工作,因此它会返回默认值