Скрипт лимитного ордера 1inch limit orders(web3.py)

6 666 руб. за проект
25 ноября 2023, 09:35 • 11 откликов • 58 просмотров
Здравствуйте!

Необходимо написать python функцию "place_limit", принимающую token_in, token_out, amount_in, amount_out, expiration, wallet_address, wallet_private_key как аргументы, где:
- token_in - Адрес токена которым оплачиваем (пример: "0xdAC17F958D2ee523a2206206994597C13D831ec7")
- token_out - Адрес токена, который получаем (пример: "0xdAC17F958D2ee523a2206206994597C13D831ec7")
- amount_in - количество токена, которым оплачиваем (нужно будет узнать decimals и конвертировать в wei) (пример: 0.001)
- amount_out - количество токена, который получаем (нужно будет узнать decimals и конвертировать в wei) (пример: 2.0)
- expiration (= one_hour, где one_hour = one_hour = int(time.time()) + timedelta(hours=1).total_seconds()
- wallet_address - адрес кошелька для транзакции (пример: "0x2126d4C51F05159993d8f509E0172520426121f9"
- wallet_private_key - ключ кошелька для подписи TX (пример: "0x2ad6db4866f04fb2ea1ceb6f1ce3cd852ae097c7a5a016c4f65aa70aae6aba25")

Функция создает и отправляет лимитный ордер на 1inch.io (также как https://app.1inch.io/#/1/advanced/limit-order/)

Функция возвращает tx_hash.hex() транзакции или ошибку

Обрабатываемые ошибки:
- недостаточно token_in
- недостаточно токенов для оплаты газа
- несуществующий token_in/token_out
- неправильная пара wallet_address + wallet_private_key


Доп данные:
- 1inch limit orders protocol contract = 0x1111111254EEB25477B68fb85Ed929f73A960582
- 1inch limit orders API https://docs.1inch.io/docs/limit-order-protocol/ap...
- любой способ реализации, но без использования сторонних библиотек (исключения - репозиторий etherium (eth_account, web3.py и т.д)
- структура limit_order https://docs.1inch.io/docs/limit-order-protocol/ut...

Сроки: 2-5 дней