где я могу проверить значение, возвращаемое функцией в кошельке Ethereum (я использую версию 0.8.3)?
Я установил тестовую сеть, и она работает нормально. Итак, после того, как я вызываю функцию моего развернутого контракта, я использую ее, и транзакция выполняется. Я вижу событие, возвращающее правильное значение.
бывший.:
function getMyvalue() returns (uint256 valueInWeis) {
print(value); // event is printed correctly
return value;
}
Где я могу увидеть возвращаемое значение (без проверки событий)?
Если ваша функция изменяет состояние контракта, она всегда возвращает хэш транзакции. Нет другой альтернативы для получения возвращаемого значения, кроме использования 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}); То есть, поскольку они могут изменить состояние, им необходимо отправить оплату за газ, чтобы выполнить работу.