Інтерактивні сценарії вразливостей та захисту
Яка стадія DEX захищена від якої атаки?
Атакуючий може викликати функцію контракту повторно до завершення попереднього виклику, виводячи всі кошти з пулу.
function withdraw() {
msg.sender.call{value: amount}("");
balance = 0; // Too late!
}
Боти відстежують mempool та виконують ваш swap раніше, змінюючи ціну на вашу шкоду. Ви отримуєте гірший курс обміну.
// Bot sees it in mempool
// Bot TX (higher gas): swap 1000 CFX
// Your TX executes at worse price
Маніпуляція ціною через великі swap в маленьких пулах або атака на перших постачальників ліквідності.
// Attacker adds 0.001 CFX + 0.001 USDT
// Price manipulated!
// Attacker gets huge LP share
У старих версіях Solidity переповнення чисел могло призвести до втрати коштів. Solidity 0.8+ автоматично перевіряє overflow/underflow.
uint256 a = type(uint256).max;
a = a + 1; // Reverts automatically
LP може вивести всю ліквідність одразу після великого swap, залишивши трейдерів без можливості обміну назад.
// LP immediately removes liquidity
// You can't swap back!
Наш SimpleDEX контракт захищений від основних вразливостей завдяки перевіреним практикам та OpenZeppelin бібліотекам.
Slippage Protection
MINIMUM_LIQUIDITY
Solidity 0.8+ (overflow safe)
OpenZeppelin standards