运行时依赖
安装命令
点击复制技能文档
Orderly Network:API 身份验证 本技能涵盖 Orderly Network 中的两个身份验证层:钱包签名(EVM 的 EIP-712,Solana 的 Ed25519 消息签名)用于账户注册和密钥管理,以及 Ed25519 签名用于 API 请求身份验证。
何时使用 设置新的 Orderly 账户和 API 密钥(EVM 或 Solana) 构建服务器端交易机器人 实现直接 API 调用 理解双层身份验证流程 调试签名问题
先决条件 Web3 钱包(MetaMask,WalletConnect 用于 EVM;Phantom,Solflare 用于 Solana) Broker ID(例如 woofi_dex 或您自己的) 安装 Node.js 18+(用于程序化使用) 了解 EIP-712 类型数据签名(EVM)或 Ed25519 消息签名(Solana)和 Ed25519 密码学
身份验证概述 Orderly Network 使用支持 EVM 和 Solana 钱包的双层身份验证系统: ┌─────────────────────────────────────────────────────────────┐ │ 层 1:钱包身份验证 │ │ ───────────────────────────── │ │ • 账户注册 │ │ • API 密钥管理(添加/删除密钥) │ │ • 特权操作(提款,管理员) │ │ │ │ EVM:EIP-712 类型数据签名 │ │ Solana:Ed25519 消息签名 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 层 2:API 身份验证(Ed25519) │ │ ───────────────────────────────────── │ │ • 交易操作(下单/取消订单) │ │ • 读取账户数据(持仓,余额) │ │ • WebSocket 连接 │ │ │ │ 签名者:Ed25519 密钥对 │ │ 密钥类型:本地生成的 Ed25519 密钥对 │ └─────────────────────────────────────────────────────────────┘
身份验证流程
- 用户连接钱包
- 钱包签名 EIP-712 消息以注册账户
- 创建账户 ID
- 用户生成 Ed25519 密钥对
- 钱包签名 EIP-712 消息以授权 Ed25519 密钥
- Ed25519 密钥用于所有后续 API 调用
环境配置 环境 API 基础 URL WebSocket URL 主网 https://api.orderly.org wss://ws.orderly.org/ws/stream 测试网 https://testnet-api.orderly.org wss://testnet-ws.orderly.org/ws/stream 注意:这些 API 基础 URL 适用于 EVM 和 Solana 钱包。Orderly 的 API 是 omnichain - 同一端点处理两个链。
获取支持链
不要硬编码链 ID。动态获取您的 Broker 的链 ID:
// 获取您的 Broker 的支持链
const response = await fetch(https://api.orderly.org/v1/public/chain_info?broker_id=${BROKER_ID});
const { data } = await response.json();
// data.chains 包含支持的 chain_ids
// 使用这些 chain IDs 进行 EIP-712 域配置
EIP-712 域配置 Orderly 使用两个不同的 EIP-712 域,具体取决于操作: 域类型 用例 主网 测试网 离链 账户注册,API 密钥管理 0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC 0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC 链上 提款,内部转账,结算 PnL 0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203 0x1826B75e2ef249173FC735149AE4B8e9ea10abff 重要:链上验证合约是 Orderly L2 的 Ledger 合约。这是一个适用于所有链的单一合约(而不是每个链一个合约)。存储合约存在于每个支持的 EVM 链上,用于存款,但 Ledger 是链上操作的真实来源。
离链域(注册,API 密钥) 用于不直接与智能合约交互的操作: const OFFCHAIN_DOMAIN = { name: 'Orderly', version: '1', chainId: 421614, // 连接的链 ID(例如 Arbitrum Sepolia) verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', };
链上域(提款,转账) 用于与 Orderly L2 的 Ledger 合约交互的操作: const ONCHAIN_DOMAIN = { name: 'Orderly', version: '1', chainId: 42161, // 连接的链 ID verifyingContract: isTestnet ? '0x1826B75e2ef249173FC735149AE4B8e9ea10abff' : '0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203', };
第一部分:EIP-712 钱包身份验证 钱包身份验证是需要所有权证明的账户级操作所必需的。
何时使用 EIP-712 账户注册:创建新的 Orderly 账户 API 密钥管理:添加或删除 Ed25519 API 密钥 提款:请求从存储中提取令牌 管理员操作:设置 IP 限制,管理账户设置
账户注册 步骤 1:检查...