Конечные точки входа в Coinbase Pro и Sandbox

Я использую Spring 5 и Java 8, чтобы создать приложение для использования Coinbase Pro, чтобы совершать сделки для себя и других. У меня есть файл coinbase.properties со следующими свойствами:

authorize.url=https://www.coinbase.com/oauth/authorize
access.url=http://www.coinbase.com/oauth/token
token.url=https://api.coinbase.com/oauth/token
current.user.url=https://api.coinbase.com/v2/user

Я могу вызвать страницу авторизации для Coinbase, и пользователь разрешит авторизацию. После авторизации он возвращается на мою страницу обратного вызова с кодом и состоянием, которое я изначально отправил. Я могу использовать этот код для создания access_token и refresh_token. Я сохраняю этот refresh_token в базе данных, потому что знаю, что access_token действителен только в течение 2 часов, и если я хочу что-то сделать снова, я могу использовать refresh_token, чтобы получить новый access_token и новый refresh_token ... все в порядке.

Итак, как видите, я использую Oauth2 для аутентификации в Coinbase. Я могу использовать user.url, чтобы получить информацию о пользователе, передающем идентификатор пользователя. Конечно, я также должен передать access_token:

 header:  Authorization:  Bearer {access_token}

Итак, первый вопрос ... могу ли я использовать этот механизм OAuth для Coinbase Pro и Coinbase Pro Sandbox, чтобы совершать сделки для себя и других ??? При поиске Coinbase Pro я увидел только ссылку REST API:

https://api.pro.coinbase.com      (not interested in the FIX link)

Я предполагаю, что мне придется изменить свои свойства на:

authorize.url=https://www.coinbase.com/oauth/authorize
access.url=http://www.coinbase.com/oauth/token
token.url=https://api.pro.coinbase.com/oauth/token
current.user.url=https://api.pro.coinbase.com/v2/user
order.url=https://api.pro.coinbase.com/orders

В документации Coinbase Pro REST API для / orders говорится о ключе API и подписи сообщения. Но это похоже на то, что я торгую только на себя. Если я совершаю сделки для других, то я использую Oauth2, который, безусловно, мне подходит.

Я тестирую функциональность ордеров на продажу / обмен и могу использовать для этого Sandbox. Sandbox немного отличается, там у нас есть базовая конечная точка и конечная точка REST api:

# https://public.sandbox.pro.coinbase.com/
# https://api-public.sandbox.pro.coinbase.com

В этом случае, если я использую Oauth2 для аутентификации, я ожидаю следующего:

authorize.url=https://public.sandbox.pro.coinbase.com/oauth/authorize
access.url=https://public.sandbox.pro.coinbase.com/oauth/token
token.url=https://api-public.sandbox.pro.coinbase.com/oauth/token
current.user.url=https://api-public.sandbox.pro.coinbase.com/v2/user
order.url=https://api-public.sandbox.pro.coinbase.com/orders

Таким образом, я использую аутентификацию Oauth2 с песочницей Coinbase Pro. Таким образом, я могу использовать access_token для совершения сделок для себя и других. Я смотрю документацию по Coinbase Pro, и когда дело доходит до оформления заказов. Я предполагаю, что мне также нужно добавить заголовок для носителя «Аутентификация» {access_token}

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

Спасибо!


person tjholmes66    schedule 16.12.2019    source источник


Ответы (1)


После долгих исследований и «проб и ошибок» я обнаружил, что Coinbase (стандартная) использует Oauth2, что означает, что мы можем использовать этот безопасный механизм для совершения сделок для других. Тем не менее, это стоит больше за сделку, и вы не получите подробные сведения о сделке, которые были бы в Coinbase Pro.

Coinbase Pro технически совершенно другое животное, чем то, что говорят на любом веб-сайте. Coinbase Pro НЕ использует Oauth2 ни в каком виде. У него нет механизма, позволяющего кому-то торговать от имени другого. Он использует ключ API, который позволяет вам создать кодовую фразу, у вас есть секретный ключ и открытый ключ, которые вы можете использовать для создания ботов, которые будут торговать для вас и только для вас.

Это означает, что любой веб-сайт, такой как CryptoHopper, заставит вас ввести секретную информацию о вашем API-ключе на свой сайт, что является крайне плохой идеей. Поскольку пользователь вводит свои ключи в эту систему, CryptoHopper может использовать эти ключи для заключения сделок за вас. Однако безопасность - большая проблема. Я надеюсь, что CryptoHopper дважды зашифрует эти данные на случай, если их данные будут скомпрометированы.

Это отвечает на мой вопрос о том, что Coinbase имеет набор стандартных API-интерфейсов Oauth2 REST, которые делают его безопасным для торговли с использованием токенов доступа и обновления.

Coinbase Pro имеет собственную конечную точку для REST: https://api.pro.coinbase.com. в Coinbase Pro, и вы можете создать там свои ключи API.

Coinbase Pro SANDBOX имеет собственную конечную точку для REST:
https://api-public.sandbox.pro.coinbase.com

И веб-сайт: https://public.sandbox.pro.coinbase.com После входа на этот сайт вы увидите фиктивные банковские счета и можете создать ключи API «песочницы», чтобы совершать сделки с этой фиктивной системой.

Моя ошибка заключалась в том, что Coinbase Pro, песочница или нет, имела какое-либо отношение к Oauth2.

Надеюсь, это поможет кому-то другому.

person tjholmes66    schedule 03.01.2020