Библиотека OpenZeppelin SafeMath: безопасные арифметические операции в смарт-контрактах

Вот некоторые часто используемые методы из библиотеки OpenZeppelin SafeMath, а также примеры кода:

  1. Дополнение (добавить):

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath: addition overflow");
    return c;
    }

    Функция addдобавляет два целых числа без знака aи bи проверяет наличие переполнения.

  2. Вычитание (под):

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, "SafeMath: subtraction overflow");
    uint256 c = a - b;
    return c;
    }

    Функция subвычитает целое число без знака bиз aи проверяет отсутствие переполнения.

  3. Умножение (mul):

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
        return 0;
    }
    uint256 c = a * b;
    require(c / a == b, "SafeMath: multiplication overflow");
    return c;
    }

    Функция mulумножает два целых числа без знака aи bи проверяет наличие переполнения.

  4. Разделение (div):

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b > 0, "SafeMath: division by zero");
    uint256 c = a / b;
    return c;
    }

    Функция divделит беззнаковое целое число aна bи выдает ошибку, если делитель равен нулю.

Это всего лишь несколько примеров методов, предоставляемых библиотекой OpenZeppelin SafeMath. Они помогают обеспечить безопасность арифметических операций в смарт-контрактах, предотвращая распространенные уязвимости.