跳到主要内容

外部做市商指南

适用范围。 面向使用自己的 Canton party(托管在自营 validator 或受支持钱包上)在现货交易的做市商和成交量提供方。本页建立在 机构接入(账户如何创建)和 链上结算(成交如何交割)之上,讲的是在 Rocky 上跑报价或刷量策略与其他交易所的不同之处:每一笔成交都是一笔由你的 validator 付费的链上交易。

一、Rocky 与其他交易所的差异​

在托管式交易所,你的库存放在交易所钱包里,成交只是账本记录。在 Rocky 的钱包出资分段:

托管式交易所Rocky 钱包出资分段
库存存入交易所留在你自己的 Canton party 里;现货余额只是它的镜像
一笔成交一行数据库记录一笔 Canton 交易:你的 party 与对手方 party(对手方是 house 账户时则是 Rocky 托管 party)之间的两腿 DvP
谁签名交易所Rocky 结算 operator 依据你授予的 MemberAuth 提交;你的 participant 确认
手续费maker / taker bps链上分段零交易所手续费
每笔成交成本只有手续费Canton 流量费,由你的 validator 以 CC 支付
提现申请并等待不需要:已结算的资产本来就在你钱包里

最后两行就是在这里做市的经济模型:没有手续费可以换返佣,但每笔成交有真实的网络成本,Rocky 不予补贴。

二、Canton 流量:你承担的成本​

participant 发往 Global Synchronizer 的每条消息都消耗 sequencer 流量,流量由 validator 用 CC 购买。你的 validator 要为以下内容付费:

  • 每笔成交的确认响应。 你的 party 是 DvP 中你这一腿的 stakeholder,你的 participant 必须对每笔结算交易做确认。这是主要的持续成本,它随成交笔数增长,与成交金额无关。
  • 你自己提交的交易:把资产转入 / 转出绑定钱包、创建 receiver preapproval、接受 MemberAuth 提案(自营 validator 路径),以及对没有 direct preapproval 的资产接受 Offer。
  • 协议后台流量(ACS commitment、topology 等),participant 无论是否交易都会产生。

结算交易的提交本身由 Rocky 的结算 operator 付费,你只付你这一侧。一次确认消耗多少 CC 取决于交易大小和 Synchronizer 当时的流量价格,请以你的 validator 为准,不要以本页为准:validator UI 和 Scan API 会显示每轮购买和消耗的流量。作为量级参考,Rocky 在 2026 年 9 月实测自己这一侧的两腿 DvP:allocate + execute 路径约 32 KB,现在默认使用的直接转账路径约 14 KB sequencer 流量(按当时治理价 $60/MB 分别约合 $1.9 和 $0.8);你的确认只是其中一部分,Rocky 自身按 lane 的流量消耗公开于 GET /v1/traffic。直接转账路径要求你交易的每种资产都有 direct receiver preapproval——这也是 §2.4 重要的又一个原因。

实际影响

  1. 成本按笔计,不按金额计。 十笔 0.001 CBTC 的成交消耗十倍于一笔 0.01 CBTC 的流量。报价数量要至少达到"单笔捕获的价差能覆盖单笔流量费"的水平;把 exchangeInfo 里的 minNotional 当作下限,不要当作目标。
  2. 刷量两条腿都付费。 如果你用自己的两个 party 互相成交来制造成交记录,两个 validator 都要确认每笔成交;自成交防护只阻止单个账户与自己撮合(见 §五)。定节奏之前先按每笔成交预算 CC。
  3. 保持 validator 有余量。 流量耗尽的 validator 会停止确认;结算器随后看到超时,成交停在 retry,达到重试上限后变为 failed,而内部余额已经按成交更新。请像监控库存一样监控流量余额。
  4. 优先使用 direct preapproval。 Offer 路径每笔成交要在你这边多付一次接受交易,而且 DvP 根本不能走 Offer:那一腿会失败。Rocky 上线前的探测必须对每种资产、两个方向都返回 direct。

三、账户模型与限制​

  • 分段:GET /api/v3/account 返回 settlement.segment(已注册且该 venue 已启用结算时为 wallet,否则为 internal)、settlement.frozen 和绑定的 party。冻结期间 canTrade 为 false。见 账户信息。
  • 入金:把资产转入绑定钱包;镜像在两轮各 30 秒的对账后计入 free。已注册账户调用 /v1/spot/transfer 和 /v1/withdrawals 会被拒绝。
  • 库存纪律:有挂单或未结算卖单时把资产转出钱包,会被识别为负漂移。对账器先扣减 free,再撤销该资产上的挂单,仍未覆盖则冻结账户。解冻由运维人工处理。见 镜像余额。
  • 限流档位:ext-mm(每分钟 2400 权重、每 10 秒 100 单、每分钟 600 单),接入时分配。撤单永远不消耗订单配额。见 限流。
  • 订单类型:只有 LIMIT(GTC)和 MARKET(IOC)。没有 post-only 标志,会穿价的限价单会吃单。目前没有批量下单、撤单改单和用户数据流(见 §八)。

四、报价流程​

参考实现:Rocky-DEX/Rocky-API-Maker-Bot(Python 与 TypeScript 客户端、报价器与对账示例);代码片段见 快速上手。

  1. 初始化:GET /api/v3/exchangeInfo 读取 tickSize、stepSize、minNotional;GET /api/v3/account 确认 settlement.segment: "wallet" 并读取镜像余额。
  2. 下单:逐档 POST /api/v3/order。每档报价带一个 newClientOrderId,重试时享受 15 分钟幂等。
  3. 按订单跟踪成交:GET /api/v3/myTrades 每笔成交带 orderId,并支持 orderId= 过滤,成交可以直接对回被吃的那档报价,不需要按价格 / 时间关联。见 账户成交列表。
  4. 撤掉整个梯子:DELETE /api/v3/openOrders?symbol= 一次撤销该交易对的全部挂单,权重 1,不计入订单桶。把它作为断连、行情源丢失、validator 告警时的 kill switch。见 撤销全部挂单。
  5. 查询已完结订单:GET /api/v3/order 除挂单外,也会从历史中返回 FILLED / CANCELED 订单。

五、自成交防护与多账户策略​

STP 始终开启且不可配置:新订单会跳过同一账户的挂单而不与之撮合。它不跨账户生效。两把 API key 对应两个不同 party 时会互相成交,每笔这样的成交都是两个 validator 上的真实 DvP。两个钱包 party 之间的成交在钱包之间交割;与 Rocky house 账户的成交则对 Rocky 托管 party 交割。

六、结算对账​

钱包分段上的每笔成交都有一行结算记录:pending → processing → confirmed,瞬时错误进入 retry,终态错误为 failed(见 结算状态机)。对账以它为准,不以下单受理为准。

  • GET /api/v3/settlements 列出你的结算记录,含 attempts、lastError、nextAttemptTime,以及确认后的 cantonUpdateId;支持按 symbol 和 status 过滤。
  • GET /api/v3/settlements/summary 返回每个交易对各状态的计数和 unsettledQuoteQty(仍在等待上链的 quote 名义金额)。把它当作队列深度:结算按 venue 串行,持续成交速率超过链的吸收能力时,最先表现为 pending 增长。
  • 出现 failed 时 Rocky 运维已经收到告警。你的内部余额已反映该成交,链上交割由人工处理。不要把这部分库存重复报价。

见 结算记录。

七、运行检查清单​

策略在生产启用前:

  • validator 流量余额已监控,告警阈值至少覆盖一天的预期成交量。
  • receiver preapproval 探测对每种资产、两个方向都为 direct;没有在用 Offer 路径。
  • GET /api/v3/account 显示 settlement.segment: "wallet"、frozen: false,镜像余额与钱包一致。
  • kill switch 已接到按交易对的 DELETE /api/v3/openOrders,在行情源丢失、API 报错、validator 告警时触发。
  • 对账任务轮询 settlements/summary,在 failed > 0 或 unsettledQuoteQty 超过容忍值时告警。
  • 报价数量已按"单笔价差收益 > 单笔流量费"选定。

八、目前不提供的能力​

列出来是为了避免你围绕它们设计:用户数据 WebSocket 流、批量下单、撤单改单、post-only / IOC / FOK 有效期、可配置的 STP 模式、API key 的 IP 白名单与权限范围、按成交量分档的手续费。请按你的档位以合适的节奏轮询 openOrders(权重 1)和 myTrades / settlements(权重 10)。