Сообщество RSS DEV

Викторина Ethereum-Solidity Q29: Что такое переполнение/недоотлив?

Переполнение и переполнение - это арифметические ошибки, возникающие, когда вычисления производят числа вне диапазона типа данных переменной. Переполнение происходит, когда значение превышает максимальное, обертываясь вокруг минимального значения, тогда как переполнение опускается ниже минимального, в результате чего происходит переход к максимальному. Версии Solidity до 0.8.0 не имели встроенной защиты от этих ошибок, что требовало использования библиотек SafeMath. Начиная с Solidity 0.8.0, компилятор автоматически проверяет эти ошибки, отменяя транзакции, которые встречают их с ошибкой "Паника". Доступен блок "unchecked", чтобы обойти эти проверки, когда разработчики знают, что вычисления безопасны, чтобы сэкономить газ. Основным методом предотвращения является использование Solidity >= 0.8.0. Однако будьте осторожны при приведении типа из более крупных к более мелким типам данных, поскольку может произойти бесшумное обертывание. Рекомендуется использовать uint256, если нет конкретных ограничений на хранилище, из-за огромного диапазона значений, который он предлагает, снижая риск переполнения.
favicon
dev.to
Ethereum-Solidity Quiz Q29: What is an Overflow/Underflow?