Перейти к содержимому

Как проверить баланс криптокошелька python

  • автор:

Разработка криптотрейдингового бота с помощью Python

Всем привет, меня зовут Александр, я работаю интеграционным инженером в компании Luxoft. В этой статье хотел бы рассказать о своем опыте автоматизации торговли криптовалютами.

Данная статья будет содержать примеры кода на Python, а также некоторые выводы, которые я сделал, торгуя на бирже. Материал будет полезен людям, которые интересуются темой криптовалют и хотят автоматизировать некоторые рутинные процессы. А также тем, кто начинает изучать Python и хочет познакомиться с языком на полезном и практическом примере, а не на оторванных от реальности синтетических задачах.

В данный момент бот находится в стадии прототипа и альфа-тестирования. Он только собирает статистику с биржи, анализирует ее и дает рекомендации — в какой момент времени какой токен стоит покупать, какой — продавать. Сам процесс торговли пока еще находится в руках человека, но в будущем он также будет автоматизирован и бот станет полностью автономным.

Часть 1. Общие сведения про биржу и торговлю криптовалютами

Eсли вам интересен только код — смело листайте сразу до части.

Всё началось несколько месяцев назад, в январе 2021, когда практически из каждого утюга доносилось «Биткоин стремительно растёт! Те, кто вовремя вложились — стали миллионерами!». Также масла в огонь подливали новости о том, что геймерам не хватает видеокарт, потому что майнеры всё раскупили, даже несмотря на рост цен в

В итоге, после настолько навязчивой информационной атаки, я просто не мог оставаться в стороне и начал разбираться в вопросе.

Не вдаваясь в детали выбора криптобиржи скажу лишь, что он был скорее интуитивным, чем рационально обоснованным и в итоге пал на binance.com (не реклама).

У меня нет никаких аргументов за или против этой биржи, так как ничем другим не пользовался и сравнивать, соответственно, не с чем. Вы вполне можете выбрать любую другую биржу из популярных — принципы торговли будут одинаковы, отличаться будет лишь интерфейс, API и процедура верификации личности.

На последнем моменте стоит отдельно акцентировать внимание — на Бинанс у вас будут весьма ограниченные возможности, если вы не подтвердите свою личность. Процедура несложная, занимает буквально 15 минут и требует от вас всего лишь:

  • документа, подтверждающего личность (например, паспорт, водительское удостоверение, etc);
  • веб-камеры (или фронтальной камеры на смартфоне с установленным приложением от Бинанс);
  • ввода некоторых данных о вас.

Крайне рекомендую сделать это, так как иначе на ваш аккаунт будет наложено, среди прочих, одно очень существенное ограничение — вы не сможете выводить деньги с биржи. То есть, завести деньги на биржу сможете без проблем, а потом, успешно поторговав — не сможете вернуть деньги обратно на свою банковскую карту.

После успешной регистрации и верификации аккаунта у вас будет несколько способов завести деньги на биржу. Рассмотрев альтернативы, был выбран такой способ — с помощью банковской карты покупаются токены USDT, которые относятся к так называемым стейблкоинам (от англ. stable coin — стабильная монета). Стабильной она называется потому, что ее цена колеблется в очень незначительных пределах (от 0.98$ до 1.02$ за 1 USDT) и большую часть времени составляет ровно 1 доллар США. Таким образом, купив за реальные деньги — виртуальные USDT, вы пока еще ничем не рискуете, так как цена практически гарантированно не изменится. Единственное, что вы теряете в данный момент — это 2% комиссии биржи за ввод средств или 20$ с каждой тысячи.

Также стоит учесть, что от всех торговых внутрибиржевых сделок Бинанс берет небольшую комиссию — 0.1% или 1$ с каждой 1000. Эта комиссия настолько незначительна, что её можно игнорировать.

И, наконец, последняя важная комиссия — 2.5% от суммы средств, которые вы выводите с биржи на свою банковскую карту. Процент хоть и небольшой, но ощутимый (25$ с каждой 1000), поэтому имеет смысл торговать на бирже так долго, как это возможно, и выводить лишь в самом крайнем случае.

Просуммировав все вышеописанное, можно сделать вывод № 1: ваши инвестиции должны вырасти в цене как минимум на 4.6%, чтобы вы вышли в ноль. Если взять условную 1000$ на вашей банковской карте, то после всех ваших манипуляций на бирже (ввод, торговля), ваша прибыль должна составить как минимум 46$, чтобы к вам на карточку вернулась та же самая тысяча.

Для людей, привыкших к обычным банковским вкладам, 4.6% могут показаться весьма существенным и сложнодостижимым результатом. Но в мире криптовалют всё намного более волатильно, поэтому часто сделки осуществляются со значительно большей прибылью и буквально каждый день. Для примера, можете взглянуть на этот «зеленый» период рынка:

«Зеленым» он называется потому, что когда цена криптовалют растет — их графики рисуют зеленым цветом, а когда падает — красным. Если наступил период массового роста, иногда говорят, что «рынок позеленел», а если наступил период спада — «покраснел», например, как здесь:

Иногда бывают и совсем необычные ситуации — весь рынок «красный», а какой-нибудь Dogecoin растет на +122% за сутки)

Раз мы посчитали, сколько нужно заработать и увидели, что это возможно, давайте перейдем к той части, где обсудим, как именно это сделать.

Есть несколько стратегий, но одна из самых простых и понятных для начинающего криптоторговца — купить подешевле, продать подороже.

На графике это можно изобразить следующим образом:

Где каждый левый кружок в паре — момент покупки («подешевле»), а каждый правый кружок — момент продажи («подороже»). Соответственно, разница между этими двумя сделками — и будет вашей прибылью (за исключением символического процента биржи в 0.1%)

Вы можете задать вопрос: «А почему во второй сделке не подождать дальнейшего роста и не продать с большей прибылью?» И этот вопрос совершенно оправдан, вот только ясность приходит уже по прошествии определенного времени, когда график колебания цен у вас перед глазами и поздно отправляться в прошлое, чтобы принять наилучшее решение.

Опытные инвесторы говорят, что два основных рычага, влияющих на принятие решений — это страх и жадность. Жадность — как стремление получить больше прибыли (на росте цены) и страх — как тревога за то, что цена в любой момент может пойти вниз и текущий момент времени — тот самый локальный пик, наилучший момент для продажи.

Я выбрал следующую стратегию поведения (которая чуть ниже будет показана в коде): сперва отслеживаю резкие падения цены, покупаю такую криптовалюту на 100$ и сразу же, в эту же минуту ставлю ордер на автопродажу на сумму 110$. Такой подход позволяет совершать сделки достаточно часто, при этом суммарно их выходит много в течении месяца и итоговая прибыль получается существенной (в процентном отношении к стартовым инвестициям).

Пара моментов, на которые стоит обратить внимание.

Во-первых, Бинанс позволяет ставить так называемые стоп-лимит уровни. Их можно использовать для выполнения автоматических сделок, например — для покупки криптомонет, когда их цена опускается ниже определенного уровня или для продажи, когда их цена растет выше определенного уровня.

Во-вторых, хорошей стратегией является диверсификация или распределение ваших инвестиций на несколько криптовалют. На момент начала торгов на биржу было заведено 600$, которые я распределил равномерно на 6 частей, закупившись 6 разными криптовалютами. Когда после многочисленных сделок общая стоимость инвестиций выросла до 700$ — я стал покупать уже 7 разных криптовалют, когда выросла до 800$ — 8, и так далее. На момент написания статьи, стартовые 600$ превратились в 812$ примерно за месяц торгов с использованием описанной стратегии.

И наконец, если с моментом для продажи все просто (ставим ордер на автопродажу за 110$ и ждем — иногда пару часов, иногда несколько дней), то как именно можно определить, что такое «резкое падение цены»?

Вероятно, у каждого свое представление о том, какие падение считать достаточно резким, но я для себя (математически) определил его как «5% падение цены в течении последнего часа». Именно это определение было заложено в логику бота.

Для примера приведу еще несколько графиков, где вы сами без труда сможете определить удачный момент для покупки, а также убедиться, что после стремительного падения цены — всегда следует рост, с которого можно получить прибыль:

Часть 2. Пишем бота

После прочтения первой части у вас мог возникнуть вопрос: «Если Бинанс такая замечательная биржа, что позволяет автоматически и покупать, и продавать — зачем вообще нужен бот?». Это уместное замечание и ответ на него такой — бот крайне полезен для сбора статистики, анализа и рекомендаций по удачным моментам для покупки и продажи.

В те несколько недель, пока всё делалось вручную, успел заметить, что очень много времени и внимания уходит на отслеживание падений цен. А ведь возможность заниматься мониторингом была лишь изредка, ненадолго отвлекаясь от работы в течении дня и вечером. В остальное время, когда я работал, ел, спал — все удачные моменты для покупки проходили мимо и это выливалось в упущенные возможности и недополученную прибыль.

Всё это смотивировало написать код, который ежеминутно проверял курсы валют для выбранных токенов, собирал статистику колебаний цен за последний час и как только для какой-то валюты обнаруживал резкую просадку цены — тут же писал в Телеграм сообщение следующего вида:

Как видно из этого скриншота, бот не только писал, какой токен следует купить, но и на сколько % упала цена за последний час. Для тех же криптовалют, для которых падение цены было меньше 5% — фраза была «nothing to do right now. »

В данный момент бот используется только как сборщик статистики, анализатор и советчик. Он не совершает сделки автоматически, этот функционал будет добавлен в будущем, когда придет уверенность, что бот дает корректные рекомендации и не наторгует в минус, пока я буду спать)

Давайте же наконец перейдем к коду и посмотрим, как все устроено внутри.

Проект состоит всего из 3 файлов:

  • cryptobot . py (собственно, сам бот)
  • calculations . py (вспомогательные функции для анализа и расчетов)
  • my_cryptocoins.json (файл с данными о криптовалютах и их актуальных ценах)

Содержимое my_cryptocoins.json выглядит следующим образом:

< "ALICE": < "amount": 3.5, "buy_price": 30, "desired_price_fall": 5, "desired_sell_price": 33, "last_prices": [ 12.71004841, 12.71728863, 12.71983559, . 12.73806222, 12.74204871 ] >, "ARDR": < "amount": 314.895, "buy_price": 0.351, "desired_price_fall": 5, "desired_sell_price": 0.3861, "last_prices": [ 0.69192631, 0.69205345, 0.68947941, . 0.68280223, 0.67819879 ] >, "BCH": < "amount": 0.22, "buy_price": 650, "desired_price_fall": 5, "desired_sell_price": 715, "last_prices": [ 628.07961283, 628.60812333, 629.01582194, . 629.29318231, 629.12820048, 660.64513681 ] >,

(и так далее, полный файл содержит в себе десятки токенов и данных об их ценах)

Где, «amount» — количество монет данной валюты, купленных ранее.
«buy_price» — цена, по которой они были куплены
«desired_price_fall» — процент, на который мы ожидаем, что цена упадет, чтобы покупка имела смысл

«desired_sell_price» — цена, по которой планируется продать купленные монеты (и на которую стоит ордер на автопродажу)

«last_prices» — список из последних 60 цен, обновляемый каждую минуту
И наконец «ALICE», «ARDR» и «BCH» — короткие названия токенов, которые будут использованы для обращения к API Бинанс.

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

Конечно, использовать json файл — не лучшее решение в данной ситуации, но оно было выбрано, чтобы как можно быстрее проверить торговые гипотезы. В планах — поднять рядом с ботом полноценное веб-приложение с API и БД, куда будут записываться все интересующие данные, которые позволят проводить более глубокий анализ.

Файл calculations . py содержит в себе следующие функции и данные:

API_URL = 'https://api3.binance.com/api/v3/avgPrice' 

API ендпоинт, при обращении на который мы узнаем цену интересующей нас криптовалюты.

Также могут использоваться альтернативы:

api . binance . com

api1 . binance . com

api2 . binance . com

Все они предоставляют одну и ту же информацию, так что можете выбрать любой из них.

Функция, которая обращается к бирже и узнает цену интересующей нас криптовалюты:

def get_price(coin: str) -> float: """ :param coin: token name, e.g. BTC for Bitcoin, LTC for Litecoin :return: coin's current price in stable USDT. 1USDT ~ 1$ USA """ data = USDT'> # e.g. BTCUSDT response = requests.get(API_URL, data) return float(response.json()['price'])

Как видите, ничего сложного здесь нет — обычный GET запрос с передачей дополнительных данных о том, какая торговая пара нас интересует. Чтобы функция корректно работала, не забудьте в начале файла импортировать библиотеку requests — import requests.

Следующая функция отвечает за расчет вашей потенциальной прибыли. Здесь тоже нет никакой высшей математики, все рассчитывается по простой формуле: (текущая цена минус цена покупки) умножить на количество ваших монет для данной криптовалюты. Чтобы в сообщениях бота не мешать самому себе избыточной информацией, было добавлено округление до 2 знаков после запятой. Вряд ли кому-то интересны доли центов.

def count_profit(coin: dict, current_price: float) -> float: """ :param coin: e.g.: :param current_price: coin's current price in stable USDT. 1USDT ~ 1$ USA :return: profit in USDT """ # Example: (220 - 200) * 0.5 == 10 return round((current_price - coin['buy_price']) * coin['amount'], 2)

Следующая функция содержит в себе логику, которая была описана ранее, а именно — определение того, насколько упала цена за последний час. Алгоритм работает так: из json файла достаются все цены для конкретной валюты, среди них определяется максимальная цена и сравнивается с текущей ценой (которую, напоминаю, мы узнали обращением к API Бинанса)

def count_price_fall(coin: dict, current_price: float) -> float: """ :param coin: same as in count_profit() :param current_price: same as in count_profit() :return: max diff between last 5 prices and current price, in USDT """ # Example: max([201.4, 205, 203, 211, 222.2]) - 190 == 32.2 try: return max(coin['last_prices']) - current_price except: # may happens if coin['last_prices'] is empty return 0

И, наконец, финальная функция, которая и дает совет «Time to buy», если за последний час снижение цены оказалось равным или больше тому, что было указано в json файле в поле «desired_price_fall»:

def should_i_buy(price_fall: float, desired_fall: float, current_price: float) -> bool: """ :param price_fall: output of count_price_fall() :param desired_fall: desired price fall in PERCENTS! not in USDT. e.g. 10% :param current_price: coin's current price in stable USDT :return: True if you should buy, False otherwise """ # Example: 21 / 200 * 100 == 10.5% and 10.5 >= 10, so -> True if price_fall / current_price * 100 >= desired_fall: return True return False

Как видите, на данном этапе реализации бота, внутренних расчетов и анализа у него не так уж много. Но идей по улучшению и добавлению нового функционала — предостаточно.

Последний файл — cryptobot . py содержит в себе код телеграм бота, который как раз и шлет сообщения о том, что пора покупать, продавать, или пока можно расслабиться и ничего не делать.

Прежде всего, вам необходимо будет написать отцу всех ботов — @BotFather и создать у него своего бота. Не будем дополнительно останавливаться на этой части, так как в интернете море подобных инструкций и вы без проблем сможете зарегистрировать своего бота самостоятельно за пару минут.

Главное, что вам нужно будет получить — это токен, который вы будете использовать в коде.
А также, очевидно — никнейм вашего бота, с которым вы будете общаться в чате Телеграма.

После этого вы сможете вставить свой токен в код бота и он будет выглядеть так:

(импорт всех необходимых функций, модулей и библиотек)

import time import json from telegram.ext import Updater, CommandHandler from calculations import get_price, count_profit, count_price_fall, should_i_buy
TOKEN = '1111111111:sdfklsdjgkljfdglkDSFDGFDGFDkdjskfljdkf'

(главная и единственная функция вашего бота, она же будет командой, которую вы будете отправлять ему в чате Телеграма, чтобы запустить эту адскую машину:)

def make_money(update, context): # (получаете id чата, где бот будет общаться с вами) chat_id = update.effective_chat.id # (бесконечный цикл) while True: # (открываете файл my_cryptocoins.json и читаете из него данные) with open('my_cryptocoins.json', 'r') as my_coins_data: my_coins = json.loads(my_coins_data.read()) # (эта переменная будет содержать в себе тот сообщение, которое бот вам отправит в Телеграме) final_message = [] # (цикл, проходящий по всем токенам, перечисленным в my_cryptocoins.json) for coin_name in my_coins.keys(): coin = my_coins[coin_name] coin_price = get_price(coin_name) possible_profit = count_profit(coin, coin_price) price_fall = count_price_fall(coin, coin_price) last_prices = coin['last_prices'] # (часть кода, отвечающая за работу с ценами, обновляемыми каждую минуту) if len(last_prices) 
# (логика, которая формирует сообщение о том, что пора покупать/продавать/ничего не делать) if coin_price >= coin['desired_sell_price'] and coin['amount'] > 0: message += f' --> TIME TO SELL\n' message += f'possible profit = $' else: if should_i_buy(price_fall, coin['desired_price_fall'], coin_price): message += f' --> TIME TO BUY\n' message += f'price fall = %' else: message += f' --> nothing to do right now. ' # (обратите внимание на time.sleep(2) - если обращаться к API биржи слишком часто - она вас "забанит" на какое-то время. Так что лучше не спамить запросами) final_message.append(message) time.sleep(2) # (после всех операций - записываем обновленные данные в my_cryptocoins.json) with open('my_cryptocoins.json', 'w') as my_coins_data: my_coins_data.write(json.dumps(my_coins, sort_keys=True, indent=2)) # (и наконец, команда, которая отправляет финальное сообщение в чат Телеграма) context.bot.send_message(chat_id=chat_id, text='\n'.join(final_message)) # (бот засыпает на 1 минуту до следующей итерации бесконечного цикла) time.sleep(60) # run every minute # (здесь от вас уже практически ничего не зависит, эта часть кода нужна, чтобы корректно запускать нужную нам функцию при отправке боту соответствующей команды) def main(): updater = Updater(token=TOKEN, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler('make_money', make_money)) updater.start_polling() updater.idle() if __name__ == '__main__': main()

После того, как все 3 файла будут готовы, вам нужно будет установить необходимые для работы бота библиотеки командами:
pip install requests
pip install python-telegram-bot

Затем запустить бота командой python cryptobot . py и наконец написать вашему боту в телеграме команду /make_money

С этого момента бот будет каждую минуту слать вам сообщения с рекомендациями.

Часть 3. Выводы и планы на будущее

В течении последнего месяца бот показал себя довольно неплохо — благодаря его рекомендациям стартовые 600$ инвестиций превратились в 812$, что значительно превышает альтернативные способы заработка (например — обычный банковский вклад или покупку ценных бумаг). Пока экспериментирую на относительно небольших суммах, так как для меня это новая сфера и есть предчувствие, что некоторые подводные камни еще впереди. Как только почувствую больше уверенности в себе и боте — увеличу сумму инвестиций в несколько раз.

Но важно понимать, что криптовалюты — это высокорисковые, хоть и высокоприбыльные инвестиции. Так что рано или поздно стремительный рост рынка закончится и главное — успеть вовремя выйти во что-то более надежное, например в доллар США. Опытные криптоаналитики считают, что следующего серьезного спада следует ждать в конце 2022 года, так что у нас есть около 1.5 лет для заработка.

В текущей реализации бот еще не является полностью автономным и только советует, когда какие действия предпринимать. В следующих версиях я планирую добавить боту возможность самостоятельно осуществлять сделки (API Бинанс это позволяет) и, начав с небольших сумм, посмотреть на его эффективность.

Также в планах поэкспериментировать над максимизацией прибыли, возможно проведя синтетические эксперименты на исторических данных. А именно — проверить, какой будет результат, если покупать, когда цена падает не на 5% в течении часа, а на или наоборот 10+. Аналогично и с продажей — посмотреть, что будет, если ставить на автопродажу не с прибылью 10%, а с меньшей или большей.

И, как я уже писал ранее — также в планах есть разработка веб приложения с API и БД, где будут сохраняться все собираемые ботом данные для более глубокого анализа.

На этом всё, если у вас есть замечания/предложения по коду или интересные истории, связанные с торговлей криптовалютами — оставляйте комментарии.

P.S. Полную версию бота можно скачать здесь. Главное, не забудьте в нужное место вставить токен вашего телеграм бота.

�� Подобається Сподобалось 23

До обраного В обраному 15

Схожі статті
  • Будуємо телеграм чат-бот на Java: від ідеї до деплою. Частина 1
  • Як ми додали українську мову в офіційну документацію Python
  • Базова теорія Python. Керування потоком виконання
  • Чому я обираю FastAPI: основні можливості та переваги фреймворку
  • Перші кроки в NLP: розглядаємо Python-бібліотеку scikit-learn в реальному завданні

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

52 коментарі

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Круто, ми також розробили телеграм бота @WinWinFreeSignalsBot щоб отримувати сигнали з Bybit CopyTrade — детальніше про бота — www.win-win-trade . com/sygnaly-kryptovalyut/top-10-besplatnye-sygnaly-kryptovalyut-telegram-2023-krypto-trejdyng-sygnaly-telegram-besplatno/

Є одна маленька біржа, де угоди між користувачами не є анонімними. Там можна поспостерігати за «війною роботів», буває цікаво )) BTC TRADE UA

Спотовый бот для алгоритмической мультивалютной торговли на бирже Binance, поддерживающий ручную и полностью автоматическую торговлю.

Описание стратегии:
Бот работает по стратегии усреднения. Суть стратегии заключается в снижении средней цены входа в актив путём увеличения веса позиции в случае, если рыночная стоимость актива снижается по отношению к текущей стоимости ордера. Иными словами, при входе в сделку бот, исходя из пользовательских торговых настроек, размещает ордер на продажу с заданным процентом профита, но если стоимость актива падает по отношению к первой покупке, не достигнув ордера на продажу, и опускается ниже заданного значения в %, бот отменяет ордер на продажу, докупает определённое количество монет, которое всегда больше количества монет в предыдущем отменённом ордере, и размещает новую заявку на продажу по цене (новая средняя цена покупки + % желаемой прибыли). Таким образом, при падении рыночной стоимости актива бот постоянно анализирует текущие ордера и рыночные данные, сопоставляя условия настроек торговой стратегии и биржевую активность, и докупает монеты, увеличивая их общий объём и снижая новую цену продажи.

Управлять A-Bot’ом также можно из Telegram-бота, которого вы создали у BotFather’а и добавили в свой канал для уведомлений.

Торговые параметры:
timeout_socket Минимальный тайм-аут между сообщениями стрима, необходимый для медленных машин
name_list [str] — Название текущего пресета настроек (в случае команды -sve сохранится в список настроек с этим именем) (например main)
min_bnb [min >= 0.01] — Минимальный свободный баланс BNB, ниже которого бот будет докупать минимально допустимое количество BNB по рыночной цене для оплаты биржевой комиссии (например 0.03)
min_balance [min >= 0] — Не покупать/усреднять позиции, если свободный баланс составляет меньше заданного % от общего баланса
min_order [min >= 1] — Множитель размера первого ордера на покупку. Стоимость первого ордера будет рассчитываться, как минимальный допустимый размер ордера на бирже * min_order (например 1.2). На USD это 10$, на BTC это 0.0001. Лимиты можно найти здесь
min_price [min >= 0.00000001 USD] — Минимальная рыночная стоимость монеты, эквивалент в USD которой равен рыночному курсу монеты в USD, ниже которого бот не будет открывать новые сделки по этой паре, лишь усреднять, если стоит ордер на продажу (например 0.05)
min_daily_percent [-100 < min < daily_percent < 99999] — Выше какого значения должнен подняться показатель % суточного изменения цены на бирже, чтобы бот осуществил первую покупку по паре (например −20)
daily_percent [-100 < min < 99999] — Ниже какого значения должнен упасть показатель % суточного изменения цены на бирже, чтобы бот осуществил первую покупку по паре (например −3)
auto_daily_percent [y/n] — Вместо daily_percent использовать общую суточную дельту разрешённого списка монет для ограничения максимального процента коридора покупок. Если Y, то бот не будет покупать монеты, выросшие более, чем на Д % из информационной строки в консоли
order_timer [min >= 0] — Интервал паузы между закрытием сделки и новой покупкой по этой же паре в секундах
min_value [min >= 0] — Эквивалент минимального суточного торгового объёма в USD у торговой пары для открытия позиции по ней
sell_up [min > 0] — Желаемый % прибыли от продажи без учёта суточной дельты и трейлинг-стопа (например 1.65)
sell_cut [y/n] — Уменьшать желаемую прибыль на монете по мере роста количества её усреднений. Если Y, то sell_up, применяемый для текущей монеты, будет уменьшаться с каждым новым усреднением
buy_down [min < 0] — На сколько % должна упасть рыночная цена актива по отношению к цене его последней покупки, чтобы бот усреднил позицию (например −5)
max_trade_pairs — Допустимое количество позиций на продажу, которое бот может держать одновременно открытыми (например 20). Если количество открытых ботом ордеров станет равно или больше max_trade_pairs, бот перестанет совершать новые покупки (кроме усреднений)
-1 [-1] — Не ограничивать количество одновременно торгуемых ботом пар
0 [0] — Работать только с уже открытыми ордерами и не совершать новые покупки
1 и более Указать максимальное количество позиций вручную
auto_trade_pairs [y/n] — Разрешить боту автоматически регулировать количество разрешённых пар? Если Y, бот будет автоматически корректировать максимальное количество одновременно торгуемых пар, если предыдущий параметр настроек задан пользователем вручную от 1 до 999
progressive_max_pairs [y/n] — Использовать прогрессивное уменьшение максимального количества пар. Если Y, то количество пар при включенной настройке auto_trade_pairs будет автоматически уменьшаться не только в зависимости от соотношения свободного и общего баланса, но и от количества открытых ордеров и суммарного количества их усреднений
delta_percent [y/n] — Использовать общую рыночную дельту суточной цены? Если Y, суммировать торговые параметры с общей суточной дельтой (направлением рынка) по отобранным парам из белого списка. Данный параметр сделает стратегию более гибкой, позволив удваивать прибыль максимум в 2 раза, но также может уменьшить прибыль вдвое на падающем рынке
delta_deep [y/n] — Использовать глубину падения дельты для определения падения рынка и паузы покупок/усреднений? Если Y, то бот будет блокировать новые покупки и усреднения на падающем рынке до тех пор, пока не произойдёт локальный отскок всего рынка. Определение локального отскока зависит от величины падения самой дельты и выражено в пропорции 1 к 10 (при дельте −5 бот начнёт открывать позиции, когда дельта вырастет до −4.5 и выше)
num_aver [y/n] — Использовать сетку усреднений? Если Y, то при усреднении бот будет увеличивать процент падения цены, необходимый для нового усреднения актива, на buy_down + количество усреднений * step_aver
step_aver [%] — Шаг увеличения сетки. На сколько процентов увеличивать последующую разницу рыночной цены и цены последней покупки для усреднения (например 1.35)
max_aver [min >= 0] — Максимальное количество усреднений на одной монете (например 4)
quantity_aver [min > 0] — Множитель размера усреднения от текущего веса позиции (например 2). Иными словами, при усреднении бот будет покупать текущее количество монет * quantity_aver, тем самым новая позиция будет равна текущее количество монет * quantity_aver + текущее количество монет
progressive_average [y/n] — Использовать прогрессивное усреднение? Если Y, бот будет самостоятельно находить объём для усреднения и делать его таким, чтобы после усреднения средняя цена входа в позицию оказалась не выше %-та average_percent от текущей рыночной цены (то есть цены нового усреднения). Иными словами, после прогрессивного усреднения ордер на продажу будет выше от текущей рыночной цены на average_percent + sell_up % (без учёта остальных динамических настроек по типу delta_percent, влияющих на sell_up)
average_percent [100 > min >= sell_up] — Максимальный желаемый % разницы между рыночной ценой и средней ценой входа в позицию после усреднения (например 7)
trailing_stop [y/n] — Использовать трейлинг-стоп? Если Y, отодвигать цену продажи в зависимости от движения цены актива. С включенным трейлингом позиция не закрывается сразу, а продаётся частями trailing_part на приближенных к максимальным значениям ценам, чтобы увеличить потенциальную прибыль, либо закрывается полностью при падении цены и её приближении к средней цене покупки. Данный параметр сделает стратегию более гибкой, но может уменьшить прибыль
trailing_percent [min > 0] — При каком падении от локального хай-уровня цены активировать трейлинг-стоп для частичной/полной продажи (например 0.25)
trailing_part [0 < min trailing_price [min >= 0.00000001 USD] — Активировать трейлинг-стоп только на активах стоимостью в эквиваленте к USD выше заданного процента. Это позволяет избегать минусовых сделок из-за слишком большого процента спреда монет с низкой стоимостью (например 0.2)
new_listing [y/n] — Открывать позиции по только что добавленным на биржу активам? Если Y, бот будет покупать монеты сразу после их листинга и игнорировать торговые параметры по типу min_value, min_price, daily_percent и прочих, кроме min_balance и double_asset
max_buy_listing [999 >= min>= 0] — Сколько раз бот может вновь открывать позиции по только что добавленному на биржу активу, игнорируя торговые параметры? После преодоления этого значения бот не откроет позицию по данному активу, пока условия на торговой паре не будут соответствовать торговым настройкам (например 5)
user_order [y/n] — Работа с пользовательскими ордерами после ручной покупки. Если Y, то в случае покупки пользователем монеты из разрешённого списка бот автоматически поставит на продажу купленное количество монет и будет работать с этой парой так же, как и в остальных случаях, ориентируясь на торговые настройки. Также уже открытые ордера можно будет усреднять вручную: для этого во время работы бота купить нужное количество монет, после чего бот отменит ордер на продажу, рассчитает новые данные и выставит ордер по новой цене
fiat_currencies [RUB UAH . ] — Если включены уведомления в Telegram, то ежедневная статистика торгов будет рассчитываться в этих валютах вместе с quote_asset
quote_asset [USDT BTC . ] — Котируемые валюты для торговли (то есть те валюты, в паре к КОТОРЫМ торгуются монеты из разрешённого списка (ADA/USDT, ADA/BTC), а не которые торгуются к ним). Приоритет котируемых активов для первоочередной покупки соответствует их расположению (слева направо)
double_asset [y/n] — Если Y, бот сможет покупать одну и ту же монету на нескольких котируемых активах одновременно (ADA/USDT и ADA/BTC)
pump_detector [y/n] — Использовать детектор пампов для открытия позиций? Если Y, бот будет анализировать все монеты из разрешённого списка монет в реальном времени и, в случае обнаружения всплеска объёмов, доминации покупателей и роста цены актива, незамедлительно покупать монету (работает только на боте, запущенном с -pd ключом)
pump_order [min >= 1] — Множитель размера покупки по сигналу детектора пампов (например 2.5)
pump_up [min > 0] — Желаемый % прибыли от продажи позиции, открытой или усреднённой по сигналу детектора пампов, без учёта суточной дельты и трейлинг-стопа (например 0.35)
max_pump_pairs [min >= 0] — Допустимое количество позиций на продажу, открытых по сигналу детектора пампов, которое бот может держать одновременно открытыми (например 10)
trailing_pump [y/n] — Использовать трейлинг-стоп на ордерах, открытых по сигналу детектора пампов? Если Y, то бот будет активировать трейлинг на таких ордерах по параметрам trailing_stop’a

Реальная стата работы бота t.me/stat_a_bott

exodus

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

Розыгрыш �� Crypto Wallet Brute | Становимся Богаче Вмест

Профессиональный подбор паролей к вашим крипто-кошелькам https://bhf.ee/threads/680202/ Железо в данный момент простаивается, так что я готов уделить максимум внимания вашим логам Для регулярных поставщиков особый процент Победитель розыгрыша получит 25$ в ETH

  • Crypto Cracken
  • Тема
  • Четверг в 22:46
  • brute crypto exodus metamask wallet брут
  • Ответы: 0
  • Форум: Розыгрыши

Продам [SOURCE] Sell crypto-wallet parser from Logs. 14 wallets: exodus, phantom, metamask and others

Sell script - Parser Crypto-wallets from Logs. Source code is written in Python, JavaScript. Продам скрипт - парсер криптокошельков из логов. Исходный код написан на Python, JavaScript. Script can search your files for following wallets: 1. https://metamask.io/ (web) - getting seed and.

  • tonny_gram
  • Тема
  • 1 Сен 2023
  • crypto exodus kardiachain metamask paliwallet parser phantom roninchain source code terra tronlink trustwallet
  • Ответы: 2
  • Форум: Продам

Crypto Wallet Recovery Services

  • hashtopass
  • Тема
  • 18 Июн 2023
  • bruteforce exodus hashcat metamask
  • Ответы: 0
  • Форум: Предлагаю услуги

Помогите Нужна папка Exodus из логов для теста

Есть у кого-нибудь папка от кошелька Exodus с известным паролем для получения сидки? Нужна для тестов. Обычно, содержимое папки выглядит так в логах: Дайте линк на скачивание под личный хайд (+ пароль)

  • tonny_gram
  • Тема
  • 27 Апр 2023
  • exodus для из логов нужна папка теста
  • Ответы: 3
  • Форум: Общие вопросы

[#1] Сервис по подбору паролей от MetaMask / Bitcoin Core / Exodus кошельков. [$1,000,000+] [x16 3090]

Сервис по подбору паролей от MetaMask / Bitcoin Core / Exodus кошельков. Почему мы? 1 - Опыт работы в сфере хешкрякинга - 5 лет. 2 - Кластерные мощности - x120 3090, порядка 42 000 000+ проверяемых кандидатов в секунду при работе с MetaMask. 3 - По вашему желанию дополнительно.

  • SpaceXX
  • Тема
  • 23 Мар 2023
  • / bitcoin bitcoin core core exodus metamask ti кошельков от паролей по подбор сервис
  • Ответы: 1
  • Форум: Предлагаю услуги

Чекну ваши логи на кошельки (Exodus/ Atomic) 70/30

Отработаю ваши личные логи на 2 кошеля (Exodus/ Atomic) 70% ваши Отчет по каждому найденному кошелю в ваш ТГ Принимаю логи любого происхождения и давности Беру также и платные облака. Кроме паблика. В логах необходимо наличие папок с кошельками Exodus/ Atomic

  • Feral_KGB
  • Тема
  • 9 Фев 2023
  • atomic exodus ваши кошельки логи на чекну
  • Ответы: 0
  • Форум: Предлагаю услуги

Cold Wallet Brute / Брут Холодных Кошельков

Подбор пароля к холодным кошелькам Работаю (почти) с любыми кошельками Самый низкий процент на форуме - 90% вам вне зависимости от суммы Ищу сотрудничество с большим потоком логов Обязательно наличие passwords.txt Не работаю с паблик логами Извлекаю максимум информации холдера из лога и.

  • gataka
  • Тема
  • 12 Янв 2023
  • brute cold wallet crypo cryptocurrency exodus metamask брут крипта криптовалюта метамаск холодные кошельки
  • Ответы: 1
  • Форум: Предлагаю услуги

Brute Metamask, Exodus, Wallet.dat (Bitcoin, Litecoin, Dogecoin, rar, zip, world, pdf )

Brute Metamask, Exodus, Wallet.dat (Bitcoin, Litecoin, Dogecoin, rar, zip, world, pdf и т.д. ) Берем балансы: -MetaMask от 500$ -Exodus от 1500$ -Wallet.dat от 5 000$ Собственные словари, маски TG: https://t.me/leftyyy_hash @leftyyy_hash Не беру паблик .

  • leftyyy
  • Тема
  • 22 Июл 2022
  • bitcoin brute dogecoin exodus litecoin metamask pdf rar wallet.dat world zip брут бручу сбрутить
  • Ответы: 1
  • Форум: Предлагаю услуги

Exodus

Ребят такой вопрос, я так понял он требует плату за обмен ? просто первый раз с exodusom работаю, а можно как не будь без оплаты газа обменять?

Подбор ненайденных паролей к кошелькам Metamask, Exodus

Приветствую. Мы предоставляем услугу подбора ненайденного пароля к кошелькам Metamask/Exodus Сперва кидаете адрес кошелька, и только после одобрения кидайте сам лог Паблик кошельки не интересуют, облака так-же Используем все методы подбора - начиная масками, словарями и заканчивая своими.

  • ValeriyVodila
  • Тема
  • 17 Май 2022
  • exodus metamask паролей подбор
  • Ответы: 0
  • Форум: Предлагаю услуги

Помогите вопрос по Exodus обмену

решил сделать обмен в Exodus выставил btc на xmr, транзакция подтвердилась по битку на доставку на биржу, но биржа что-то так и не прислала xmr в ответку, крч весит пендинг на транзакцию возможна ли такая ситуация, что кошелек с высоким показателем AML и биржа тупо забрала мои бабки? до этого.

  • Jole
  • Тема
  • 2 Май 2022
  • exodus вопрос какие куда монеты по рубрика
  • Ответы: 13
  • Форум: Общие вопросы

СНЯТИЕ 2FA C КРИПТО-БИРЖ BINANCE, BYBIT И Д.Р

*Апнул кнопкой*

  • Darknesson28
  • Тема
  • 8 Июн 2022
  • electrum exodus metamask phantom ronin бинанс и т.д любые на отработаю холодки
  • Ответы: 1
  • Форум: Предлагаю услуги

Подберу пароль к твоему Exodus backup link

UPD 07.06.2022 - Принимаю Hash Exodus 50/50 UPD 07.06.2022 - Принимаю Hash MetaMask 50/50

  • VORYGA
  • Тема
  • 19 Фев 2022
  • backup exodus link пароль подберу пароль
  • Ответы: 6
  • Форум: Предлагаю услуги

Чекну ваши холодные кошельки (Metamask, Ronin, Brave, BinanceSmartChain и прочие)

Чекну ваши холодные кошельки (Metamask, Ronin, Brave, BinanceSmartChain и прочие) Проверю ваши логи с Metamask на скрытые токены + airdrops + staking + криптоигры (80/20 в вашу сторону) Проверю ваши логи с Phantom на криптоигры и нтф Отработаю холодные кошельки Exodus, Electrum, Atomic.

  • Mig
  • Тема
  • 25 Янв 2022
  • airdrop brave cкрытые токены dogechain exodus hidden tokens jaxx metamask monero ronin stacking ваши кошельки прочие холодные кошельки чекну
  • Ответы: 3
  • Форум: Предлагаю услуги

Обработка Logs на крипту / Подбор-Брут пассов\ / Поиск SeedPhrase\/ Чем старые логи тем слаще

Чекну ваши логи , в больших объёмах . Работаю по : Сид фразы - проверяю все скрытые токены \ снимаю всё что снимается / Все токены, сети, пулы, nft, аирдропы, заблокированные монеты. После проверки \ Ваши логи удаляю \ Не уходят в 3 руки Реализую ваши логи на 100 % \ Принимаю БОЛЬШИЕ Объёмы.

  • Sym
  • Тема
  • 7 Янв 2022
  • / binance exodus logs metamask ronin логи обработка поиск старые старые логи тем
  • Ответы: 4
  • Форум: Предлагаю услуги

Crypto Recovery Service - восстановление доступа к криптовалютным кошелькам

Crypto Recovery Service - восстановление доступа к криптовалютным кошелькам Можем уверить Вас, что мы обладаем самым широким функционалам по обработке криптовалютных кошельков Используем софты собственной разработки, арендуем кластеры с мощным оборудованием Утеряны 1-2 слова из мнемонической.

  • Crypto Recovery
  • Тема
  • 10 Дек 2021
  • bitcoin wallet blockchain btc crypto crypto recovery service exodus wallet.dat
  • Ответы: 2
  • Форум: Предлагаю услуги

Снятие 2FA с криптобирж / Вывод COINBASE [usa]

Что такое coinbase? Крипта очередная?

  • Ghost_Hunter
  • Тема
  • 12 Окт 2021
  • binance coinbase electrum exodus metamask usa wallet dat вывод крипта снятие 2fa
  • Ответы: 5
  • Форум: Предлагаю услуги

Помогите Хакеры увели 7,500$ с Exodus кошелька. Что можно сделать?

Вообщем, сам вопрос в шапке, без рофлов. Что можно вообще сделать? Логи / айпи тех, кто заходил в кошелёк как-нибудь получить можно?

  • SICENECI
  • Тема
  • 25 Июл 2021
  • exodus кошелька можно сделать хакеры что что можно сделать
  • Ответы: 31
  • Форум: Общие вопросы

exodus pc wallet, phrase attack with email access (guarantee cash out method=

https://bhf.io/threads/629649/page-11#post-7097971

  • 010010
  • Тема
  • 19 Июл 2021
  • access attack cash cash out email email access exodus method pc pc wallet phrase wallet with
  • Ответы: 0
  • Форум: Прочее

[20/80%]Обработка ваших Wallet кошельков

Обработка ваших Wallet кошельков 20/80% (В вашу) Самая быстрая обработка Самый высокий процент % Моментальная выплата Полная обработка лога! Беру в обработку: Exodus Electrum Atomic Netbox Jaxx Bitcoin Bitcoin Core и т.д. TG: @DenDevil

  • DenDevil
  • Тема
  • 18 Фев 2021
  • btc exodus wallet кошельки обработка
  • Ответы: 1
  • Форум: Предлагаю услуги

Помогите Open Source soft для вскрытия seed.seco Exodus Wallet

Мужики объясните как работает эта программа? Вроде C#, Python знаю, но не могу разобраться как работает эта программа,постоянно какие- то ошибки выскакивают P.S. Программа расшифровывает seed.seco Exodus Wallet с помощью passphrase Link: https://github.com/ExodusMovement/seco-file

  • totip608133
  • Тема
  • 8 Фев 2021
  • bitcoin blockchain coin crypt decrypt encrypt ethereum exodus hold open open source private key seed soft source trade wallet для
  • Ответы: 10
  • Форум: Помощь

ЗАБУГОР 24k Валид ( EⓍødus T e a m )

Скрытое содержимое Подписываемся мой официальный канал на котором я уведомляю о раздачах: НЕ чекайте базу без прокси или с плохими проксями, вы не дадите коллегам ничего получить убив базу! Пишем в теме ваши находки! Хочешь наконец профита кликай по ссылкам ниже: (ссылки кликабельны)

  • JerryMuller
  • Тема
  • 10 Янв 2021
  • exodus jerrybase jerrymuller
  • Ответы: 3
  • Форум: Базы

Вскрываем ваши wallet.dat - Exodus, Jaxx, Atomic, Coinomi и прочие

Предоставляем услуги по взлому холодных крипто-кошельков В работу берем сам кошелек или хэш совместимый со стандартном john/hashcat Поддерживаемые кошельки : Bitcoin (BitCore совместимые), Electrum, Exodus, Atomic, Jaxx, Monarch, Monero Предоставляем услуги по взлому мнемоников Проверяем.

  • babaioana
  • Тема
  • 10 Окт 2020
  • atomic exodus jaxx
  • Ответы: 1
  • Форум: Предлагаю услуги

Помогите ledger nano s

Привет всем, есть множество сиид фраз с 24 словами , есть ли возможность восстановить без самого устройства, или только с ним?

  • gominers
  • Тема
  • 21 Фев 2020
  • exodus ledger leger nano s trezor
  • Ответы: 2
  • Форум: Общие вопросы

Помогите попался в логе exodus

вообщем 2 файла info.seco и seed.seco так-же в текстовике приват кеи на лайт и бтк загрузил куки пошарил по гмайл почте человек не бедный да и в принципе помню кому впаривал стилак не работал с кошельками может кто поможет объяснит как импортировать и тп пробовал в блокчейне секрет кей но пишет.

  • ASTONMARTI
  • Тема
  • 25 Дек 2019
  • btc data exodus wallet
  • Ответы: 1
  • Форум: Общие вопросы

Вопросы с меткой [bitcoin]

Руководство по использованию метки bitcoin отсутствует.

Конкурсные
Неотвеченные

  • Конкурсные 0
  • Неотвеченные
  • Цитируемые
  • Рейтинг
  • Неотвеченные (мои метки)

17 показов

Как правильно реализовать деревацию ключей BIP32, BIP44 и т.п

Как правильно реализовать деревацию ключей в bip32, bip44 и т.д.? У меня получается правильно с генерировать родительский расширенный ключ, но вот дальше не могу получить правильные ключи они не .

задан 10 авг в 17:54

Как работает атака 51% для Proof of Work Bitcoin?

Разбираюсь в устройстве Биткоина и застрял на моменте атаки 51%. Я понимаю, что цепочка должна быть длиннее, тогда блокчейн примет её, но хотелось бы конкретики, каким образом 51% майнеров отправляет .

задан 10 июл в 22:30
39 показов

Как отправить биткоины на другой кошелек?

подскажите где посмотреть пример или документацию. У меня проект на Laravel мне нужно сделать отправку некой суммы с одного кошелька биткоин на другой что-то не могу понять где искать api и какой .

задан 6 мар в 16:29
88 показов

Как отправить биткоины со всех адресов кошелька

Всем привет! Решил для себя поднять тему с криптовалютой на питоне)) Взял за основу библиотеки bipwallet и bit. Используя этот вот гайд https://habr.com/ru/post/525638/ сгенерил несколько адресов. .

задан 16 янв в 11:27
103 показа

bitcoin адреса. формат

from bitcoinaddress import Wallet wallet = Wallet() print(wallet) Вывод: Private Key HEX: 03902e4f09664bc177fe4e090dcd9906b432b50f15fb6151984475c1c75c35b6 Private Key WIF: .

задан 8 дек 2022 в 12:24
27 показов

Внедрение оплаты криптовалютой. Генерация дочерних адресов криптовалютного кошелька

Есть задача: внедрить оплату биткоином. Я нашёл способ генерации адресов для одного и того же кошелька. И теперь хочу сделать так, чтобы у каждого пользователя был свой адрес, на который он будет .

задан 29 ноя 2022 в 16:20

При попытке установить оплату криптовалютой в телеграм бота ошибка: pip error: python setup.py egg_info did not run successfully

пытаюсь подключить оплату криптовалютой к телеграм боту, пробовал bitcoinlib - вроде работает, но ходят слухи что при 100+ юзерах она ломается, ещё там криво работают ltc кошельки. Пробовал .

задан 22 ноя 2022 в 13:06
138 показов

Pyhton: внедрение оплаты криптовалютой

Посоветуйте, пожалуйста, какой-нибудь API для моих целей. Мне хочется, чтобы у каждого пользователя был свой адрес, на который он будет отправлять крипту для оплаты товара. Так я смогу увидеть, что .

задан 10 ноя 2022 в 13:57
114 показов

NBitcoin Не удаётся создать транзакцию

Следующий код создаёт bitcoin-транзакцию с 1 входом и 1 выходом. Адреса отправителя и получателя совпадают. fundingTx - существующая транзакция с 1 непотраченным выходом, senderAddresses - массив .

задан 13 июл 2022 в 22:54
245 показов

Как проверить хэш транзакции при его отправке в телеграм-бот?

Задача - следующая: Пользователь вписывает хэш транзакции со своего криптокошелька. Пока хэш не будет проверен - бот не отвечает. Если введенная комбинация символов не соответствует стандартам .

задан 16 мая 2022 в 13:00

Реально ли написать свою криптовалюту на Python? [закрыт]

Реально ли если уже есть свой blockchain на Python написать под него Coin (криптовалюту) на Рython?
задан 6 мая 2022 в 15:55

Как правильно добавить значение к существующему тексту innerHTML

Есть такая функция: function RTCurrencies() < fetch('https://api.binance.com/api/v3/avgPrice?symbol=BTCUSDT') .then(a =>a.json() .then(b => document.getElementById("btcusdt").
задан 20 мар 2022 в 16:44
40 показов

Как участники сети блокчейн проверяют валидность приватного ключа? [закрыт]

Извините, если вопрос слишком глупый, но погуглив - я не нашёл на него ответа, надеюсь что вы мне поможете. Я пытаюсь разобраться как работает блокчейн. И узнал вот что. Каждая транзакция содержит в .

user439446
задан 4 фев 2022 в 3:22
259 показов

Узнать баланс биткойн кошелька в C#

В вебе есть куча апи\сайтов, которые показывают баланс на биткойн кошельках. Подскажите пожалуйста, как они это делают? Я пробовал запускать у себя rpc (в тестовом режиме) и с помощью json запроса:
задан 19 янв 2022 в 21:48
36 показов

ЭЦП. Алгоритмы подписания сообщений в блокчейне

В биткоине используется ECDSA алгоритм подписания сообщения. Так же я обнаружил некоторый алгоритм подписания, где приватный ключ представляется 256-ью парами секретных значений, и в зависимости от .

задан 9 янв 2022 в 13:01
15 30 50 на странице

    Важное на Мете

Связанные метки

Подписаться на ленту

Лента новых вопросов с меткой [bitcoin]

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

От нуля до героя: изучение Web3 с помощью Infura и Python

От нуля до героя: изучение Web3 с помощью Infura и Python

Web3, технология блокчейна и криптовалюта – увлекательные темы. Технологии, приложения, экосистема и влияние на общество развиваются с невероятной скоростью. В этой статье мы поговорим об изучении веб-разработки с точки зрения опытного разработчика, который является полным новичком в веб-3.

Мы рассмотрим предварительные условия для разработки web3, используем Python для доступа к блокчейну через Infura, лучший сервис API web3, и рассмотрим простой проект по управлению кошельком.

С чего начать

Несмотря на то, что я программирую с конца 1990-х годов, я действительно новичок в мире web3. Я не эксперт, поэтому не буду пытаться объяснять основы.

Существует множество отличных руководств и руководств по контенту. Я предлагаю начать с документации Infura, которая очень всеобъемлющая и понятная.

Существует также дискорд сообщества, если вы предпочитаете более интерактивный стиль обучения.

В любом случае, давайте начнем с некоторых основ. Нам нужна учетная запись Infura, кошелек для хранения нашей криптовалюты и деньги для игры.

Открытие счета в Infura

Infura — поставщик API-интерфейсов блокчейна и инструментов для разработчиков. Это означает, что если вы хотите получить доступ к блокчейну, вам не нужно запускать узел самостоятельно. Вместо этого вы просто получаете доступ к дружественному API, а Infura делает всю тяжелую работу за вас.

Infura бесплатна и полностью безопасна, так как не хранит ваши закрытые ключи и не имеет возможности изменять ваши транзакции или воспроизводить их несколько раз.

Вы можете открыть здесь аккаунт бесплатно; кредитная карта не требуется.

Создание проекта Infura

В проекте все становится интересно. Каждый проект имеет ключ API, который идентифицирует его и позволяет использовать Infura. Следуйте инструкциям здесь.

Настройка криптокошелька

Следующая часть головоломки — крипто-кошелек. Здесь резина встречается с дорогой. В среде блокчейна криптокошельки содержат балансы, которые полностью контролируются набором цифровых ключей. Не существует такого понятия, как личное владение аккаунтом.

Каждая учетная запись имеет открытый ключ - который виден в блокчейне - и закрытый ключ, который контролирует учетную запись. Тот, кто владеет закрытым ключом, имеет полный контроль над учетной записью. Вы также можете управлять несколькими учетными записями как набором закрытых ключей.

Кошельки предоставляют вам безопасный способ управления вашими учетными записями/личными ключами, а также другие преимущества, такие как удобство, портативность и совместимость.

Infura рекомендует MetaMask. Вы можете установить MetaMask как расширение для браузера.

Отлично, у нас есть криптокошелек. Теперь поговорим о деньгах!

Получение денег

Блокчейн не является бесплатным. Криптоэкономика намного выше моей зарплаты, но, говоря простым языком, каждая транзакция стоит денег. Если вы хотите играть на блокчейне, вам нужны средства. К счастью для разработчиков, существуют тестовые сети, которые позволяют бесплатно получать пробные деньги.

Вы не можете обменять его на реальные деньги, но вы можете использовать его для разработки и тестирования приложений web3.

Кстати говоря, существуют разные типы сетей. Здесь мы сосредоточимся на блокчейне Ethereum.

В этом проекте я использовал тестовую сеть Sepolia. Вы можете получить тестовый ETH от Sepolia, перейдя на сайт крана. (ETH — это собственная криптовалюта Ethereum. Вы используете ее для оплаты транзакций в сети Ethereum. Тестирование ETH необходимо для разработки Ethereum.)

Сайт сборщика может перевести небольшое количество тестовой сети ETH на ваш кошелек. Некоторые сборщики потребуют от вас майнинга, чтобы заработать деньги, а некоторые будут периодически дарить вам деньги. Мне удалось успешно использовать сборщик ConsenSys Sepolia, который выдает 0,5 Sepolia ETH в день на адрес.

ХОРОШО. Мы рассмотрели все основы. Давайте проверим Infura API.

Доступ к Infura API

Infura предоставляет API JSON-RPC через HTTPS (REST) ​​и WebSockets. Он имеет несколько категорий, и вы можете прочитать о них все здесь.

Кроме того, Infura API поддерживает несколько различных сетей. Каждая сеть имеет собственную конечную точку HTTP, которую вы используете в качестве базового URL-адреса при доступе к API.

Вот конечные точки для Ethereum:

Основная сеть
  • JSON-RPC основной сети Ethereum через HTTPS — https://mainnet.infura.io/v3/

* Ethereum Mainnet JSON-RPC через WebSocket — wss://mainnet.infura.io/ws/v3/

Гёрли
  • Тестовая сеть Ethereum Goerli JSON-RPC через HTTPS — https://goerli.infura.io/v3/

* Тестовая сеть Ethereum Goerli JSON-RPC через WebSocket — wss://goerli.infura.io/ws/v3 /

Сеполия
  • Тестовая сеть Ethereum Sepolia JSON-RPC через HTTPS — https://sepolia.infura.io/v3/

* Тестовая сеть Ethereum Sepolia JSON-RPC через WebSocket — wss://sepolia.infura.io/ws/v3 /

Просто чтобы проверить, можем ли мы получить доступ к API, давайте получим баланс нашего кошелька с помощью curl.

Я сохранил ключ API Infura и секрет ключа API в переменных среды, называемых просто:

INFURA_API_KEY и INFURA_API_KEY_SECRET . Я также сохранил открытый ключ кошелька MetaMask в переменной среды с именем SEPOLIA_ACCOUNT .

$ curl --user $INFURA_API_KEY>:$INFURA_API_KEY_SECRET> -X POST -H "Content-Type: application/json" --data '<"jsonrpc":"2.0","method":"eth_getBalance","params":["'"$SEPOLIA_ACCOUNT>"'","latest"],"id":1>' https://sepolia.infura.io/v3/$INFURA_API_KEY> "jsonrpc":"2.0","id":1,"result":"0x1d7e6e62f1523600"> 

Как видите, у меня ОГРОМНЫЙ баланс 0x1d7e6e62f1523600. Но не нужно слишком волноваться; балансовые единицы - Вэй. Один ETH равен 10^18 Wei. Если мы подсчитаем цифры, то увидим, что на моем счету чуть больше 2 ETH. Конечно, это все деньги тестовой сети.

Обратите внимание, что мне не нужно было использовать закрытый ключ моей учетной записи для проверки баланса. Любой желающий может проверить баланс любой учетной записи в блокчейне. Баланс любого счета не является конфиденциальной информацией.

Однако личность учетной записи и лица, владеющего закрытым ключом, является важной и конфиденциальной.

Хорошо… мы повеселились, напрямую обратившись к Infura API. Давайте напишем код.

Разработка Web3 с помощью Python

Экосистема web3 поддерживает множество языков программирования. Доступ к API-интерфейсам Infura можно получить из популярных библиотек на JavaScript (web3.js и ethers.js), Golang (github.com/ethereum/go- Ethereum) и Python (web3.py).

Выберите свое оружие — web3.py

Несмотря на то, что кодирование в настоящее время в основном выполняется на JavaScript/Node.js и Ruby, Python отлично подходит для изучения новой темы. Библиотека web3.py кажется мощной, зрелой и хорошо документированной. Итак, я решил пойти с ним.

Выберите цель — Управление кошельком

Мир web3 может быть ошеломляющим: транзакции, смарт-контракты, IPFS, DAO (децентрализованные автономные организации), defi (децентрализованные финансы) и NFT. Я решил выбрать простую концепцию менеджера кошелька для этого тестового проекта web3.

Менеджер кошелька — это своего рода проект «Hello Web3 World», потому что все, что он делает, — это получает ваш баланс и отправляет деньги на счет назначения. Поскольку я получил свои деньги от сборщика Sepolia, я решил вернуть часть средств. Давайте проверим код.

Децентрализованное приложение Web3-Test

Я использовал Poetry для создания каркаса приложения. README содержит пошаговые инструкции по настройке.

Прежде чем мы углубимся в код, давайте запустим программу и посмотрим, что произойдет:

$ poetry run python main.py balance before transaction: 2.1252574454 send 20,000 gwei to 0xea4d57b2dd421c5bfc893d126ec15bc42b3d0bcd (Sepolia faucet account) balance after transaction: 2.125184945399832 

Как видите, мой баланс изначально был чуть больше 2 ETH тестовой сети. Затем я отправил 20 000 Gwei (что составляет 20 миллиардов Wei) на счет сборщика Sepolia, с которого я получил деньги в первую очередь. Как видите, это почти не повлияло на мой баланс. Это просто показывает, насколько крошечной единицей является Вэй.

Код довольно прост. Есть только один файл с именем main.py . Файл содержит функцию main() и класс WalletManager . Начнем с функции main() , которая является точкой входа в программу.

Функция main() не принимает аргументов командной строки или файлов конфигурации. Все жестко закодировано для простоты. Во-первых, функция создает экземпляр класса WalletManager ; затем он определяет открытый ключ учетной записи сборщика Sepolia.

Теперь приступаем к действию. Функция получает баланс кошелька, вызывая метод get_balance() WalletManager ; затем он передает запрошенный блок ( эфир ) и отображает его на экране.

Затем функция вызывает метод send_eth() для отправки 20 000 Gwei на целевой аккаунт. Наконец, он снова получает и отображает баланс после отправки денег.

def main(): wm = WalletManager() sepolia_faucet_account = wm.w3.toChecksumAddress('0xea4d57b2dd421c5bfc893d126ec15bc42b3d0bcd') balance = str(wm.get_balance('ether')) print(f'balance before transaction: ') print(f'send 20,000 gwei to  (Sepolia faucet account)') wm.send_eth(sepolia_faucet_account, 20000, 'gwei') balance = str(wm.get_balance('ether')) print(f'balance after transaction: ') if __name__ == '__main__': main() 

Давайте рассмотрим класс WalletManager . Он имеет четыре метода:

  1. __init__()
  2. __create_web3_instance()
  3. get_balance()
  4. sent_eth()

Способ 1: __init__()

Давайте рассмотрим их один за другим. Метод __init__() , который является конструктором, сначала вызывает метод __create_web3_instance() и сохраняет результат в переменной с именем w3 .

Затем __init__() извлекает пару переменных окружения и сохраняет их. Он продолжает вычислять пару комиссий за газ (это топливо, на котором работает блокчейн) и вознаграждения, которые получают люди, подтверждающие транзакции.

Он также хранит идентификатор цепочки, который идентифицирует тестовую сеть Sepolia (в данном случае). Этот идентификатор понадобится нам позже при отправке транзакций в тестовую сеть Sepolia.

import base64 import os import web3 class WalletManager: def __init__(self): self.w3 = self.__create_web3_instance() self.account = os.environ['SEPOLIA_ACCOUNT'] self.account_private_key = os.environ['METAMASK_PRIVATE_KEY'] self.max_fee_per_gas = self.w3.toWei('250', 'gwei') self.max_priority_fee_per_gas = self.w3.eth.max_priority_fee self.chain_id = self.w3.eth.chain_id 

Способ 2: __create_web3_instance()

Давайте посмотрим, что происходит внутри метода __create_web3_instance() . __create_web3_instance() — это статический метод, поскольку ему не требуется никакой информации из класса WalletManager .

Он получает ключ API Infura и секрет ключа API из среды, а затем кодирует их в токен базовой аутентификации. Он подготавливает надлежащую конечную точку для нашего проекта в тестовой сети Sepolia, а затем создает экземпляр объекта web3 из библиотеки web3 со всей информацией.

Этот объект позволит нам вызывать Infura API через удобный интерфейс Python (вместо построения запросов JSON-RPC и анализа результатов).

@staticmethod def __create_web3_instance(): infura_api_key = os.environ['INFURA_API_KEY'] infura_api_key_secret = os.environ['INFURA_API_KEY_SECRET'] data = f' : '.encode('ascii') basic_auth_token = base64.b64encode(data).strip().decode('utf-8') infura_sepolia_endpoint = f'https://sepolia.infura.io/v3/ ' headers = dict(Authorization=f'Basic ') return web3.Web3(web3.HTTPProvider(infura_sepolia_endpoint, request_kwargs=dict(headers=headers))) 

Способ 3: get_balance()

Хорошо, следующий метод get_balance() .

Это чрезвычайно простой метод. Он просто вызывает метод w3.eth.get_balance() объекта web3 и передает нашу учетную запись. eth.get_balance() всегда возвращает результат в формате Wei , который часто слишком мал.

Наш метод дает нам возможность преобразовать результат в другое наименование, такое как Gwei или Ether . Он делает это, вызывая метод w3.fromWei() , предоставленный нашим экземпляром web3. Обратите внимание, что нам не нужно было использовать наш закрытый ключ для проверки баланса.

balance = self.w3.eth.get_balance(selpytf.account) if unit != 'wei': return self.w3.fromWei(balance, unit) 

Способ 4: send_eth()

Последним, но не менее важным, является метод send_eth() . Здесь много всего происходит, поэтому давайте разобьем его на несколько блоков.

Сначала send_eth() преобразует сумму для отправки в Wei (при необходимости), а затем получает количество транзакций учетной записи и сохраняет его как одноразовый номер. Одноразовый номер позволяет нам перезаписывать ожидающие транзакции, если это необходимо.

def send_eth(self, target_account, amount, unit='wei'): if unit != 'wei': amount = self.w3.toWei(amount, unit) nonce = self.w3.eth.get_transaction_count(self.account) 

Затем он создает объект транзакции. Наиболее важными полями являются from (учетная запись кошелька), to (получатель транзакции) и value (сколько отправить) . Затем есть поля, которые определяют, сколько газа платить.

(Чем больше газа, тем больше вероятность того, что валидаторы включат транзакцию.) chainId идентифицирует сеть, в которой будет выполняться эта транзакция, и несколько административных полей (пустые данные и тип ).

tx = 'nonce': nonce, 'maxFeePerGas': self.max_fee_per_gas, 'maxPriorityFeePerGas': self.max_priority_fee_per_gas, 'from': self.account, 'to': target_account, 'value': amount, 'data': b'', 'type': 2, 'chainId': self.chain_id> tx['gas'] = self.w3.eth.estimate_gas(tx) 

ХОРОШО. У нас есть транзакция, можем ли мы ее отправить? Не так быстро. Во-первых, нам нужно подписать его нашим закрытым ключом. Это то, что не позволяет другим людям переводить деньги с нашего счета.

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

signed_tx = self.w3.eth.account.sign_transaction(tx, self.account_private_key) 

Теперь мы можем отправить транзакцию как необработанную транзакцию. Это означает, что Infura никогда не увидит наш закрытый ключ и не сможет изменить нашу транзакцию или направить наш перевод на другую учетную запись. Это магия блокчейна в действии.

После отправки транзакции мы получаем хэш-код и ждем завершения транзакции. Если статус результата равен 1, то все хорошо. В противном случае код вызывает исключение.

tx_hash = self.w3.eth.send_raw_transaction(signed_tx.rawTransaction) result = self.w3.eth.wait_for_transaction_receipt(tx_hash) if result['status'] != 1: raise RuntimeError('transaction failed: ') 

Это все, что нужно для простейшего, но безопасного взаимодействия с блокчейном.

Заключение: начните свое путешествие в Web3 с Infura

Погружение с головой в мир web3 может быть пугающим даже для опытного программиста. Мы многому научились; в основном, мы узнали, что нам нужно еще многому научиться!

Infura упростила задачу, предоставив надежный API, отличное руководство и надежную интеграцию с другими компонентами экосистемы, такими как MetaMask и библиотека web3.py.

Если вы находитесь в аналогичном положении и хотите изучить разработку веб-3 - или даже хотите начать карьеру в веб3 - я настоятельно рекомендую начать с Infura. Посмотрите, куда вас приведет путешествие!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar