用途
该技能用于在 Orderly Network 上处理资产充值(Deposit)与提现(Withdraw),包括代币授权、金库(Vault)交互、跨链操作以及账户之间的内部转账。适合需要构建充值/提现界面、管理抵押品、实现跨链转账、处理代币授权或进行内部转账的开发者。
主要能力
- 充值:拉取链信息、判断代币是否为原生代币(ETH、SOL)、授权代币额度、计算 brokerHash 与 tokenHash、从 Vault 获取充值费用、执行带费用的充值交易并等待确认。
- 提现:获取提现 nonce、使用 EIP-712(EVM)或 Ed25519(Solana)对提现消息签名、提交带 Ed25519 API 认证的签名请求、等待处理并链上到账。
- 跨链提现:当目标链与存入链不同,需要在提现请求消息中设置
chainId与allowCrossChainWithdraw: true。若未开启而实际需要跨链,接口返回错误码 22。 - 内部转账:在同钱包组的主/子账户、同一地址跨 broker、白名单账户或同一白名单 broker 下账户之间即时转账,无 gas 费。
- 资产历史查询:通过接口按 token、side(DEPOSIT/WITHDRAW)、status、时间范围、分页查询出入金记录。
- 测试网水龙头:提供测试网 USDC 领取接口(仅测试网),EVM 每次 1000 USDC、Solana 每次 100 USDC,每账户最多使用 5 次。
- 合约地址获取:可通过
getContractAddresses或动态接口获取 Vault、USDC、USDT 等合约地址。
使用方式
前置条件
- 已连接 Web3 钱包(EVM 或 Solana)
- 在受支持的链上持有代币
- 理解 ERC20 approve 模式
- 用于 API 操作的 Ed25519 密钥对
支持链与代币
| Chain | Chain ID | USDC | USDT |
|---|---|---|---|
| Arbitrum | 42161 | 支持 | 支持 |
| Optimism | 10 | 支持 | 支持 |
| Base | 8453 | 支持 | 支持 |
| Ethereum | 1 | 支持 | 支持 |
| Mantle | 5000 | 支持 | - |
| Solana | 900900900 | 支持 | - |
可使用 GET /v1/public/chain_info?broker_id={your_broker_id} 动态拉取支持的链。
充值流程
- 拉取链信息
- 检查代币是否为原生代币(ETH、SOL)
- 若非原生代币,授权代币额度
- 计算 brokerHash 与 tokenHash
- 从 Vault 获取充值费用
- 执行带费用的充值交易
- 等待确认
- Orderly 上余额更新
React SDK 可使用 useChain("USDC") 获取链列表、useDeposit(tokenSymbol) 获取充值元数据(symbol、address、decimals、chainId、network)。也可直接调用合约:先调用 ERC20 的 approve,再计算 keccak256 哈希、构造 depositInput,并通过 getDepositFee 获取费用后调用 deposit(depositInput, { value: depositFee })。
相关 REST 接口包括:GET /v1/public/token(含 decimals、address、collateral_factor)、GET /v1/public/chain_info?broker_id={broker_id}、GET /v1/public/vault_balance。
抵押因子
每个代币有 0.0 到 1.0 的抵押因子,决定充值金额中计入交易抵押品的比例。例如 USDC 为 1.0(100%),USDT 为 0.95(95%)。若充值 1000 USDT 且抵押因子为 0.95,则仅有 950 计入保证金计算。
提现流程
- 获取提现 nonce
- 使用 EIP-712(EVM)或 Ed25519(Solana)对提现消息签名
- 提交带 Ed25519 API 认证的签名请求
- 等待处理
- 链上收到代币
React SDK 可使用 useWithdraw(),调用 withdraw({ symbol, amount, address, chainId, network })。REST 流程为:GET /v1/withdraw_nonce(需 Ed25519 API 认证)获取 nonce,构造 Withdraw 类型 EIP-712 消息(包含 brokerId、chainId、receiver、token、amount、withdrawNonce、timestamp),使用钱包 signTypedData 签名,再 POST /v1/withdraw_request 提交 message 与 signature。Solana 使用 DefaultSolanaWalletAdapter 的 generateWithdrawMessage 生成消息并签名后提交。
EIP-712 域名配置(提现使用链上域名):name 为 Orderly,version 为 1,chainId 为 42161,主网 verifyingContract 为 0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203,测试网为 0x1826B75e2ef249173FC735149AE4B8e9ea10abff。
内部转账
React SDK 使用 useInternalTransfer(),调用 transfer({ token, amount })。REST v2 流程:GET /v1/transfer_nonce(Ed25519 API 认证)获取 nonce,EVM 下构造 InternalTransfer 类型 EIP-712 消息(receiver 需转 bytes32、token、amount、transferNonce),签名后 POST /v2/internal_transfer,body 包含 message、signature、userAddress、verifyingContract。Solana 使用适配器 generateTransferMessage 生成消息并签名后提交。注意:每次转账前都必须获取 transfer nonce;实际转账需要钱包签名;EVM 签名时接收地址需转成 bytes32;Delegate Signer 账户不可用内部转账;v2 接口包含可选 memo 字段。
适用场景
- 构建充值/提现界面
- 管理交易抵押品
- 实现跨链划转
- 处理代币授权
- 账户间内部转账
- 查询资产出入金历史
限制与注意事项
- 内部转账不适用于 Delegate Signer 账户。
- 跨链提现需显式设置
allowCrossChainWithdraw: true,否则在需要跨链时报错误码 22。 - 每次内部转账前必须先获取 transfer nonce。
- 测试网水龙头每账户最多使用 5 次,EVM 每次 1000 USDC、Solana 每次 100 USDC。
- 资料中部分代码示例存在截断(如 getContractAddresses 返回内容、Common Issues 说明),相关内容暂未提供完整信息。