Advanced Earn 产品说明
ZTDX Earn 是基于智能合约的链上固定收益理财产品。用户在申购期内申购 USDT,锁仓至到期日后可领取本金和利息。
核心特性
- 代币:USDT(精度 6 位)
- 凭证:ERC-1155 灵魂绑定 NFT(不可转让)
- 收益计算:
利息 = 本金 × (年化利率 / 365) × 锁仓天数
服务地址
| 环境 | REST API |
|---|---|
| 主网 | https://api.ztdx.io |
| 测试网 | https://api-sepolia.ztdx.io |
产品生命周期
Created ──▶ Subscribing ──▶ Active ──▶ Settled ──▶ Ended
│ │
└──▶ Cancelled ◀───────────┘
| 阶段 | 说明 |
|---|---|
created | 产品已创建,尚未开放申购 |
subscribing | 申购期开放,用户可申 购 |
active | 申购结束,产品运行中,本金已锁定 |
settled | 已到期结算,用户可领取本金 + 利息 |
ended | 所有用户已完成领取 |
cancelled | 紧急取消(本金可退) |
状态转换由后台自动调度器触发(每 60 秒轮询一次):
| 触发条件 | 状态变化 |
|---|---|
到达 subscribe_start_time | created → subscribing |
到达 subscribe_end_time | subscribing → active |
到达 settle_time | active → settled |
| 所有用户领取完毕 | settled → ended |
NFT 状态
每笔申购对应一枚灵魂绑定 NFT,生命周期如下:
| 状态 | 说明 |
|---|---|
created | NFT 记录创建(等待链上确认) |
active | NFT 已铸造,产品运行中 |
matured | 产品已结算,可领取 |
redeemed | NFT 已销毁,本息已领取 |
金额精度说明
重要
产品字段(total_quota、min_amount 等)使用 Wei 格式(USDT × 10⁶),申购请求的 amount 使用人类可读 USDT 格式。
| 场景 | 单位 | 示例 |
|---|---|---|
| 产品配额 / 限额字段 | Wei(USDT × 10⁶) | "100000000" = 100 USDT |
年化利率字段(annual_rate) | 百分比字符串 | "900.00%" |
| 利率 bps 字段 | 基点(1% = 100 bps) | 90000 = 900% |
申购请求 amount | 人类可读 USDT | "100" = 100 USDT |
期限字段 duration_seconds | 秒 | 300 = 5 分钟 |
转换示例
// Wei → USDT 显示
const usdtAmount = (weiAmount / 1_000_000).toFixed(2);
// "100000000" → "100.00"
// "500000000" → "500.00"
// bps → 百分比显示
const annualRatePercent = (annual_rate_bps / 100).toFixed(2) + '%';
// 90000 → "900.00%"
// 5000 → "50.00%"
EIP-712 签名
申购需要后端提供 EIP-712 签名,用于链上验证。
Domain Separator:
| 字段 | 值 |
|---|---|
name | ZTDX Earn |
version | 1 |
chainId | 取决于网络(如 Arbitrum Sepolia 为 421614) |
verifyingContract | 理财合约地址 |
Subscribe 结构体:
Subscribe(address user, uint256 productId, uint256 amount, uint256 deadline)
- 签名有效期:30 分钟
- 每个签名只能使用一次(防重放)
公开接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /earn/domain | 获取 EIP-712 域信息 |
| GET | /earn/products | 获取产品列表(支持过滤) |
| GET | /earn/products/:id | 获取产品详情 |
| GET | /earn/performance | 历史收益表现 |
用户接口(需认证)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /earn/subscriptions | 我的申购记录 |
| POST | /earn/subscribe/prepare | 申购准备(获取签名) |
智能合约 ABI
// 申购(需要 EIP-712 签名)
function subscribe(
uint256 productId,
uint256 amount, // Wei 格式
uint256 deadline,
bytes calldata signature
) external;
// 领取本息(到期后)
function claim(uint256 productId) external;
// 紧急退款(产品取消时)
function emergencyClaim(uint256 productId) external;
// 查询用户申购信息
function getSubscription(uint256 productId, address user)
external view
returns (
uint256 amount,
uint256 expectedReturn,
uint256 actualReturn,
uint256 subscribedAt,
bool claimed
);
// 查询产品配置
function getProductConfig(uint256 productId)
external view
returns (
string memory name,
uint256 annualRateBps,
uint256 durationDays,
uint256 totalQuota,
uint256 minAmount,
uint256 maxAmountPerUser
);
// 查询产品时间节点
function getProductTiming(uint256 productId)
external view
returns (
uint256 subscribeStartTime,
uint256 subscribeEndTime,
uint256 settleTime,
uint256 actualSettleTime
);
合约地址(测试网)
| 网络 | 合约 | 地址 |
|---|---|---|
| Arbitrum Sepolia | ZTDX Earn v3 | 0x436dcB8a2478D636a6cC678AE7A2E4c5449cB3ba |
| Arbitrum Sepolia | USDT | 0xb8486A01a7EaAB9e34553E7B323C9C1FAE1fA7B6 |
注意事项
- 链上事件监听轮询间隔约 12 秒,申购记录可能有 12–30 秒延迟
- 理财 NFT 为 ERC-1155 灵魂绑定类型,不可转让、不可授权他人使用
- 领取后 NFT 自动销毁(
redeemed状态)