Просмотр и изменение методов смарт-контрактов
Я читал документы и оценивал примеры, когда обнаружил в смарт-контрактах два типа функций: методы просмотра и изменения.
// Методы просмотра доступны только для чтения. Они не изменяют состояние, но обычно возвращают какое-то значение.
// Методы изменения могут изменять состояние. Но вы не получите возвращаемое значение при вызове.
с https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min
Насколько строги эти требования? Что произойдет, если эти предположения не соблюдаются (например, состояние изменяется внутри метода представления или никакие изменения не выполняются внутри метода изменения)?
2 ответа
Как сказал Berryguy, near view
завершится ошибкой, если функция попытается изменить состояние. Однако, как я предлагаю здесь https://github.com/nearprotocol/NEPs/pull/3, ограничение является искусственным и должно быть снято. Мы должны разрешить пользователям запускать любую функцию какnear view
и относитесь к нему как к пробному запуску, потому что он имеет несколько хороших применений:
- Пользователь может запустить функцию всухую, чтобы оценить, сколько газа она потребляет;
- Пользователь может выполнить пробный запуск, чтобы увидеть, как функция будет вести себя с текущим
состоянием контракта.
Если вы попытаетесь изменить состояние в функции просмотра, вызов представления завершится ошибкой. На самом деле разница проявляется только при вызове функции. Функции просмотра следует вызывать черезnear view
тогда как функции изменения должны вызываться через near call
.