| Поле | Что фиксировать | Основной риск |
|---|---|---|
| currency0 / currency1 | Точные отсортированные addresses и native-currency representation | Поддельный token или другой порядок |
| fee | Static fee либо dynamic-fee flag | Неожиданная комиссия |
| tickSpacing | Точное signed значение из key | Другой price grid и pool ID |
| hooks | Полный contract address | Дополнительная логика callback |
| PoolManager | Chain-specific deployed address | Другая инсталляция протокола |
- Поле
- currency0 / currency1
- Что фиксировать
- Точные отсортированные addresses и native-currency representation
- Основной риск
- Поддельный token или другой порядок
- Поле
- fee
- Что фиксировать
- Static fee либо dynamic-fee flag
- Основной риск
- Неожиданная комиссия
- Поле
- tickSpacing
- Что фиксировать
- Точное signed значение из key
- Основной риск
- Другой price grid и pool ID
- Поле
- hooks
- Что фиксировать
- Полный contract address
- Основной риск
- Дополнительная логика callback
- Поле
- PoolManager
- Что фиксировать
- Chain-specific deployed address
- Основной риск
- Другая инсталляция протокола
Pool ID начинается с полного PoolKey
v4 хранит pools внутри singleton PoolManager. Поэтому отдельного pool contract address в привычном смысле может не быть: состояние выбирается по pool ID, полученному из PoolKey. Сопоставьте данные router/quoter с onchain key и убедитесь, что интерфейс не подменил hook или один из token addresses. Базовый материал объясняет, как работает DEX и AMM без v4-specific деталей.
Позиция ликвидности чувствительна не только к цене. Tick range, комиссии, hook callbacks и последующее поведение токенов меняют результат, а impermanent loss оценивается уже для подтверждённого пула, а не для названия пары.
Permissions говорят когда hook вызывается, но не что он сделает
Hook address кодирует флаги callback: до или после initialize, add/remove liquidity, swap и donate, а дополнительные биты могут разрешать возврат delta. PoolManager проверяет эти permissions, но корректный набор битов не является аудитом. Прочитайте фактический bytecode/verified source, constructor parameters, зависимости и возможный proxy/admin boundary; отдельная методика показывает, как читать аудит смарт-контракта.
Проверка перед swap или liquidity action
- 1Зафиксировать сеть
Запишите chain ID, официальный PoolManager address и block number проверки.
- 2Восстановить PoolKey
Снимите currency0, currency1, fee, tickSpacing и hooks из вызова/router quote и вычислите pool ID.
- 3Разобрать permissions
Сопоставьте младшие биты hook address с разрешёнными callbacks; отдельно отметьте dynamic fee и return delta surfaces.
- 4Проверить реализацию
Сравните deployed bytecode с verified source; установите proxy/implementation/admin и внешние контракты, если они есть.
- 5Симулировать точный маршрут
На актуальном state выполните quote/simulation с теми же router, amount, direction, slippage и deadline; сохраните revert либо deltas.
Dynamic-fee pool требует проверить не только базовый fee field, но и логику, которая устанавливает актуальную комиссию. Return-delta permissions позволяют hook участвовать в расчёте token deltas в предусмотренных callback, поэтому простой список callback names не описывает экономический результат. Для каждого внешнего вызова hook фиксируйте target, selectors, mutable storage и failure behavior: revert hook может остановить весь route, а администратор может изменить зависимую конфигурацию без смены PoolKey.
Stop-сигналы важнее обещания интерфейса
| Наблюдение | Риск | Действие |
|---|---|---|
| Hook address нулевой | Hook callbacks отсутствуют, но остаются token/router/pool risks | Проверить полный PoolKey и route |
| Source не verified или bytecode не совпадает | Логика hook неизвестна | Не подписывать до воспроизводимого анализа bytecode |
| Есть proxy/admin или внешняя mutable config | Поведение может меняться | Зафиксировать implementation/admin/config block и update authority |
| Simulation меняет unexpected delta или reverts | Quote не описывает фактический путь | Снизить scope, разобрать callback и не увеличивать approval |
| PoolKey из UI не воспроизводится | Пул не идентифицирован | Остановиться; запросить raw calldata и onchain key |
- Наблюдение
- Hook address нулевой
- Риск
- Hook callbacks отсутствуют, но остаются token/router/pool risks
- Действие
- Проверить полный PoolKey и route
- Наблюдение
- Source не verified или bytecode не совпадает
- Риск
- Логика hook неизвестна
- Действие
- Не подписывать до воспроизводимого анализа bytecode
- Наблюдение
- Есть proxy/admin или внешняя mutable config
- Риск
- Поведение может меняться
- Действие
- Зафиксировать implementation/admin/config block и update authority
- Наблюдение
- Simulation меняет unexpected delta или reverts
- Риск
- Quote не описывает фактический путь
- Действие
- Снизить scope, разобрать callback и не увеличивать approval
- Наблюдение
- PoolKey из UI не воспроизводится
- Риск
- Пул не идентифицирован
- Действие
- Остановиться; запросить raw calldata и onchain key
Перед подписью декодируйте calldata router и проверьте, что вы подписываете в кошельке: hook может влиять на swap, но фактические разрешения токенов и получатель задаются байтами транзакции. Unlimited approval, Permit2 scope или непонятный multicall — отдельный риск, который название пула не снимает.
Результат проверки — chain ID, PoolManager, полный PoolKey и pool ID, block number, hook permissions, bytecode hash, source/implementation/admin, mutable config, точный router calldata и simulation output. Если хотя бы один идентификатор меняется между quote и подписью, проверку повторяют; старый вывод нельзя переносить на другой pool с той же парой.
Источники
Мы используем прямые ссылки и фиксируем дату проверки. Полный текст чужих материалов не перепечатывается.
- Uniswap Developers — Hooks Uniswap Labs · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Uniswap Developers — PoolManager Uniswap Labs · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Uniswap v4-core — PoolKey.sol Uniswap · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Uniswap v4-core — PoolId.sol Uniswap · Проверено 23 августа 2026 г. в 15:43 GMT+5
- Uniswap v4-core — Hooks.sol Uniswap · Проверено 23 августа 2026 г. в 15:43 GMT+5
