为什么松露中的.call()没有返回预期的结果?

时间:2019-04-24 07:30:06

标签: ethereum solidity smartcontracts truffle geth

我正在将合同部署到我的私有链中,并尝试调用该合同的功能。

进入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

函数似乎无法正常工作,因此它会返回默认值

0 个答案:

没有答案