Найти тему
Записки Бакулина

Подключение к тестовой сети Bybit по API

Оглавление

Любая интеграция со сторонним сервисом начинается с документации к API, получения ключей доступа и первыъ элементарных запросов к API на тестовом окружении. В этой статье пройдем первый шаг интеграции с биржей Bybit. Тестовое окружение этой биржи можно найти тут https://testnet.bybit.com/.

Проходим регистрацию и заходим в личный кадинет https://testnet.bybit.com/app/user/api-management для создания ключей API.

Если вы только. зарегистрировались, придется включить 2х факторную аутентификацию. Идем в личный кабинет https://testnet.bybit.com/app/user/security и подключаем.

На странице ключей нажимаем "Создать новый ключ" и получаем предложение выбрать, каким способом создать ключ:

-2

  • API ключи, созданные системой (генерирует ByBit)
  • Ключи API, сгенерированные самостоятельно (генерируем самостоятельно)

Способ первый: API ключи, созданные системой

Самый простой и быстрый способ, не покидая сайта. Подходящий вариант для использования в тестовой сети и просто "поиграться с API".

ByBit поясняет как это работает:

API ключ, который генерирует система Bybit, работает на базе механизма HMAC. Вы получите пару ключей — публичный и приватный. Это пароли. Храните их в безопасности.

Нажимаем вариант API ключи, созданные системой и попадаем на страницу https://testnet.bybit.com/app/user/add-secret-key?type=system.

Выбираем параметры ключа. Оставляем вариант использования ключа "Транзакция API". Придумываем название. В секции "Разрешения API ключа" меняем на "Чтение и запись", ограничени по IP оставляем "Нет ограничений по IP" и выбираем все типы разрешений (кроме Вывода монет, он не совместим с неограниченным количеством IP)

-3
-4

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

-5

Получаем пару ключей:

  • API ключ - это идентификатор нашего ключа
  • API секрет - секретная HMAC ключ

Сохраняем их и никому не показываем.

Проверка системного HMAC ключа

Для проверки системного ключа попробуем сделать curl запрос.

Открываем документацию к API последней версии. На данный момент это v5 https://bybit-exchange.github.io/docs/v5/intro.

-6

Видим, что надо подключаться к тестовой сети по адресу https://api-testnet.bybit.com.

  • Testnet:
    https://api-testnet.bybit.com
  • Mainnet (both endpoints are available):
    https://api.bybit.com
    https://api.bytick.com

Ниже находим инструкцию, что для аутентификации надо передавать следующие заголовки:

  • X-BAPI-API-KEY - API ключ
  • X-BAPI-TIMESTAMP - временная метка в UTC в милисекундах
  • X-BAPI-SIGN - подпись параметров сделанная секретным HMAC ключем.
  • X-BAPI-RECV-WINDOW - время жизни сессии, рекомендуется 5000 мс
-7

Самое важное, это понять как подписывать сообщение, какие параметры и как надо объединить для шифрования секретным ключем. Ниже на странице видим инструкцию, пример генерации подписи и пример запроса:

-8

Правило построения сообщения для подписи такое:

<timestamp><api_key><recv_window><queryString>

  • timestamp - временная метка в UTC в милисекундах
  • api_key - API ключ
  • recv_window - время жизни сессии, по умолчанию 5000 мс
  • queryString - параметры самого запроса; для GET-параметры URL запроса; для POST - json тело запроса, в том же формате, который передается в запросе.

Если возникли трудности, можете подсмотреть примеры генерации подписи на разных языках от разработчиков ByBit https://github.com/bybit-exchange/api-usage-examples. К сожалению, примеры только на API v3, но способ шифрования подписи одинаковый и подходит для v5.

Попробуем получить BTC баланс аккаунта сделав GET запрос к /v5/account/wallet-balance

bash для проверки HMAC_SHA256 ключей для Bybit Testnet

Скопируйте этот bash скрипт в файл test-bybit-system.sh, вставьте туда ваши "API ключ" и "API секрет" в API_KEY и SECRET соответственно. Сохраните файл и дайте права на выполнение.

Запускаем наш скрипт и должны получить подобный ответ в случае успеха:

$ ./test-bybit-system.sh
[GET] v5/account/wallet-balance?accountType=SPOT&coin=BTC

{"retCode":0,"retMsg":"OK","result":{"list":[{"accountType":"SPOT","accountIMRate":"","accountMMRate":"","accountLTV":"","totalEquity":"","totalWalletBalance":"","totalMarginBalance":"","totalAvailableBalance":"","totalPerpUPL":"","totalInitialMargin":"","totalMaintenanceMargin":"","coin":[]}]},"retExtInfo":{},"time":1680818525265}

Мой баланс спотового BTC кошелька на нуле, как видно.

Если же ответ получили подобный:

$ ./test-bybit-system.sh
[GET] v5/account/wallet-balance?accountType=SPOT&coin=BTC

{"retCode":10004,"retMsg":"Signature for this request is not valid.","result":{},"retExtInfo":{},"time":1680818279398}

то внимательно проверьте способ создания строки для подписи, передаете ли все необходимые заголовки в запросе и сравните с примерами от разработчиков ByBit https://github.com/bybit-exchange/api-usage-examples.

Способ второй: API ключи, сгенерированные самостоятельно

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

Самогенерируемые API-ключи работают с RSA-шифрованием. Вы должны создать ваши публичные и приватные ключи с помощью программного обеспечения, и только после этого предоставить ваш публичный ключ Bybit. Мы не храним ваш приватный ключ ни при каких обстоятельствах. В настоящее время поддерживается API v3 и v5.

Выбираем Ключи API, сгенерированные самостоятельно.

-9

Для этого способа запускаем в терминале всего 2 команды для генерации приватного RSA ключа:

$ openssl genrsa -out test-bybit-prv.pem 2048

И для генерации по нему публичного ключа:

$ openssl rsa -in test-bybit-prv.pem -pubout -outform PEM -out test-bybit-pub.pem

После этого у нас в дериктории должно лежать 2 файла:

  • test-bybit-prv.pem - секретный RSA ключ в 2048 бит
  • test-bybit-pub.pem - публичный ключ, для проверки подписи

Копируем содержимое файла test-bybit-pub.pem.

Возврщаемся на страницу добавления RSA ключа https://testnet.bybit.com/app/user/add-secret-key?type=auto.

Выбираем параметры ключа. Оставляем вариант использования ключа "Транзакция API". Придумываем название. В поле "Ваш публичный ключ" вставляем сожержимое файла test-bybit-pub.pem.

В секции "Разрешения API ключа" меняем на "Чтение и запись", ограничени по IP оставляем "Нет ограничений по IP" и выбираем все типы разрешений (кроме Вывода монет, он не совместим с неограниченным количеством IP)

-10

Нажимаем Отправить, заверяем 2FA кодом и получаем API ключ для нашего публичного RSA ключа с необходимыми параметрами доступа.

-11

Сохраняем его для использования в запросах.

Проверка сгенерированного RSA ключа

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

Скопируйте себе файл test-bybit-generated.sh

bash для проверки RSA ключей для Bybit Testnet

вставьте туда ваш "API ключ" в переменную API_KEY. Сохраните файл и дайте права на выполнение.

Запускаем наш скрипт и должны получить подобный ответ в случае успеха:

$ ./test-bybit-system.sh
[GET] v5/account/wallet-balance?accountType=SPOT&coin=BTC

{"retCode":0,"retMsg":"OK","result":{"list":[{"accountType":"SPOT","accountIMRate":"","accountMMRate":"","accountLTV":"","totalEquity":"","totalWalletBalance":"","totalMarginBalance":"","totalAvailableBalance":"","totalPerpUPL":"","totalInitialMargin":"","totalMaintenanceMargin":"","coin":[]}]},"retExtInfo":{},"time":1680818525265}

Вот и всё. Мы смогли создать ключи для интеграции с API биржы Bybit и проверили их работоспособность.

-12

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