ZTDX API 文档
欢迎使用 ZTDX API 文档!ZTDX 是一个去中心化的永续合约交易平台,采用链上结算 + 链下撮合的混合架构,提供高性能、低成本、透明公开的加密货币衍生品交易服务。
核心特性
🔒 安全可靠
- ✅ EIP-712 签名验证:标准化的结构化签名,钱包友好
- ✅ 链上资金托管:所有资金由智能合约管理,用户完全掌控
- ✅ 透明清算:清算和ADL机制完全公开透明
⚡ 高性能
- ✅ 内存撮合引擎:毫秒级订单匹配
- ✅ 自动做市商:确保市价单流动性
- ✅ WebSocket推送:实时行情和订单更新
💰 低成本
- ✅ 智能保证金计算:平仓订单几乎免保证金
- ✅ Arbitrum网络:低gas费,快速确认
- ✅ 竞争性手续费:Maker/Taker 费率优惠
🎁 丰富功能
- ✅ 止盈止损:支持触发订单、追踪止损
- ✅ 推荐返佣:5级返佣制度,最高30%
- ✅ ADL机制:自动减仓保护系统稳定性
- ✅ 保险基金:覆盖清算损失
基本信息
| 项目 | 内容 |
|---|---|
| REST Base URL | https://api.renance.xyz |
| WebSocket Base URL | wss://ws.ztdx.io |
| 响应格式 | JSON |
| 认证方式 | EIP-712 + JWT Token |
| 网络 | Arbitrum One / Arbitrum Sepolia |
| 抵押品 | USDT |
认证机制
ZTDX 使用 EIP-712 结构化签名进行身份验证,这是以太坊生态的标准签名方式。
登录流程
sequenceDiagram
participant User
participant API
participant Blockchain
User->>API: 1. GET /auth/nonce/:address
API-->>User: 返回 nonce 和 typed_data
User->>User: 2. 使用钱包签名 typed_data
User->>API: 3. POST /auth/login (signature)
API->>API: 验证 EIP-712 签名
API-->>User: 返回 JWT Token
User->>API: 4. 后续请求携带 JWT Token
快速开始示例
JavaScript (ethers.js v6)
import { BrowserProvider } from 'ethers';
// 1. 获取 nonce
const response = await fetch(`/api/v1/auth/nonce/${address}`);
const { nonce, typed_data } = await response.json();
// 2. 使用钱包签名 EIP-712
const provider = new BrowserProvider(window.ethereum);
const signer = await provider.getSigner();
const signature = await signer.signTypedData(
typed_data.domain,
{ Login: typed_data.types.Login },
typed_data.message
);
// 3. 登录获取 JWT
const loginResp = await fetch('/api/v1/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
address: address.toLowerCase(),
signature,
timestamp: parseInt(typed_data.message.timestamp)
})
});
const { token } = await loginResp.json();
localStorage.setItem('jwt_token', token);
// 4. 使用 JWT 调用其他接口
const balances = await fetch('/api/v1/account/balances', {
headers: { 'Authorization': `Bearer ${token}` }
});
Python
from eth_account import Account
from eth_account.messages import encode_typed_data
import requests
# 1. 获取 nonce
response = requests.get(f"/api/v1/auth/nonce/{address}")
data = response.json()
typed_data = data["typed_data"]
# 2. 签名
signable_message = encode_typed_data(full_message=typed_data)
signed = Account.sign_message(signable_message, private_key=private_key)
# 3. 登录
login_resp = requests.post(
"/api/v1/auth/login",
json={
"address": address.lower(),
"signature": signed.signature.hex(),
"timestamp": int(typed_data["message"]["timestamp"])
}
)
token = login_resp.json()["token"]
# 4. 使用 JWT
headers = { 'Authorization': f'Bearer {token}' }
balances = requests.get("/api/v1/account/balances", headers=headers)
详见 身份验证文档。