DEX 创建限价单完整教程:接口、参数与实战示例

·

在学习如何高效调用 限价单 API 之前,先理清几个核心关键词:限价单、DEX 接口、链上撮合、钱包签名、订单参数、最小成交量。以下内容将围绕这些概念,带你一步步把理论转化为可落地的 Web3 交易脚本

1. 了解限价单及其价值

限价单(Limit Order) 允许用户提前挂出“买低卖高”的预期价格,只有当市场价格触及此阈值时才自动撮合。相较于传统的“市价单”,它可以:

正因如此,各大 钱包即服务(WaaS) 都将“限价单创建”列为开发者的刚需功能。

2. 接口概览:稳妥的 POST 调用

POST https://web3.okx.com/api/v5/dex/aggregator/limit-order/save-order

该接口支持以下 区块链网络:Ethereum、Polygon、BSC、Arbitrum、Optimism、Base 等主流 EVM 链。你只需确认目标链的 链 ID,即可轻松跨链挂单。

👉 想在五分钟内部署第一条链上限价单?点击体验零代码模板。

3. 关键参数全景解读

下面把请求体拆解成 12 个字段,每个都配真实案例,方便直接“抄作业”:

字段是否必填示例值提示
orderHash0xabcd...1234前端本地计算订单哈希,必须匹配链上结构
signature0xdead...beef钱包私钥对 orderHash 的 ECDSA 签名
chainId1Ethereum 主网 ID,不同测试网对应 511155111
salt1717043200Unix 时间戳,确保单次幂等
makingAmount1000000卖出 USDT 1.00 单位,6 位精度
takingAmount450000000000000000进账 DAI 0.45 单位,18 位精度,说明卖出价高于当前市价
makerToken0xdAC17...USDT 合约,EIP-55 格式校验
takerToken0x6b17...DAI 合约
maker0xYourWallet...自己的钱包地址
deadLine1725129600订单 30 天后失效
allowedSender0x0000...0000允许任意撮合者参与
receiver0xYourWallet...成交后资产接收地址,可与 maker 相同
minReturn440000000000000000最少要到账 DAI 0.44,防止矿工作恶
partiallyAbletrue允许部分成交而非一次性吃单

3.1 精度换算防踩坑

EVM 链代币精度从 6 到 18 不等,务必对照合约 decimals。误把 1 DAI 写成 1 会导致挂单金额缩水 1e18 倍,血本无归。

3.2 签名算法

4. 完整请求示例(curl + JSON)

curl -X POST https://web3.okx.com/api/v5/dex/aggregator/limit-order/save-order \
  -H "Content-Type: application/json" \
  -d '{
    "orderHash": "0xfba0...c123",
    "signature": "0x42f1...9b",
    "chainId": "1",
    "data": {
      "salt": "1717043200",
      "makingAmount": "1000000",
      "takingAmount": "450000000000000000",
      "makerToken": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
      "takerToken": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
      "maker": "0xYourWallet...",
      "deadLine": "1725129600",
      "allowedSender": "0x0000000000000000000000000000000000000000",
      "receiver": "0xYourWallet...",
      "minReturn": "440000000000000000",
      "partiallyAble": true
    }
  }'

5. 解析响应:成功与异常

返回体只有两个字段:

{
  "code": "0",
  "msg": ""
}

6. 实战案例:三步完成“DeFi 套利挂单”

假设你发现链上 DEX 的 ETH/USDC 价格偏离 CEX 4%。

  1. 链上报价

    • makerToken = USDC(6 位精度);
    • takerToken = WETH(18 位精度);
    • takingAmount 比市场价高 4%,挂出 1000 USDC 换 0.45 ETH;
  2. 本地签名 完成后立即 POST;
  3. 链上监控 当价格回落,Relay 机器人 30 秒内撮合,自动到账 0.447 ETH(已扣除矿工费与 0.1% 手续费)。

结果:无托管风险、链上透明、0 滑点完成套利。

👉 迅速复刻上述脚本,领取开放源码示例。

7. 高频疑问 FAQ

Q1:为什么调用成功却迟迟不见成交?

A:限价单本质是先挂单后撮合。市场价格未达到设定点位时,就会一直处于 开放订单 状态。只要 deadLine 未过,完全可安心等待。

Q2:orderHash 计算能不能偷懒直接用后端接口?

A:不建议。链下计算再签名才能确保 无私钥泄露风险。公开 RPC 或被篡改的后端均可能伪造订单。

Q3:部分成交后剩余数量还能修改吗?

A:不能。若想调整,用原 salt 计算新版本并重新签名,deadLine 建议同步更新防止冲突。

Q4:签名方法兼容 Gnosis Safe 等多签钱包吗?

A:可以。只需在 Safe 的 “交互” 模块填入相同的 JSON 对象,多签成员逐条审批即可。

Q5:测试网是否有水龙头领 gas?

A:Ethereum Goerli、Polygon Mumbai、Arbitrum Goerli 等官方水龙头每日限量发放,也可加入社区推特转发活动获取小额 测试币

Q6:如何批量创建 50 条限价单?

A:并发 POST 即可,目前单账户每分钟限 120 次;大量需求建议使用 队列+重试机制,并记录本地 orderHash 做幂等监控。


掌握以上要点后,你已具备在 Web3 世界里高效布阵 DEX 限价单 的能力。从接口字段到签名策略,再到实战套利脚本,环环相扣。立即动手,把“挂单即策略”的理念嵌入你的下一款 DApp 吧!