Понимание разницы между чистыми функциями и функциями просмотра в Solidity

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

Понимание функций pure.
Функция pureв Solidity используется, когда функция не считывает и не изменяет состояние контракта или любого внешнего состояния. Он в основном используется для выполнения вычислений или преобразований входных параметров и возврата результата. pureфункций выполняются локально и не потребляют никакого газа при вызове из другой функции. Вот пример:

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

В приведенном выше примере функция addпринимает два параметра uint256и возвращает их сумму. Поскольку функция не изменяет состояние и не считывает его, она объявлена ​​как pure.

Понимание функций view.
С другой стороны, функция viewиспользуется, когда функция не изменяет состояние контракта, но может читать из состояния. или другие контракты. viewфункций полезны для получения данных из блокчейна без их изменения. При вызове функции viewне потребляют никакого газа, если только они не вызываются другой функцией, отличной от viewили pure. Вот пример:

function getUserBalance(address user) public view returns (uint256) {
    return balances[user];
}

В приведенном выше примере функция getUserBalanceпринимает параметр addressи возвращает баланс, связанный с этим адресом. Поскольку функция только считывает состояние и не изменяет его, она объявлена ​​как view.

Сравнение функций pureи view.
Ключевое различие между функциями pureи viewзаключается в их способность изменять состояние контракта. Хотя оба типа функций доступны только для чтения, функции pureтакже не могут читать из состояния. Это означает, что функции pureограничены выполнением вычислений исключительно на основе входных параметров, тогда как функции viewмогут получать доступ к данным из состояния и извлекать их.

Резюме:
Короче говоря, pureи view— это модификаторы видимости, используемые в Solidity для обозначения поведения функций. Функции pureиспользуются, когда функция не считывает состояние и не изменяет его, а функции viewиспользуются, когда функция только считывает состояние, не изменяя его. Понимая разницу между pureи view, разработчики могут создавать более эффективные и оптимизированные смарт-контракты.