Вот некоторые часто используемые методы из библиотеки OpenZeppelin SafeMath, а также примеры кода:
-
Дополнение (добавить):
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
и проверяет наличие переполнения. -
Вычитание (под):
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
и проверяет отсутствие переполнения. -
Умножение (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
и проверяет наличие переполнения. -
Разделение (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. Они помогают обеспечить безопасность арифметических операций в смарт-контрактах, предотвращая распространенные уязвимости.