почему .call () в Truffle не дал ожидаемых результатов? - PullRequest
0 голосов
/ 24 апреля 2019

Я развертываю контракт в своей частной цепочке и пытаюсь вызвать функцию контракта.

После того, как я вошел в консоль 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 ()

Должен вернуть значение хранимых данных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;
}
}

// Сначала я вызвал activ ():

storage.activate.call ()

// И я вызвал isActivete ():

storage.isActivate.call ()

Он должен возвращать true, но он возвращает false

, если тип возвращаемого значения функции - uint256, он всегда возвращает 0. И когда тип возвращаемого значения является логическим, он всегда возвращает false

Похоже, что функция делаетна самом деле не работает, поэтому возвращает значение по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...