Я развертываю контракт в своей частной цепочке и пытаюсь вызвать функцию контракта.
После того, как я вошел в консоль 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
Похоже, что функция делаетна самом деле не работает, поэтому возвращает значение по умолчанию