Skip to content

资产与网络 ​

网络(networkKey)与资产(assetId)由平台统一配置,并按租户开通。请不要硬编码资产精度、最小额与手续费,启动时及定期(例如每 5 分钟)从本页接口拉取。

网络列表 ​

http
GET /v1/networks

返回本租户已开通的网络。

响应 200 OK

json
[
  { "networkKey": "ethereum", "chainFamily": "EVM", "displayName": "Ethereum", "isTestnet": false, "enabled": true },
  { "networkKey": "bsc", "chainFamily": "EVM", "displayName": "BNB Chain", "isTestnet": false, "enabled": true },
  { "networkKey": "tron", "chainFamily": "TRON", "displayName": "TRON", "isTestnet": false, "enabled": true }
]
字段类型说明
networkKeystring网络标识,用于 deposit_address 等接口(上例取值仅为示例)
chainFamilystringEVM / TRON / BTC / SOL。同一链族的网络共用钱包与地址
displayNamestring展示名称
isTestnetboolean是否测试网
enabledboolean恒为 true(只返回已开通的网络)

支持的资产 ​

http
GET /v1/supported_assets

返回本租户可见的全部资产(已开通网络上、状态为 ENABLED 或 DEPOSIT_PAUSED、未被租户隐藏),以及本租户当前生效的充值费与提现费。

响应 200 OK

json
[
  {
    "assetId": "USDT_ERC20",
    "networkKey": "ethereum",
    "chainFamily": "EVM",
    "kind": "TOKEN",
    "contract": "0xdac17f958d2ee523a2206206994597c13d831ec7",
    "tokenProgram": null,
    "symbol": "USDT",
    "name": "Tether USD",
    "decimals": 6,
    "status": "ENABLED",
    "withdrawEnabled": true,
    "minDeposit": "1000000",
    "minWithdraw": "10000000",
    "withdrawFeeFloor": "1000000",
    "depositFeeFloor": "0",
    "singleLimitCap": null,
    "dailyLimitCap": null,
    "iconUrl": null,
    "networkWithdrawEnabled": true,
    "networkDepositEnabled": true,
    "depositFeeRaw": "500000",
    "withdrawFeeRaw": "2500000"
  }
]
字段类型说明
assetIdstring资产 ID
networkKeystring所在网络
chainFamilystring所在链族
kindstringNATIVE(原生币)或 TOKEN(合约代币)
contractstring | null代币合约地址(TRON 为 Base58,SOL 为 mint);原生币为 null
tokenProgramstring | null仅 SOL 代币:Token Program ID
symbol / namestring符号 / 名称
decimalsinteger精度,金额换算用
statusstringENABLED:正常;DEPOSIT_PAUSED:暂停充值(到账转人工处理,不自动入账)
withdrawEnabledboolean资产是否允许提现
networkWithdrawEnabled / networkDepositEnabledboolean网络级提现 / 充值开关
minDepositstring(最小单位)最小充值额,低于此金额的充值不自动入账
minWithdrawstring(最小单位)最小提现额(仅链上提现校验)
withdrawFeeFloor / depositFeeFloorstring(最小单位)平台默认手续费(保留历史字段名;租户可自行覆盖)
singleLimitCap / dailyLimitCapstring | null平台默认单笔 / 每日限额(null = 不限);已配置租户使用自己的限额,允许高于默认值,显式 null 表示不限额
iconUrlstring | null图标地址
depositFeeRawstring(最小单位)当前生效的充值手续费,入账时从充值金额中扣除
withdrawFeeRawstring(最小单位)当前生效的链上提现手续费,从用户余额中额外扣除

minDeposit、minWithdraw 等字段同样是最小单位字符串,只是字段名没有 Raw 后缀。

可以发起链上提现的条件:status = "ENABLED" 且 withdrawEnabled = true 且 networkWithdrawEnabled = true,否则返回 422 ASSET_DISABLED。

手续费如何计算 ​

  • 提现手续费 = max(租户提现费(未配置时用平台默认 withdrawFeeFloor),动态下限)。
  • 充值手续费 = max(租户充值费(未配置时用平台默认 depositFeeFloor),动态下限)。
  • 动态下限:平台按该网络最近实际的链上成本(提现:近 20 笔同类提现的最高网络费;充值:近 20 次同类归集成本,代币另加补 Gas 成本)× (1 + 安全系数),并按币价换算成该资产后向上取整。BTC 充值没有归集成本,不产生动态充值下限。
  • 站内转账(收款方为本租户其他用户)只收租户设置的站内转账费,不收网络费;本人钱包之间互转免费。

因此 depositFeeRaw、withdrawFeeRaw 会随链上成本波动。提现前请用 POST /v1/transactions/estimate_fee 获取准确金额。网络费(矿工费)由平台承担,不向用户另收。

地址校验 ​

http
GET /v1/transactions/validate_address/{assetId}/{address}

校验一个地址能否作为该资产的收款地址,并返回规范化后的地址以及是否为本租户内部地址。

路径参数说明
assetId资产 ID(决定校验哪条链、哪个网络的地址格式)
address待校验地址(需 URL 编码)

响应 200 OK

json
{ "isValid": true, "normalized": "0x90f79bf6eb2c4f870365e785982e1f101e93b906", "isInternal": false }
json
{ "isValid": false, "isInternal": false }
字段说明
isValid地址格式是否合法
normalized规范化地址(仅 isValid = true 时返回)。EVM 统一转为小写;大小写混合的 EVM 地址必须通过 EIP-55 校验;零地址视为非法;BTC 地址必须属于该网络(主网/测试网)
isInternaltrue 表示这是本租户某个钱包的充值地址,向它转账会自动站内结算(不上链、无网络费)

常见错误

HTTPcode场景
422ASSET_NOT_SUPPORTED未知 assetId
422INTERNAL_DESTINATION_NOT_ALLOWED该地址是平台运营地址(热钱包、归集、Gas 等),不允许作为收款地址

TIP

Solana 提现时还要求地址是钱包(owner)地址,而不是程序地址或代币账户(ATA);本接口不做这项检查,不满足时在估算/提现时返回 422 INVALID_ADDRESS。