Skip to content

靓号

用户可以在引导流程中购买自定义 alias ID(例如 888crypto)。靓号使用加密货币支付。

搜索靓号

typescript
// 获取精选靓号
const featured = await client.vanity.search();

// 按前缀搜索
const results = await client.vanity.search('888');

每个结果:

typescript
interface VanityItem {
  alias_id: string;      // 例如 "888"
  price_usdt: number;    // 例如 50
  tier: string;          // 'top' | 'premium' | 'standard'
  is_featured: boolean;
}

购买流程

重要:靓号只能在引导流程中购买(注册后、进入主界面前)。一旦用户进入主界面,靓号购买将永久不可用。

typescript
// 1. 创建支付订单
const order = await client.vanity.purchase('888');
// order.order_id     → "ord_abc123"
// order.price_usdt   → 50
// order.payment_url  → "https://nowpayments.io/payment/..."
// order.expired_at   → "2024-01-01T00:15:00Z"

// 2. 引导用户到支付页面或显示二维码
window.open(order.payment_url);

// 3. 监听区块链确认
const unsubscribe = client.vanity.onPaymentConfirmed(async (event) => {
  // event.order_id → "ord_abc123"
  // event.ref_id   → "888"(靓号 ID)

  // 4. 将靓号绑定到账号
  const { alias_id } = await client.vanity.bind(event.order_id);
  console.log('新别名:', alias_id); // "888"
});

支付确认

支付由 pay-worker 服务通过监控区块链自动确认。确认结果通过 WebSocket 推送到客户端:

typescript
client.vanity.onPaymentConfirmed((event) => {
  // event.type      → "payment_confirmed"
  // event.order_id  → 已支付的订单
  // event.ref_id    → 靓号 alias_id
});

返回取消订阅函数,适用于 React 清理:

typescript
useEffect(() => {
  return client.vanity.onPaymentConfirmed(handleConfirm);
}, []);

绑定

支付确认后,调用 bind() 永久分配靓号:

typescript
const { alias_id } = await client.vanity.bind(orderId);

这是一次性的、不可逆的操作。原始的 u12345678 别名将被替换。

重要说明

  • 靓号是每个账号一个永久绑定 — 不能更改、不能转让
  • 价格由服务器根据稀有度规则计算
  • 支付超时:每个订单 15 分钟(CAS 锁定)
  • 如果有人先购买了同一个 ID,purchase() 会抛出 409 错误

Zero-Knowledge E2EE Protocol — Decentralized Communication