Функции Solidity: view, pure, payable — отличия

Объясняем крипту простыми словами: как купить первый раз, безопасно хранить, переводить и не нарушать закон в РФ. Делаем пошаговые гайды, чек‑листы и разборы метрик CoinMarketCap/Gecko без шума и хайпа. Наша цель — ваша безопасность, понимание рисков и уверенные действия в мире цифровых активов.

solidityviewpure

В Solidity модификаторы view, pure и payable показывают, что именно может делать функция. Это важно и для безопасности контракта, и для понимания, когда пользователь платит газ, а когда — отправляет ETH.

1. `view` — функция только читает данные 👀

view означает, что функция не изменяет состояние блокчейна, а только читает данные из контракта.

function getBalance() public view returns (uint) {
    return balance[msg.sender];
}

Что важно:

  • можно читать state variables
  • нельзя менять значения переменных
  • нельзя создавать транзакционное изменение состояния
  • при вызове локально через интерфейс кошелька или dApp обычно не требует газа

Подходит для:

  • получения баланса
  • чтения настроек контракта
  • просмотра статуса пользователя

2. `pure` — функция вообще не работает с состоянием контракта 🧠

pure ещё строже, чем view. Такая функция не читает и не изменяет данные контракта, а работает только с переданными аргументами.

function add(uint a, uint b) public pure returns (uint) {
    return a + b;
}

Что важно:

  • нельзя читать state variables
  • нельзя изменять состояние
  • используется для вычислений
  • удобна для внутренней логики и математических операций

Подходит для:

  • расчётов
  • конвертаций
  • проверки формул
  • служебной бизнес-логики

3. `payable` — функция может принимать ETH 💸

payable нужна, когда пользователь отправляет в контракт нативную монету сети: ETH в Ethereum, BNB в BNB Chain и т.д.

function deposit() public payable {
    balance[msg.sender] += msg.value;
}

Что важно:

  • без payable контракт отклонит перевод средств в такую функцию
  • внутри можно использовать msg.value — это сумма перевода
  • такие функции часто участвуют в покупке токенов, депозитах, mint NFT

Подходит для:

  • пополнения баланса
  • покупки через смарт-контракт
  • оплаты mint
  • приёма донатов или комиссий

Ключевое различие 📌

  • view — читает, но не меняет
  • pure — не читает и не меняет, только вычисляет
  • payable — может принимать криптовалюту

Важный нюанс

payable — это не альтернатива view или pure, а отдельное свойство функции. На практике функция обычно бывает либо изменяющей состояние с payable, либо просто view/pure для чтения и расчётов. Например, функция приёма депозита почти всегда не view, потому что она меняет данные в контракте.

Почему это важно для разработчика и инвестора 🔒

Понимание этих модификаторов помогает:

  • быстрее читать код смарт-контрактов
  • замечать рискованные функции
  • отличать безопасное чтение данных от отправки средств
  • лучше понимать, за что именно вы платите газ

Если видите payable, всегда проверяйте, куда уходят средства и что происходит после перевода.

📊 Подборку полезных каналов про криптовалюты можно посмотреть ниже — там новости, аналитика и практические разборы рынка.

🫵 Подборка каналов
🐋 Каталог ботов и приложений
🛩 Навигация

Читайте так же