CRITICAL
Атакуючий може викликати функцію контракту повторно до завершення попереднього виклику, виводячи всі кошти з пулу.
// Vulnerable
function withdraw() {
msg.sender.call{value: amount}("");
balance = 0; // ❌ Too late!
}
✅ Fix: ReentrancyGuard
Використовуємо OpenZeppelin ReentrancyGuard modifier
HIGH
Боти відстежують mempool та виконують ваш swap раніше, змінюючи ціну на вашу шкоду. Ви отримуєте гірший курс обміну.
// Your TX: swap 100 CFX
// Bot sees it in mempool
// Bot TX (higher gas): swap 1000 CFX
// Your TX executes at worse price ❌
✅ Fix: Slippage Protection
Параметр minAmountOut гарантує мінімальну суму виходу
HIGH
Маніпуляція ціною через великі swap в маленьких пулах або атака на перших постачальників ліквідності.
// Pool: 10 CFX + 100 USDT
// Attacker adds 0.001 CFX + 0.001 USDT
// Price manipulated! ❌
// Attacker gets huge LP share
✅ Fix: MINIMUM_LIQUIDITY
Спалюємо перші 1000 wei LP токенів назавжди
SAFE
У старих версіях Solidity переповнення чисел могло призвести до втрати коштів. Solidity 0.8+ автоматично перевіряє overflow/underflow.
// Solidity 0.8+
uint256 a = type(uint256).max;
a = a + 1; // ✅ Reverts automatically
✅ Safe by default
Використання Solidity 0.8.20 захищає від overflow
HIGH
LP може вивести всю ліквідність одразу після великого swap, залишивши трейдерів без можливості обміну назад.
// You swap 100 CFX → 990 USDT
// LP immediately removes liquidity
// You can't swap back! ❌
✅ Fix: Time Locks
Додати timelock для виводу ліквідності після додавання
PROTECTED
Наш SimpleDEX контракт захищений від основних вразливостей завдяки перевіреним практикам та OpenZeppelin бібліотекам.
✅ ReentrancyGuard
✅ Slippage Protection
✅ MINIMUM_LIQUIDITY
✅ Solidity 0.8+ (overflow safe)
✅ OpenZeppelin standards
✅ Production Ready
Можна деплоїти на mainnet після аудиту