Разбор Uniswap V2: Router контракты. Часть 3
Ну, и заключительная часть разбора Router контракта начинается с функций removeLiquidityEth и removeLiquidity.
Функции удаления ликвидности вызывают burn, и использует параметры amountAMin и amountBMin в качестве проверки безопасности, чтобы гарантировать, чтобы пользователь получил обратно то количество токенов, которое ожидает.
В случае, если соотношение токенов резко изменится до того, как токены ликвидности будут сожжены, функция откатится и пользователь не потеряет свои активы.
При этом в функции removeLiquidityEth также происходит взаимодействие с WETH контрактом, чтобы пользователь мог получить Эфир.
removeLiquidityWithPermit() и removeLiquidityETHWithPermit()
В строке 109 в приведенном выше файле с серым комментарием send liquidity to pair предполагает, что контракт пары имеет разрешение на передачу токенов LP от поставщика ликвидности для их сжигания. Это означает, что для сжигания LP-токенов требуется сначала одобрить пару. Этот шаг можно пропустить с помощью функции permit().
Router02 и поддержка fee-on-transfer токенов
Чтобы справиться подобными токенами, контракт Router не может напрямую производить расчеты по таким аргументам, как amountIn (для свопа) или liquidity (для удаления ликвидности). В этом случае, добавление ликвидности не будет зависеть от комиссии за перевод токенов, поскольку пользователю начисляется только то, что он фактически переводит в пару.
Контракты Router обеспечивают пользовательский механизм обмена токенов с защитой от проскальзывания, в том числе и между несколькими пулами, а также добавляют поддержку торговли ETH и fee on transfer токенами (в Router02).
Функции внесения ликвидности гарантируют, что пользователь вносит средства только в точном соотношении к пулу. Удаление ликвидности может быть как простым переводом токенов LP на маршрутизатор с последующим их сжиганием, так и с использованием WETH для работы с Эфиром.
Кроме того, включена поддержка функций ERC20 Permit.
#uniswap #router
Post #1052
1.03K
- 🔥 3