// Функція для обрахунку кількості актива для обміну, по формулі CPMM function getAmount(uint inputAmount, uint inputReserve, uint outputReserve) private pure returns (uint) { // Перевірка на коректність резервів require(inputReserve > 0 && outputReserve > 0, "invalid reserves"); // Обрахунок комісії uint256 inputAmountWithFee = inputAmount * 99; // 1% // Розрахунок чисельника uint256 numerator = inputAmountWithFee * outputReserve; // Розрахунок знаменника uint256 denominator = (inputReserve * 100) + inputAmountWithFee; // Обчислення кількості і поверення значення return numerator / denominator; }
0.7.1