Просмотр и изменение методов смарт-контрактов

Я читал документы и оценивал примеры, когда обнаружил в смарт-контрактах два типа функций: методы просмотра и изменения.

// Методы просмотра доступны только для чтения. Они не изменяют состояние, но обычно возвращают какое-то значение.

// Методы изменения могут изменять состояние. Но вы не получите возвращаемое значение при вызове.

с 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.

Другие вопросы по тегам