SuperAPI AI 工具集

orderly-deposit-withdraw

部署与运维

查看项目

更新于 10-16 12:03

技能介绍

用途

该技能用于在 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} 动态拉取支持的链。

充值流程

  1. 拉取链信息
  2. 检查代币是否为原生代币(ETH、SOL)
  3. 若非原生代币,授权代币额度
  4. 计算 brokerHash 与 tokenHash
  5. 从 Vault 获取充值费用
  6. 执行带费用的充值交易
  7. 等待确认
  8. 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 计入保证金计算。

提现流程

  1. 获取提现 nonce
  2. 使用 EIP-712(EVM)或 Ed25519(Solana)对提现消息签名
  3. 提交带 Ed25519 API 认证的签名请求
  4. 等待处理
  5. 链上收到代币

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 说明),相关内容暂未提供完整信息。