📅  最后修改于: 2023-12-03 14:40:09.165000             🧑  作者: Mango
Coinbase Pro 是 Coinbase 公司运营的数字货币交易所,提供了 WebSocket、REST 等多种 API 接口。其中,REST API 可以使用 HTTP(S) 请求方式与交易所通信,但需要使用签名来保证安全性。
本文将介绍 Coinbase Pro API 的签名方式及示例代码。
Coinbase Pro API 使用的签名方式是使用请求参数在服务器端生成的 HMAC-SHA256 摘要。具体步骤如下:
将请求参数按键名排序(字典序)。
将排序后的键值对以 key=value 的形式拼成一个字符串。
在字符串前面添加 HTTP 请求方式及请求路径(不包含主机名)。
在字符串后面添加 Unix 时间戳(秒),注意要使用整型,不要使用浮点型。
使用 Coinbase Pro API 密钥的 Secret 对上一步生成的字符串进行 HMAC-SHA256 摘要。摘要的结果即为签名(signature)。
在请求头(HTTP Header)中添加以下四项:
以下是一个 Python 3.x 版本的 Coinbase Pro API 签名示例代码。
import hmac
import hashlib
import time
import base64
import requests
# Coinbase Pro API 密钥
API_KEY = 'your_api_key'
API_SECRET = 'your_api_secret'
API_PASSPHRASE = 'your_api_passphrase'
# 请求地址和请求参数
url = 'https://api.pro.coinbase.com/accounts'
params = {'currency': 'BTC', 'limit': 10}
# 构造请求头
timestamp = str(int(time.time()))
message = timestamp + 'GET' + '/accounts'
encoded_secret = base64.b64decode(API_SECRET)
signature = hmac.new(encoded_secret, message.encode('ascii'), hashlib.sha256).digest()
signature_b64 = base64.b64encode(signature).decode('utf-8').rstrip('\n')
headers = {
'CB-ACCESS-KEY': API_KEY,
'CB-ACCESS-SIGN': signature_b64,
'CB-ACCESS-TIMESTAMP': timestamp,
'CB-ACCESS-PASSPHRASE': API_PASSPHRASE,
}
# 发送请求
response = requests.get(url, headers=headers, params=params)
print(response.json())
该例子演示了如何使用 Coinbase Pro API 的 REST 接口获取当前用户的 BTC 账户信息,其中: