В процессе работы над интеграцией с API Binance вам предстоит делать тестирование и дебаг своего кода. Для этого подходит публичный тестовый стенд Binance.
Регистрируемся там через свой аккаунт на Github.
Так выгдядит стартовая страница для авторизованного через Github пользователя.
Теперь можем сгенерировать пару ключей для подключения к API.
Первый способ, Generate HMAC_SHA256 Key, предполагает, что Binance сам сгенерирует пару RSA ключей, сохранит у себя публичный ключ и отдаст вам приватный.
Второй способ, Register RSA Key, предполагает, что вы самостоятельно сгенерируете ключи по инструкции из раздела FAQ ниже на той же странице и загрузите Бинансу публичный ключ.
Способ первый: Бинанс генерирует HMAC ключи
Переходим по ссылке Generate HMAC_SHA256 Key, придумываем название ключа и нажимаем Generate.
Получаем публичный ключ (API key), которым Бинанс будет нас идентифицировать, и секретный ключ (Secret Key), которым мы будем подписывать свои сообщения. Обязательно сохраняем оба ключа, никому не показываем и нигде не светим. Даже тестовые.
Теперь возвращаемся на стартовую страницу и видим там наш сгенерированный ключ Spot-monitor-bot. Если ключ был скомпрометирован или вы попросту забыли секретную часть, этот ключ можно отозвать (удалить), нажав Revoke и сгенерировать новый.
Теперь давайте проверим наш новый ключ. Создадим небольшой bash скрипт, который шифрует параметры запроса и делает запрос к /api/v3/account.
Сохраните скрипт в bash файл test.sh и дайте ему права на запуск (chmod a+x test.sh). После запуска этого файла вы увидите похожий ответ:
$ ./test.sh
[GET] api/v3/account?×tamp=1680649738000
{"makerCommission":0,"takerCommission":0,"buyerCommission":0,"sellerCommission":0,"commissionRates":{"maker":"0.00000000","taker":"0.00000000","buyer":"0.00000000","seller":"0.00000000"},"canTrade":true,"canWithdraw":false,"canDeposit":false,"brokered":false,"requireSelfTradePrevention"...
Значит наши API key и подпись прошли проверку.
Способ второй: сами генерируем RSA ключи
На стартовой странице спускаемся в раздел FAQ How can I use RSA API Keys? и запускаем в терминале всего 2 команды. Для генерации приватного RSA ключа:
$ openssl genrsa -out test-prv-key.pem 2048
И для генерации по нему публичного ключа:
$ openssl rsa -in test-prv-key.pem -pubout -outform PEM -out test-pub-key.pem
Копируем содержимое файла с публичным ключем test-pub-key.pem и переходим на страницу добавления RSA ключа https://testnet.binance.vision/key/register. Там придумываем название, вставляем содержимое ключа в форму и жмем Register.
Не забываем скопировать API key так как он отличается для каждого ключа.
Попробуем 2-ой ключ в действии. Создадим похожий bash скрипт test-rsa.sh, который делает то же самое, но на этот раз использует API key от RSA ключа и подпись параметров делается приватным ключем из файла:
Ответ от запуска будет аналогичным.
$ ./test-rsa.sh
[GET] api/v3/account?×tamp=1680651566000
{"makerCommission":0,"takerCommission":0,"buyerCommission":0,"sellerCommission":0,"commissionRates":{"maker":"0.00000000","taker":"0.00000000","buyer":"0.00000000","seller":"0.00000000"},"canTrade":true,"canWithdraw":false,"canDeposit":false,"brokered":false,"requireSelfTradePrevention":false, ...
Вот так мы получили пары ключей для подключения к тестовой сети Binance. Спецификация Binance API находится здесь https://binance-docs.github.io/apidocs/spot/en/#change-log.
Примеры подписи для разных языков программирования можно найти тут https://github.com/binance/binance-signature-examples.