Как определить доступные callback hook по адресу в Uniswap v4

Одного метода с правильным именем недостаточно для вызова hook. Эталонный менеджер v4 выбирает callback по битам разрешений, закодированным в адресе hook.

Проверьте биты фактического адреса из ключа пула

Возьмите uint160 адрес проверенного ключа и примените маски библиотеки Hooks. Для beforeSwap используется 0x80. Отдельно проверяйте разрешения возврата дельты и используйте маски развёрнутой версии.

beforeSwap flag = 1 << 7
(addressBits & 0x80) != 0 → beforeSwap permission bit set

Если ABI содержит beforeSwap, но бит выключен, стандартный менеджер не вызовет его для обычного обмена. Если бит включён, изучите реальную реализацию и её возвращаемые значения.

Не считайте разрешения оценкой безопасности

Биты выбирают точки вызова, но не описывают действия реализации или принимаемые данные. Проверьте код, возможные обновления и симуляцию вызова с нужными hookData и состоянием пула. github.com Hooks.sol