Как различать позиции Uniswap v4 одного диапазона по salt
Роутер может владеть несколькими позициями v4 с одинаковыми тиками. Ключ только из владельца и границ объединит их ликвидность и учёт комиссий.
Восстановите полный идентификатор позиции
Начните с сети, PoolManager и ID пула. Внутри пула используйте владельца из операции ядра, нижний и верхний тики и bytes32 salt из modifyLiquidity. Две записи примера различаются только солью.
owner R, ticks [-120, 120], salt 0
owner R, ticks [-120, 120], salt 1
Добавление ликвидности для соли один относится ко второй позиции. Если ядро вызывает менеджер позиций, не подставляйте пользователя автоматически в поле владельца. Возможный NFT или ID приложения храните отдельной связью.
Для снятия найдите исходную соль
Снятие с другой солью обращается к иной позиции даже при тех же границах цены. Когда интерфейс показывает ликвидность, которую не удаётся снять, сверьте событие с исходным callback и учётом менеджера. github.com PoolManager.sol