Добавить новость

Эксперт рассказал о смартфонах, которые взрываются чаще всего

В Абхазии нашли средства для выплаты заработной платы бюджетникам за ноябрь

Песков: говорить о сохранении российских баз в Сирии преждевременно

Эксперт: наибольший рост в цене к Новому году показали картофель и красная икра





Новости сегодня

Новости от TheMoneytizer

Правильно обработать транзакцию Uniswap v3

Пишу скрипт автоматической ребалансировки позиции на Uniswap v3. Вот функция минта новой позиции, с которой у меня основные проблемы.

def add_liquidity(web3, wallet_address, private_key, new_range_lower, new_range_upper, token_id, amount0=None,
                  amount1=None):
    """
    Добавляет ликвидность в новый диапазон.
    :param web3: Экземпляр Web3 для взаимодействия с блокчейном.
    :param wallet_address: Адрес кошелька.
    :param private_key: Приватный ключ кошелька.
    :param new_range_lower: Новая нижняя граница диапазона.
    :param new_range_upper: Новая верхняя граница диапазона.
    :param amount0: Количество первого токена для добавления.
    :param amount1: Количество второго токена для добавления.
    :param token_id: ID позиции NFT на Uniswap.
    """
    token0 = TOKEN0  # WETH
    token1 = TOKEN1  # USDC

    logger = setup_logger(wallet_address)
    logger.info(f"Добавление ликвидности в диапазон {new_range_lower} - {new_range_upper} начато.")

    tick_lower, tick_upper = price_to_tick(new_range_lower), price_to_tick(new_range_upper)
    price_ticked_lower, price_ticked_upper = tick_to_price(tick_lower), tick_to_price(tick_upper)

    try:
        # Если amount0 не передано, вычисляем их динамически
        if amount0 is None:
            amount0, amount1 = AMOUNT0, AMOUNT1
            logger.info(f"Вычислены значения для кошелька {wallet_address}: amount0 = {amount0}, amount1 = {amount1}")
        else:
            amount1 = eth_to_usdc(price_ticked_lower, price_ticked_upper, get_eth_price(), amount0)
            logger.info(f"Используются переданные значения для кошелька {wallet_address}: amount0 = {amount0}, amount1 = {amount1}")
        # Получаем контракт
        position_manager = get_contract(POSITION_MANAGER_ADDRESS, POSITION_MANAGER_ABI_PATH)

        params = (
            Web3.to_checksum_address(token0),
            Web3.to_checksum_address(token1),
            3000,
            tick_lower,
            tick_upper,
            Web3.to_wei(amount0, 'ether'),
            int(amount1 * (10**6)),
            0,
            0,
            Web3.to_checksum_address(wallet_address),
            int(time.time()) + 60
        )
        print(Web3.to_checksum_address(token0),
            Web3.to_checksum_address(token1),
            3000,
            tick_lower,
            tick_upper,
            Web3.to_wei(amount0, 'ether'),
            int(amount1 * (10**6)),
            0,
            0,
            Web3.to_checksum_address(wallet_address),
            int(time.time()) + 60)
        add_liquidity_txn = position_manager.functions.mint(params).build_transaction({
            "from": wallet_address,
            "value": 0,
            "gasPrice": int(web3.eth.gas_price * GAS_PRICE_MULTIPLIER),
            "nonce": web3.eth.get_transaction_count(wallet_address),
        })

        # Оценка газа для mint
        estimated_gas = web3.eth.estimate_gas(add_liquidity_txn)
        add_liquidity_txn['gas'] = int(estimated_gas * 1.2)  # Добавляем запас 20%
        signed_tx = web3.eth.account.sign_transaction(add_liquidity_txn, private_key=private_key)

        tx_hash = web3.eth.send_raw_transaction(signed_tx.raw_transaction)

        logger.info(f"Ликвидность успешно добавлена для кошелька {wallet_address}. Хэш транзакции: {tx_hash}")
    except Exception as e:
        logger.error(f"Ошибка при добавлении ликвидности для кошелька {wallet_address}: {e}")
Вот, что лежит в params 0x4200000000000000000000000000000000000006 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 3000 -194630 -194351 100000000000000 379277 0 0 0xdb9733BE614A69a62ad717f3158BBA383b2F740B 1732838297

Проблема в том, что при таких параметрах вечно получаю ошибку

2024-11-29 02:57:18,546 - ERROR - Ошибка при добавлении ликвидности для кошелька 0xdb9733BE614A69a62ad717f3158BBA383b2F740B: ('execution reverted', 'no data')

Когда меняю тики, то выходит

0xdb9733BE614A69a62ad717f3158BBA383b2F740B: ('execution reverted: STF', '0x08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000035354460000000000000000000000000000000000000000000000000000000000')

Читайте на 123ru.net


Новости 24/7 DirectAdvert - доход для вашего сайта



Частные объявления в Вашем городе, в Вашем регионе и в России



Smi24.net — ежеминутные новости с ежедневным архивом. Только у нас — все главные новости дня без политической цензуры. "123 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. Smi24.net — облегчённая версия старейшего обозревателя новостей 123ru.net. Мы не навязываем Вам своё видение, мы даём Вам срез событий дня без цензуры и без купюр. Новости, какие они есть —онлайн с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии. Smi24.net — живые новости в живом эфире! Быстрый поиск от Smi24.net — это не только возможность первым узнать, но и преимущество сообщить срочные новости мгновенно на любом языке мира и быть услышанным тут же. В любую минуту Вы можете добавить свою новость - здесь.




Новости от наших партнёров в Вашем городе

Ria.city

Монолитные работы начались на площадке первой очереди жилого комплекса в Левобережном районе

Бирюков: в системы отопления Москвы добавили тепла

Дизайнер Соболева назвала актуальные тренды в интерьере

Суд приговорил к 6 годам экс-замглавы департамента "Финпромбанка" за растрату

Музыкальные новости

Безопасность спортивных и культурных мероприятий в Зауралье обеспечила Росгвардия

Сергей Собянин. Главное за день

Выставка произведений из Музея изобразительных искусств Карелии пройдет в Москве

Выставка музея-фантома закрылась через 3 часа после открытия

Новости России

Путин назвал Пахмутову мелодией Россией

Путин вручил награды Героев Труда директору «Роствертол» Мотренко и депутату Госдумы Ресину

Детское радио – партнер релиза «Одна дома. Великолепная пятерка»

Андрей Воробьев: более 30 проектов с использованием ИИ реализуется в Подмосковье

Экология в России и мире

Концертный Директор в тарифе Lait для Артистов, Музыкантов, Певцов, Поэтов, Танцоров и Шоу программ.

Кабинет Артиста в Яндекс. Кабинет Артиста в Яндекс Музыке. 

Главным мировым звездам объявили войну. Фанаты решили тотально их игнорировать и лишить заработка. Что случилось?

Международный конкурс искусства «Сокровища нации» 2024

Спорт в России и мире

Раскрыта неожиданная причина превосходства молодой теннисистки над Еленой Рыбакиной

«Начало заката». Янчук о следующем сезоне Даниила Медведева

Хачанов признался, что российские теннисисты скучают по Кубку Дэвиса

Миллиардер дал совет Елене Рыбакиной

Moscow.media

• Dusil Photography • https://dusil.org

Стало известно, когда грузовик отечественной разработки встанет на конвейер

Верховный суд не стал рассматривать жалобу педофила-убийцы из Златоуста

В Тюменской области продолжат строительство крупных дорожных объектов в 2025 году











Топ новостей на этот час

Rss.plus






Похороны актрисы Максимовой пройдут 14 декабря на Троекуровском кладбище

Почему на Орловщине дела в мусорной отрасли идут вразрез с федеральной повесткой?

Почти половина работающих россиян намерены пройти обучение для смены профессии

Детское радио – партнер релиза «Одна дома. Великолепная пятерка»