地址 API
地址 API 提供管理加密货币地址、服务钱包和各种区块链网络灰名单的完整功能。
概述
地址 API 允许您:
- 为特定网络和币种创建新地址
- 检索地址信息和余额
- 管理服务钱包(热钱包、冷钱包、代币收集器)
- 处理安全灰名单地址
- 获取不同钱包类型的余额
身份验证
不同的端点需要不同级别的身份验证:
- CLIENT_API_KEY: 用于创建地址和检查余额等基本操作
- ADMIN_API_KEY: 用于管理服务钱包等管理操作
- X-Api-Key: 所有操作的身份验证方法
API Endpoints
POST /v1/addresses
创建地址
为特定网络和币种创建新地址(可选). 如果未提供币种,则将为提供的网络的所有币种生成地址.
Parameters:
network
(string, required) - 网络标识符(例如:bitcoin、ethereum、tron)coin
(string, optional) - 币种标识符(可选,如果未提供 - 为所有网络币种生成)mode
(string, optional) - 地址模式:单一、通用、跨链type
(string, optional) - 地址类型:用户、热钱包、冷钱包、收集器
Responses:
201 Created
- 地址创建成功400 Bad Request
- 无效的请求参数
GET /v1/addresses/
获取地址
返回指定地址及其余额信息.
Parameters:
address
(string, required) - 要检索的加密货币地址
Responses:
200 OK
- 地址信息获取成功400 Bad Request
- 无效的地址格式404 Not Found
- 地址未找到
GET /v1/addresses/hot-wallet/
获取热钱包余额
返回指定网络的提取(热)钱包余额.
Parameters:
network
(string, required) - 网络标识符(例如:bitcoin、ethereum、tron)
Responses:
200 OK
- 热钱包余额获取成功400 Bad Request
- 无效的网络
GET /v1/addresses/service-wallet/
获取服务钱包余额
返回指定网络的服务(代币收集器)钱包余额.
Parameters:
network
(string, required) - 网络标识符(例如:bitcoin、ethereum、tron)
Responses:
200 OK
- 服务钱包余额获取成功400 Bad Request
- 无效的网络
GET /v1/addresses/cold-wallet/
获取冷钱包余额
返回指定网络的冷钱包余额.
Parameters:
network
(string, required) - 网络标识符(例如:bitcoin、ethereum、tron)coin
(string, optional) - 可选的币种参数,用于按特定币种过滤
Responses:
200 OK
- 冷钱包余额获取成功400 Bad Request
- 无效的网络 or coin
POST /v1/addresses/service-wallets
注册服务钱包
为特定网络注册服务钱包. 对于冷钱包,只需提供地址. 对于其他钱包,可以提供地址和私钥, 否则将创建钱包并返回地址和私钥.
Parameters:
network
(string, required) - 网络标识符type
(string, required) - 钱包类型:热钱包、冷钱包、代币收集器address
(string, optional) - 钱包地址(冷钱包必需)privateKey
(string, optional) - 私钥(可选,如果未提供将生成)
Responses:
201 Created
- 服务钱包注册成功400 Bad Request
- 无效的参数
GET /v1/addresses/grey-list
获取灰名单
返回用于安全监控的灰名单地址列表.
Responses:
200 OK
- 灰名单获取成功
POST /v1/addresses/grey-list
注册灰地址
为特定网络注册灰地址以进行安全监控.
Parameters:
network
(string, required) - 网络标识符address
(string, required) - 要添加到灰名单的地址reason
(string, optional) - 灰名单原因
Responses:
201 Created
- 灰地址注册成功400 Bad Request
- 无效的参数
DELETE /v1/addresses/grey-list
删除灰地址
删除特定网络的灰地址.
Parameters:
network
(string, required) - 网络标识符address
(string, required) - 要从灰名单中移除的地址
Responses:
200 OK
- 灰地址删除成功400 Bad Request
- 无效的参数404 Not Found
- 地址未找到 in grey list
Examples
创建地址
bash
curl -X POST "https://cp-merch-dev.wsdemo.online/api/v1/addresses" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "ethereum",
"coin": "eth"
}'
Response:
json
{
"address": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87",
"network": "ethereum",
"coin": "eth",
"type": "user"
}
获取地址信息
bash
curl -X GET "https://cp-merch-dev.wsdemo.online/api/v1/addresses/0x742d35Cc6634C0532925a3b8D4C9db96590c6C87" \
-H "X-Api-Key: YOUR_API_KEY"
Response:
json
{
"address": "0x742d35Cc6634C0532925a3b8D4C9db96590c6C87",
"network": "ethereum",
"balances": [
{
"coin": "eth",
"balance": "1.5",
"symbol": "ETH"
},
{
"coin": "usdt",
"balance": "1000.0",
"symbol": "USDT"
}
]
}
获取热钱包余额
bash
curl -X GET "https://cp-merch-dev.wsdemo.online/api/v1/addresses/hot-wallet/ethereum" \
-H "X-Api-Key: YOUR_API_KEY"
Response:
json
{
"network": "ethereum",
"balances": [
{
"coin": "eth",
"balance": "10.5",
"symbol": "ETH"
},
{
"coin": "usdt",
"balance": "50000.0",
"symbol": "USDT"
}
]
}
注册服务钱包
bash
curl -X POST "https://cp-merch-dev.wsdemo.online/api/v1/addresses/service-wallets" \
-H "X-Api-Key: YOUR_ADMIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "ethereum",
"type": "hot-wallet"
}'
Response:
json
{
"address": "0x123...",
"privateKey": "0xabc...",
"network": "ethereum",
"type": "hot-wallet"
}
获取灰名单
bash
curl -X GET "https://cp-merch-dev.wsdemo.online/api/v1/addresses/grey-list" \
-H "X-Api-Key: YOUR_API_KEY"
Response:
json
[
{
"address": "0x123...",
"network": "ethereum",
"reason": "Suspicious activity",
"createdAt": "2025-01-15T10:30:00Z"
}
]
添加灰地址
bash
curl -X POST "https://cp-merch-dev.wsdemo.online/api/v1/addresses/grey-list" \
-H "X-Api-Key: YOUR_ADMIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "ethereum",
"address": "0x456...",
"reason": "Fraud investigation"
}'
Programming Examples
Python Example
python
import requests
API_BASE = 'https://cp-merch-dev.wsdemo.online/api/v1'
headers = {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
}
# Create new address
payload = {
'network': 'ethereum',
'coin': 'eth'
}
response = requests.post(f'{API_BASE}/addresses', headers=headers, json=payload)
if response.status_code == 201:
address_info = response.json()
print(f"Created address: {address_info['address']}")
# Get address details
address_response = requests.get(f'{API_BASE}/addresses/{address_info["address"]}', headers=headers)
if address_response.status_code == 200:
details = address_response.json()
print(f"Address balances: {details['balances']}")
else:
print(f"Error: {response.status_code}")
JavaScript Example
javascript
const API_BASE = 'https://cp-merch-dev.wsdemo.online/api/v1';
const headers = {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
};
// Create new address
const createAddress = async () => {
try {
const response = await fetch(`${API_BASE}/addresses`, {
method: 'POST',
headers: headers,
body: JSON.stringify({
network: 'ethereum',
coin: 'eth'
})
});
if (response.ok) {
const addressInfo = await response.json();
console.log('Created address:', addressInfo.address);
// Get address details
const detailsResponse = await fetch(`${API_BASE}/addresses/${addressInfo.address}`, {
headers: headers
});
if (detailsResponse.ok) {
const details = await detailsResponse.json();
console.log('Address balances:', details.balances);
}
} else {
console.error('Error:', response.status);
}
} catch (error) {
console.error('Network error:', error);
}
};
createAddress();
Go Example
go
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
const (
APIBase = "https://cp-merch-dev.wsdemo.online/api/v1"
APIKey = "YOUR_API_KEY"
)
type CreateAddressRequest struct {
Network string `json:"network"`
Coin string `json:"coin"`
}
type AddressResponse struct {
Address string `json:"address"`
Network string `json:"network"`
Coin string `json:"coin"`
Type string `json:"type"`
}
func main() {
// Create new address
payload := CreateAddressRequest{
Network: "ethereum",
Coin: "eth",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", APIBase+"/addresses", bytes.NewBuffer(jsonData))
req.Header.Set("X-Api-Key", APIKey)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode == 201 {
var addressInfo AddressResponse
json.Unmarshal(body, &addressInfo)
fmt.Printf("Created address: %s\n", addressInfo.Address)
} else {
fmt.Printf("Error: %d\n", resp.StatusCode)
}
}
Data Structures
Request Types
typescript
interface CreateAddressRequest {
network: string;
coin?: string;
mode?: 'single' | 'universal' | 'cross-chain';
type?: 'user' | 'hot-wallet' | 'cold-wallet' | 'collector';
}
interface ServiceWalletRequest {
network: string;
type: 'hot-wallet' | 'cold-wallet' | 'token-collector';
address?: string;
privateKey?: string;
}
interface GreyListRequest {
network: string;
address: string;
reason?: string;
}
Response Types
typescript
interface AddressInfo {
address: string;
network: string;
coin?: string;
type: string;
balances?: Balance[];
}
interface Balance {
coin: string;
balance: string;
symbol: string;
}
interface ServiceWallet {
address: string;
privateKey?: string;
network: string;
type: string;
}
interface GreyListEntry {
address: string;
network: string;
reason?: string;
createdAt: string;
}