跳到主要内容

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_timecreatedsubscribing
到达 subscribe_end_timesubscribingactive
到达 settle_timeactivesettled
所有用户领取完毕settledended

NFT 状态

每笔申购对应一枚灵魂绑定 NFT,生命周期如下:

状态说明
createdNFT 记录创建(等待链上确认)
activeNFT 已铸造,产品运行中
matured产品已结算,可领取
redeemedNFT 已销毁,本息已领取

金额精度说明

重要

产品字段(total_quotamin_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_seconds300 = 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:

字段
nameZTDX Earn
version1
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 SepoliaZTDX Earn v30x436dcB8a2478D636a6cC678AE7A2E4c5449cB3ba
Arbitrum SepoliaUSDT0xb8486A01a7EaAB9e34553E7B323C9C1FAE1fA7B6

注意事项

  • 链上事件监听轮询间隔约 12 秒,申购记录可能有 12–30 秒延迟
  • 理财 NFT 为 ERC-1155 灵魂绑定类型,不可转让、不可授权他人使用
  • 领取后 NFT 自动销毁(redeemed 状态)