Где проверить значение, возвращаемое функцией в кошельке?

где я могу проверить значение, возвращаемое функцией в кошельке Ethereum (я использую версию 0.8.3)?

Я установил тестовую сеть, и она работает нормально. Итак, после того, как я вызываю функцию моего развернутого контракта, я использую ее, и транзакция выполняется. Я вижу событие, возвращающее правильное значение.

бывший.:

 function getMyvalue()  returns (uint256 valueInWeis)  {

    print(value); // event is printed correctly

    return value;

}

Вот скриншотс моей транзакцией, связанной с функцией, вызываемой после выполнения

Где я могу увидеть возвращаемое значение (без проверки событий)?

Ответы (1)

Если ваша функция изменяет состояние контракта, она всегда возвращает хэш транзакции. Нет другой альтернативы для получения возвращаемого значения, кроме использования events. См. Как получить значения, возвращаемые непостоянными функциями транзакций?
Однако, если ваша функция не изменяет состояние контракта (как в вашем случае), вам, вероятно, следует использовать constantфункции.

function getMyvalue() constant returns (uint256 valueInWeis)  {

    print(value); // event is printed correctly

    return value;

}

В чем разница между функцией, помеченной как константа, и функцией, которая таковой не является?

константные функции могут выполнять какое-то действие и возвращать значение, но не могут изменять состояние (это еще не обеспечивается компилятором). Другими словами, константная функция не может сохранять или обновлять какие-либо переменные в рамках контракта или более широкой цепочки блоков. Эти функции вызываются с помощью c.someFunction(...) из geth или любой другой среды web3.js.

«неконстантные» функции (те, у которых отсутствует спецификатор константы) должны вызываться с помощью c.someMethod.sendTransaction({from:eth.accounts[x], gas: 1000000}); То есть, поскольку они могут изменить состояние, им необходимо отправить оплату за газ, чтобы выполнить работу.