// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library SafeMath { /** * @dev Addiert zwei Zahlen und gibt das Ergebnis zurück. * Wirft einen Overflow-Fehler, wenn die Operation nicht sicher ist. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Subtrahiert zwei Zahlen und gibt das Ergebnis zurück. * Wirft einen Underflow-Fehler, wenn die Operation nicht sicher ist. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Multipliziert zwei Zahlen und gibt das Ergebnis zurück. * Wirft einen Overflow-Fehler, wenn die Operation nicht sicher ist. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Optimierung für den Fall, dass eine der Zahlen 0 ist if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Dividiert zwei Zahlen und gibt das Ergebnis zurück. * Wirft einen Fehler, wenn die Division durch 0 erfolgt. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; return c; } /** * @dev Dividiert zwei Zahlen und gibt den Rest zurück. * Wirft einen Fehler, wenn die Division durch 0 erfolgt. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } }