创建 XRP 与 XLM 虚拟账户完整指南(开发者版)

·

为什么要使用虚拟账户

在传统加密钱包的基础上,虚拟账户把链上复杂性与业务层解耦:一条链只需要一个链上“真正”地址(XPUB),其余用户的充值地址全部复用这一地址并依靠 destinationTag(XRP)或 message(XLM)来区分。
这不仅能 显著节省储备资金,还能让交易所或应用在同一链上托管数百万用户资产,而不必为每人冻结几十枚 XRP 或 XLM 作为最小余额。

👉 全面掌握虚拟账户省钱与高效托管的核心实例剖析


一、获取链上主钱包密钥(Master Wallet)

若要创建 XRP 或 XLM 虚拟账户,第一步是生成你的“Master Exchange 地址”——即专用 XPUB,并拿到与之匹配的私钥用来签名。

REST API 调用

curl -X GET https://api.tatum.io/v3/xrp/account \
  -H 'x-api-key: YOUR_KEY'

返回示例:

{
  "address": "rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d", // 作为后续 XPUB
  "secret": "ssKPqjZ9VPg79rEsrHjydRLMM8xgG"        // 签名私钥
}

注意


二、在总账本中创建虚拟账户

虚拟账户相当于账本系统里的“子账本”,它 复用同一个链上地址,但根据 destinationTag 划分不同用户余额。

关键字段释义

字段作用
currency仅限于 XRPXLM
xpub必须复用第一步返回的地址
customer绑定你的应用用户模型
compliant合规标记
accountingCurrency报表时用于换算的法币单位
externalId与你数据库中用户唯一主键对应

REST API 示例

curl -X POST https://api.tatum.io/v3/ledger/account \
  -H 'content-type: application/json' \
  -H 'x-api-key: YOUR_KEY' \
  -d '{
   "currency":"XRP",
   "xpub":"rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d",
   "customer": {
      "accountingCurrency":"USD",
      "customerCountry":"US",
      "externalId":"123654",
      "providerCountry":"US"
   },
   "compliant":false,
   "accountingCurrency":"USD",
   "accountNumber":"123456"
}'

返回:

{
  "currency": "XRP",
  "active": true,
  "balance": {
    "accountBalance": "0",
    "availableBalance": "0"
  },
  "frozen": false,
  "xpub": "rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d",
  "accountingCurrency": "USD",
  "id": "61afba85997b887f543fa7f0"                        // 虚拟账户 ID
}

常见创建误区

xpub 换成其他链上地址会导致 account.xpub.bnb 错误,提示 “仅允许使用 1 个 XPUB”。务必复用同一链上地址。

三、为用户生成充值信息

在虚拟账户内,“存款地址”就是 这组统一的地址。你只需要给每位用户分配一个 独立的 destinationTagmessage 即可运行。

调用

curl -X POST 'https://api.tatum.io/v3/offchain/account/{Virtual_Account_ID}/address?index=1' \
  -H 'x-api-key: YOUR_KEY'

返回解析:

{
  "xpub": "rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d",
  "derivationKey": 1,
  "address": "rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d", // 实际链上地址
  "currency": "XRP",
  "destinationTag": 1                           // 用户专属标签
}

在 UI 或邮件里给用户的提示示例:

请向地址 rDWpnpN3KHUz49WZJpwNe2GQLHeSZ62B1d 转账,并务必在 备注/Tag 字段填写 1,否则可能无法正确到账。

四、典型业务场景示范

假设你运营一个法币-加密兑换平台,新用户 Jane 首次入金 100 XRP:

  1. Jane 注册 → 后端用 externalId=jane123 创建虚拟账户。
  2. 系统分配 destinationTag=1301
  3. Jane 得到提示,把 100 XRP 打到主地址并填写 Tag 1301。
  4. 链上监听器检测到交易 → 确认 Tag 匹配 → 自动把 100 XRP 记到 Jane 的虚拟账户余额。
  5. 如需提现,系统用第一步拿到的私钥签名并广播链上交易。

👉 三步完成用户入账与提现自动化(含 Slides + 示例代码)


FAQ:创建 XRP/XLM 虚拟账户常见疑问

Q1:为什么只能用一个链上地址?
A:XRP 和 XLM 采用 储备金机制,每生成一条独立的新地址需要冻结 10-20 枚代币;交易所若创建十万条地址,就要锁仓数百万枚 XRP,这在成本上不可持续。因此官方推荐用一个地址加 Tag 或 Message。

Q2:如何防止用户填错 destinationTag
A:

Q3:如果我需要扩展更多币种,一样流程吗?
A:BTC、ETH 等没有储备金要求,可以按用户 单线方案 分别生成独立链上地址;XRP/XLM 必须回退到本文的 聚合地址 + Tag 模式

Q4:主钱包私钥一定要冷存储吗?
A:强烈建议。主钱包控制所有用户资产,使用 分离签名服务 / KMS 能有效降低被黑客直连服务器盗取私钥的风险。

Q5:我已有传统交易所架构,能平滑迁移吗?
A:可以。只需将旧钱包系统生成的余额转成创建 usdt, usdt, usdc 等虚拟账户,再为每个老用户 批量生成 destinationTag 并绑定旧 UID,再进行数据迁移即可。


结语

借助 XRP、XLM 虚拟账户 方案,你不仅能 降低链上成本,还能在几分钟内完成千万级用户的后台账户搭建。把握储备机制的好处,合规地复用主地址与唯一 Tag,destination 字段成为区分用户的“身份证号”。掌握本文流程并在生产环境配合 KMS,即可让交易所托管与汇款体验接近传统电汇般丝滑。