任意资产,一键充进
HyperLiquid
任意链资产付款,自动换成 USDC,直达你的 HyperLiquid 保证金账户。
合作 API
任意币种,一步充值 Hyperliquid 合约账户
无需改变现有 API 对接方式,即可快速接入任意币入金 Hyperliquid 能力。自动完成资产兑换、跨链与充值,让用户无需切换平台,直接使用钱包资产进行合约交易。
接入前 vs 接入后
用户持有 TRX,想给自己的 HyperLiquid 保证金账户充值。绿色圆点是用户的钱走的路线。
用户在钱包里看到的
- 打开钱包里的 HyperLiquid 充值入口和现在一样的位置。
- 选择手里的资产,输入金额TRX、BTC、ETH、USDT 等都可以,页面显示预计到账多少 USDC。
- 点一次充值,在钱包里确认付款资产自动换成 USDC,送到他的 HyperLiquid 保证金账户。
先把几个词说清楚
- HyperLiquid 保证金账户
- 用户在 HyperLiquid 上放交易本金的账户。往里充钱,就能开始交易。
- USDC · Arbitrum
- 保证金账户只收 USDC(与美元 1:1 的数字货币),而且只从 Arbitrum 这条链收。
- 为什么需要这个 API
- 用户手里的往往不是 Arbitrum 上的 USDC。这个 API 负责把他手里的资产换好、送到,充进保证金账户。
它只做这一件事
做:把资产充进 HyperLiquid 保证金账户
- 输入是用户手里的任意资产
- 输出只有一种:他保证金账户里的 USDC
- 用户全程不离开你的钱包
不做:其他用途
- 不是通用的币币兑换,不能换成别的币
- 不把用户引到外部页面或其他 App
- 不替代你钱包现有的 HyperLiquid 对接
接入后,钱包里这些都不需要改:
合约下单持仓与平仓提现账户体系与登录原有 HyperLiquid 接口调用USDC 直接充值
接入步骤
- 申请合作渠道号联系商务,拿到你钱包专属的渠道标识,用来区分订单来源和结算。
- 在 HyperLiquid 充值入口加「其他资产」保留原来的 USDC 充值。用户选了其他资产,就交给anyin API 处理。
- 调用报价接口,显示预计到账传入资产和数量,返回能充进保证金账户多少 USDC、手续费多少、可充范围。
- 用户确认,钱包签名付款调用下单接口拿到付款地址,用钱包已有的转账能力让用户签名付款。
- 查询状态,直到充进保证金账户轮询订单状态,向用户展示进度,直到 USDC 进入他的 HyperLiquid 保证金账户。
接口调用示意 示意,正式字段以接入文档为准
// 1. 报价:用户输入金额时调用 POST /v1/deposit/quote { asset: "TRX", amount: "500" } // → 能充进 HyperLiquid 保证金账户多少 USDC、手续费、可充范围 // 2. 下单:用户点「一键充值」时调用 POST /v1/deposit/order { asset: "TRX", amount: "500", hlAddress: "0x…", refundAddress: "T…" } // → 付款地址 depositAddress、订单号 orderId;钱包随后发起转账 // 3. 进度:轮询直到充进保证金账户 GET /v1/deposit/order/{orderId} // → 待付款 / 兑换中 / 已到账 / 已入账保证金账户 / 已退款
文档与商务
接入文档
完整字段、错误码、测试环境说明。
占位 文档站随 Phase 2 上线
商务合作
申请渠道号、费率与结算方式。
占位 联系邮箱待定
整体架构与设计说明
一次付款,钱走过的四段路
anyin 把三件事串起来:OmniBridge 负责跨链兑换,Arbitrum 承接 USDC,Hyperliquid 官方桥合约负责入账。这一页说明每一段由谁完成、用的是哪个真实接口,以及上线前还需确认的事项。
系统结构
真实接口对接表
全部来自 OmniBridge 文档(API 根地址 https://api.omnibridge.pro,POST + JSON)。前端只和自己的后端说话,渠道号不出现在浏览器里。
| 用户看到的 | anyin 后端 | OmniBridge 接口 | 要点 |
|---|---|---|---|
| 币种列表、搜索 | GET /api/coins | /api/v1/queryCoinList | 只取支持兑换的币;按合约地址找出 Arbitrum 原生 USDC 作为固定目标,排除不支持兑换成它的币 |
| 预计到账、手续费 | POST /api/quote | /api/v1/getBaseInfo | 按文档公式:(数量 − 数量 × 费率) × 汇率 − 目标链网络费 |
| 一键充值 | POST /api/order | /api/v2/accountExchange | 下单前后端再报价一次并校验 ≥ 5 USDC;destinationAddr = 用户 HL 地址;返回 platformAddr |
| 付款完成 | POST /api/order/txid | /api/v2/modifyTxId | 钱包付款后自动提交哈希;手动转账可选填 |
| 进度条 | POST /api/order/state | /api/v2/queryOrderState | 每 6 秒轮询;detailState 映射成四步进度 |
| 充值记录 | POST /api/orders | /api/v2/queryAllTrade | 按本机设备号 equipmentNo 查询 |
| 进入保证金账户 | POST /api/hl/permit-deposit | Hyperliquid Bridge2(非 OmniBridge) | 用户签 USDC permit,后端校验签名后调用 batchedDepositWithPermit,并检查 FailedPermitDeposit 事件 |
订单状态怎样变成用户看得懂的四步
| OmniBridge detailState | 页面上的说法 | 进度位置 |
|---|---|---|
wait_deposit_send | 等待您付款 | ① 付款 |
wait_exchange_push · wait_exchange_return | 正在换成 USDC | ② 兑换 |
wait_receive_send · wait_receive_confirm | USDC 正在发往您的地址 | ③ 到账 Arbitrum |
receive_complete | USDC 已到账,签名后进入保证金账户 | ④ 入账 HyperLiquid |
wait_refund_* · refund_complete | 兑换未成功,原币退回,附退款原因 | 退款分支 |
timeout · WAIT_KYC · ERROR | 订单超时 / 需要身份认证 / 处理中请联系客服 | 异常分支 |
设计决定
目标固定,不给选择器到账框只展示「HyperLiquid 保证金账户 · USDC · Arbitrum」,带锁标记。系统按合约地址锁定原生 USDC,不会误选 USDC.e。
一个主按钮「一键充值」承担连接钱包、下单、发起付款三件事。按钮上方一行字说明当前还差什么。
付款方式由币种决定EVM 币走钱包签名,TRX/TRC20 走 TronLink,其他链展示地址和金额。用户在选币时就能看到「钱包直付」或「转账付款」。
地址确认冷静而明确EVM 自动带入地址并要求勾选确认;非 EVM 手动填写,地址分段回显,首尾高亮,便于逐段核对。
不编造数字费率、汇率、网络费全部来自实时报价;预计用时引用 OmniBridge 文档并注明来源;没有数据时显示「—」。
动效只说明流向报价时竖线上的圆点下落表示钱在路上;进度页当前步骤有呼吸圈。系统开启「减少动态效果」时全部关闭。
上线前需要确认的事项
关键
最后一步需要用户签一次名OmniBridge 只能把 USDC 打到一个地址。直接打给 Hyperliquid 桥合约会记到 OmniBridge 的发款地址名下,资金会错账,所以必须先打到用户自己的地址,再由用户签 permit 授权存入(免 gas,由我方中继付 gas)。若要做到完全无签名,需要 OmniBridge 支持「代用户存入 Hyperliquid」的发款方式,建议商务优先确认。
关键
渠道号 sourceFlag所有接口都要求渠道号,需与 OmniBridge 商务确认后填入后端配置。
重要
地区限制OmniBridge 文档说明其 API 在美国、中国大陆、伊朗、俄罗斯等地区不可用。产品上线地区与准入策略需法务确认。
重要
中继钱包自动入账需要一个持有少量 Arbitrum ETH 的中继地址付 gas。未配置时,页面改为让用户自己从钱包存入(需少量 ETH)。
重要
5 USDC 最低入账Hyperliquid 不入账低于 5 USDC 的存款。下单前按「最少到账」校验,不足时直接拦截。
待补
文档未覆盖的部分付款地址的有效期、需要 memo 的币(如 XRP、XLM)的付款地址格式、币种图标的完整地址。当前实现:地址中带 # 时拆出 memo 单独展示;图标加载失败时用首字母代替。
如何运行完整版
# Node 18 以上 cp .env.example .env # 填入 SOURCE_FLAG;可选 ARB_RPC_URL、RELAYER_PRIVATE_KEY npm install # 仅自动入账中继需要 ethers node server.js # 打开 http://localhost:8787