Как выбрать слово bitmap Uniswap v3 ниже нулевого тика
Отрицательный начальный тик, не кратный шагу, обнаруживает частую ошибку поиска инициализированных тиков. Усечение к нулю отправит сканер в другое слово карты.
Сожмите тик с округлением вниз
Для поиска вниз от минус одного при шаге десять округлите частное вниз до минус одного. Разделите знаковый сжатый тик на знаковый индекс слова и восемь младших бит позиции. В примере получатся слово минус один и бит 255.
tick = -1, spacing = 10
compressed floor = -1
word = -1; bit = 255
С усечением к нулю сканер проверил бы слово ноль. Повторите маски направления из nextInitializedTickWithinOneWord, включая поиск вниз с текущей позиции и вверх со следующей.
Продолжайте обход при отсутствии установленного бита
Функция возвращает границу и признак initialized. Ложный признак у границы не означает изменение ликвидности на этом тике. Переходите к следующему слову в нужном направлении, соблюдая допустимые границы и фактический шаг пула. github.com TickBitmap.sol