Как выбрать слово bitmap Uniswap v3 ниже нулевого тика

Отрицательный начальный тик, не кратный шагу, обнаруживает частую ошибку поиска инициализированных тиков. Усечение к нулю отправит сканер в другое слово карты.

Сожмите тик с округлением вниз

Для поиска вниз от минус одного при шаге десять округлите частное вниз до минус одного. Разделите знаковый сжатый тик на знаковый индекс слова и восемь младших бит позиции. В примере получатся слово минус один и бит 255.

tick = -1, spacing = 10
compressed floor = -1
word = -1; bit = 255

С усечением к нулю сканер проверил бы слово ноль. Повторите маски направления из nextInitializedTickWithinOneWord, включая поиск вниз с текущей позиции и вверх со следующей.

Продолжайте обход при отсутствии установленного бита

Функция возвращает границу и признак initialized. Ложный признак у границы не означает изменение ликвидности на этом тике. Переходите к следующему слову в нужном направлении, соблюдая допустимые границы и фактический шаг пула. github.com TickBitmap.sol