Готово, v20260731o — обратный zap на боевом и в .eth-зеркале.
Где — Withdraw, третий режим рядом с Balanced и Single Coin: Any Token. Выбор токена — та же модалка, что в Zap и на Swap.
Что показывает (замеры на pyUSD/crvUSD, 100 LP): выход 101.95 USDC, минимум 101.44, маршрут curve-dex:redeem → grapher:swap, 742k gas. В BNB на 500 LP: 0.807 BNB, минимум 0.8029, маршрут через kyberswap, 753k.
Три вещи, которые всплыли по дороге и которые я сделала:
1. Из гейджа выходить можно одной транзакцией. Роутер принимает на вход адрес гейджа: маршрут curve-gauge:redeem → curve-dex:redeem → swap, 677k gas. Пока не подключала — сейчас вкладка работает от свободных LP, как и остальной Withdraw. Скажешь — добавлю галочку «взять из гейджа», и анстейк отдельным шагом станет не нужен.
2. В zap не было апрува — ни в депозите, ни здесь. Для ERC20 роутер тянет токен из кошелька, без разрешения транзакция откатится; работал бы только вход нативной монетой. Добавила общий шаг: проверка разрешения, при нехватке — сначала апрув, потом маршрут, газ по нашему правилу (оценка × 1.5, без фиксированных лимитов). Подписать я не могу — первым, кто нажмёт, будешь ты, и это первая же вещь, которую стоит проверить кошельком.
3. Порог для pricing unreliable — не выдуманный процент. На стейбле «выгода» вылезает и в 0.04% — это просто округление, и постоянная плашка обесценила бы предупреждение. Теперь помечаю только когда мнимая выгода больше собственного допуска маршрута (разрыв между «получишь» и «минимум»). Проверила: USDC +0.04% — без пометки, BNB +4.02% — с пометкой.
Отдельно, честно: тот же запрос 100 LP → USDC в двух прогонах с интервалом в четверть часа дал 100.74 и 101.95 — разброс больше процента при одинаковом маршруте. Гарантия — только строка Minimum received, «получишь» это оценка роутера. Поэтому на втором прогоне и загорелась пометка.