> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 交易手续费

> 一笔成交的成本：挂单与吃单费率、适用费率如何确定、取整规则，以及手续费流向何处。

交易手续费**按成交收取**，基数是该笔成交的名义价值。不是按订单，也不是按区块——一笔订单分五次成交，就按五个名义价值收五次；一笔从未成交的订单，一分不收。

费率有两种，取决于你在这笔交易中处于哪一侧。

**挂单方**（maker）——你的订单挂在订单簿上，别人主动来和你成交。你提供了流动性，费率更低。

**吃单方**（taker）——你的订单跨过价差，消耗了挂在簿上的流动性。费率更高。

区分依据是你的订单*做了什么*，不是你想做什么。限价单在下单瞬间就跨价成交，付的就是吃单费率。如果你必须是挂单方，用只挂单（post-only）：它会吃掉流动性的时候，宁可被拒，也不成交。见[订单类型](/zh/trading/order-types)。

<h2 id="the-calculation">
  计算方式
</h2>

$$
\text{手续费} = \text{成交名义价值} \times \frac{\text{ppm 费率}}{1{,}000{,}000}
$$

费率在链上按**百万分之一**（ppm）存储，不用百分比。网络默认值是吃单 `450` ppm、挂单 `150` ppm——即 0.045% 和 0.015%。

用 ppm 不是装饰。结算路径上的一切都走[定点整数运算](/zh/protocol/architecture/kernel)，因为两个验证者之间的取整差异不是一处对不上账，而是一次分叉。把费率写成“百分比的百分比”，就得在某个环节变成小数，而小数没有一种写法能让所有机器都算出同一个结果。

所以取整规则是明文规定的，不随实现而定：

|               | 规则                                         |
| ------------- | ------------------------------------------ |
| **收取的手续费**    | 四舍五入，逢半远离零方向进位；只要费率为正，下限为 1 个最小单位（quantum） |
| **支付的返佣**     | 四舍五入，逢半远离零方向进位，**不设**下限——返佣允许被取整为零         |
| **下单时预留的手续费** | 四舍五入，逢半远离零方向进位，下限为 1 个最小单位                 |

收费设 1 个最小单位下限，是为了让极小的成交不至于免费。返佣不设这个下限则是它的镜像：协议宁可把一笔支付向下取整到零，也不会凭空铸出一个自己没挣到的单位。

<h2 id="which-rate-applies-to-you">
  哪一档费率适用于你
</h2>

每一笔成交都以同样的方式确定费率，顺序是固定的。

<div className="dg" data-dg="fee-rate-resolution">
  <div className="dg-c" style={{aspectRatio:"720 / 300"}}>
    <svg className="dg-w" viewBox="0 0 720 300" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 134.00 112.00 L 155.60 112.00" />

      <path className="dg-head dg--blue" d="M 162.00 112.00 L 155.60 116.40 L 155.60 107.60 Z" />

      <path className="dg-wire dg--green" d="M 340.00 112.00 L 373.26 41.78" />

      <path className="dg-head dg--green" d="M 376.00 36.00 L 377.24 43.67 L 369.28 39.90 Z" />

      <path className="dg-wire dg--sky" d="M 340.00 112.00 L 369.60 112.00" />

      <path className="dg-head dg--sky" d="M 376.00 112.00 L 369.60 116.40 L 369.60 107.60 Z" />

      <path className="dg-wire" d="M 340.00 112.00 L 373.26 182.22" />

      <path className="dg-head" d="M 376.00 188.00 L 369.28 184.10 L 377.24 180.33 Z" />
    </svg>

    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"28.0000%",width:"18.0556%",height:"18.6667%"}}><span className="dg-t">一笔成交</span></div>
    <div className="dg-b dg--yellow dg-round" style={{left:"23.0556%",top:"24.6667%",width:"23.6111%",height:"25.3333%"}}><span className="dg-t">该账户是否带有费率？</span></div>
    <div className="dg-b dg--green dg-left" style={{left:"52.7778%",top:"0.6667%",width:"47.2222%",height:"22.6667%"}}><span className="dg-t">协商账户费率</span><span className="dg-s">直接绑在账户上，每日档位重算会刻意跳过——重算永远不会覆盖谈定的条件</span></div>
    <div className="dg-b dg--sky dg-left" style={{left:"52.7778%",top:"26.0000%",width:"47.2222%",height:"22.6667%"}}><span className="dg-t">交易量档位费率</span><span className="dg-s">由滚动交易量推导，每天写回链上</span></div>
    <div className="dg-b dg-left" style={{left:"52.7778%",top:"51.3333%",width:"47.2222%",height:"22.6667%"}}><span className="dg-t">网络默认费率</span><span className="dg-s">新账户按 0 档交易，不是处在“没有费率”的状态</span><span className="dg-n">费率为零也是费率：一旦设定，就照字面收取。</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"0.0000%",top:"78.6667%",width:"100.0000%",height:"17.3333%"}}><span className="dg-s">链上配置里还有一种按市场的基础费率，但它目前并未在成交路径上生效——所有市场都走上面这条“账户费率优先、默认费率兜底”的链。</span></div>
  </div>
</div>

**协商账户费率**直接绑在某个账户上，不受每日档位重算影响：带有协商费率的账户会被刻意跳过，交易量重算永远不会覆盖掉双方谈定的条件。

**交易量档位费率**是几乎所有账户实际用的那一档，由滚动交易量推导，每天写回链上。见[费率档位](/zh/programs/fee-tiers)。

**网络默认费率**适用于从未被分配过任何费率的账户——新账户按 0 档交易，不是处在“没有费率”的状态。

<Note>
  费率为零也是费率，不是没有费率。账户一旦带着显式设定的费率，协议就照字面执行，哪怕它是零。不会因为这个数字看着像空值，就悄悄回退到默认值。
</Note>

链上配置里还有一种**按市场的基础费率**。有些市场的风险特征和整个交易场所差得太远，按全场费率表定价并不合适——盘前合约，或者流动性异常稀薄的新上市品种，就属于这种。启用之后，它取代网络默认费率成为该市场的基准，账户费率仍然叠加在上面。

<Warning>
  按市场的基础费率可以配置，但**目前并未在成交路径上生效**。所有市场当前都走上面那条“账户费率优先、默认费率兜底”的链。等这一点改了，本页会改写。
</Warning>

<h2 id="what-the-rate-can-be">
  费率的取值范围
</h2>

两种费率都在链上设了边界；配置超出边界，写入直接被拒，不会截断到边界值。

|         | 边界                         |
| ------- | -------------------------- |
| **吃单方** | 不得为负。上限 10%                |
| **挂单方** | 可以为负——即返佣——最低 −0.1%。上限 10% |

这种不对称是刻意的。挂单方负费率是设计出来的激励：交易场所为自己希望出现在簿上的流动性付钱。吃单方负费率则会变成一种靠自己跟自己交易来铸币的机制，所以它在表示层面根本就不存在，不只是被劝阻。

10% 的上限是护栏，不是费率表。真实费率比它低两个数量级；这条边界是用来挡住荒谬或者恶意的配置，不让它进入执行，并不是在描述谁真的付这么多。

<h2 id="placing-orders-costs-no-gas">
  下单不消耗 gas
</h2>

提交、修改和撤销订单都是原生的协议交易，不需要 gas 余额，也不参与手续费竞价市场。

这件事的分量比听上去大。在订单管理要花 gas 的场所，报价本身就贵，而波动期里撤单最贵的时刻，恰恰是最需要撤单的时刻——于是做市商把报价挂得更宽来覆盖这笔成本，最后所有人都在为那段价差买单。把订单管理做成免费，是把这笔成本从价差里拿掉，不是挪个地方接着收。

所以结论是：**交易手续费就是交易的全部协议成本。** 没有第二项。

<h2 id="why-your-reserved-margin-exceeds-the-initial-requirement">
  为什么预留的保证金高于起始要求
</h2>

开仓时，协议预留的保证金是起始要求*加上一笔预估的平仓手续费*——因为仓位如果连平仓费都付不起，最后得由交易场所来接。

这笔预估手续费按**网络默认吃单费率**计算，并在下单那一刻锁定——不是按你的费率，也不是按之后变成什么费率。

这两点都是刻意保守的。用默认吃单费率，账户费率日后就算上调，预留也不会不够。在下单时锁定，中途的费率变动就无法回过头去推翻一份已经检查、已经接受的保证金。

真正平仓成交时，按你的实际费率收。预留是上限，不是账单。

<h2 id="where-fees-go">
  手续费流向何处
</h2>

交易手续费收进链上一个由协议控制的账户。流出去的部分投向生态，不做留存。

<div className="dg" data-dg="fee-destinations">
  <div className="dg-c" style={{aspectRatio:"720 / 314"}}>
    <svg className="dg-w" viewBox="0 0 720 314" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 134.00 138.00 L 165.60 138.83" />

      <path className="dg-head dg--blue" d="M 172.00 139.00 L 165.49 143.23 L 165.72 134.43 Z" />

      <path className="dg-wire dg-soft" d="M 371.00 139.00 L 408.72 39.98" />

      <path className="dg-head" d="M 411.00 34.00 L 412.83 41.55 L 404.61 38.41 Z" />

      <path className="dg-wire dg-soft" d="M 371.00 139.00 L 406.18 108.21" />

      <path className="dg-head" d="M 411.00 104.00 L 409.08 111.53 L 403.29 104.90 Z" />

      <path className="dg-wire dg-soft" d="M 371.00 139.00 L 406.18 169.79" />

      <path className="dg-head" d="M 411.00 174.00 L 403.29 173.10 L 409.08 166.47 Z" />

      <path className="dg-wire dg-soft" d="M 371.00 139.00 L 408.72 238.02" />

      <path className="dg-head" d="M 411.00 244.00 L 404.61 239.59 L 412.83 236.45 Z" />
    </svg>

    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"35.0318%",width:"18.0556%",height:"17.8344%"}}><span className="dg-t">每一笔成交</span></div>
    <div className="dg-b dg--blue" style={{left:"24.4444%",top:"32.1656%",width:"26.3889%",height:"24.2038%"}}><span className="dg-t">协议手续费账户</span><span className="dg-s">链上可审计</span></div>
    <div className="dg-b dg--green" style={{left:"57.7778%",top:"0.6369%",width:"42.2222%",height:"20.3822%"}}><span className="dg-t">流动性金库</span><span className="dg-s">在簿上报价，并在强平时接手仓位；利润归存入者</span></div>
    <div className="dg-b dg--green" style={{left:"57.7778%",top:"22.9299%",width:"42.2222%",height:"20.3822%"}}><span className="dg-t">保险基金</span><span className="dg-s">在减仓波及其他交易者之前吸收亏空</span></div>
    <div className="dg-b dg-dashed" style={{left:"57.7778%",top:"45.2229%",width:"42.2222%",height:"20.3822%"}}><span className="dg-t">推荐返佣</span><span className="dg-s">在该计划上线之后</span></div>
    <div className="dg-b dg-dashed" style={{left:"57.7778%",top:"67.5159%",width:"42.2222%",height:"20.3822%"}}><span className="dg-t">代币部署方</span><span className="dg-s">针对由他人带来的现货上市——现货尚未上线</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"88.5350%",width:"100.0000%"}}><div className="dg-n">余额与流水都是链上状态——期初余额、手续费流入、转出、期末余额，任何人都能从已提交区块自己重算这笔账。</div></div>
  </div>
</div>

* [**流动性金库**](/zh/trading/vaults)，负责在簿上报价，并在[强制平仓](/zh/trading/liquidations)时接手仓位。手续费收入是它收益的一部分，而金库利润归存入者。
* **保险基金**，在[自动减仓](/zh/trading/adl)波及其他交易者之前，吸收强平未能覆盖的亏空。
* **[推荐](/zh/programs/referrals)返佣**，在该计划上线之后。
* **代币部署方**，针对由他人带来的上市品种。这适用于现货上市，而现货尚未上线。

余额与流水都是链上状态。对账——期初余额、手续费流入、转出、期末余额——是任何人都能从已提交区块自己重算的一笔账，不是等着谁来公布的一个数字。

跨链桥手续费和账户手续费单独收取，进入各自的账户。见[非交易类手续费](/zh/programs/other-fees)。

<h2 id="what-is-not-a-trading-fee">
  哪些不是交易手续费
</h2>

| 成本                               | 支付给   | 说明             |
| -------------------------------- | ----- | -------------- |
| 交易手续费                            | 协议    | 本页             |
| [资金费率](/zh/trading/funding)      | 其他交易者 | 协议不抽成          |
| 滑点                               | 无人    | 是你拿到的价格，不是一项收费 |
| [强平罚金](/zh/trading/liquidations) | 保险基金  | 仅在强制平仓时        |
| [提现手续费](/zh/programs/other-fees) | 协议    | 属于跨链桥，不属于交易    |
| gas                              | —     | 交易类事务不收取       |

资金费率是最常被误认成手续费的一项。它是多头和空头之间的转移；看你持有哪一侧，可能是成本，也可能是收入。

<h2 id="reducing-what-you-pay">
  如何降低你的支出
</h2>

* **做挂单方。** 对大多数账户来说，挂单与吃单之间的差距比相邻交易量档位之间的差距更大。改变*怎么交易*，比多交易更能压低成本。
* **在绝不能误付吃单费率时用只挂单。** 会跨价的时候，它宁可被拒，也不成交。
* **把活动集中在一个母账户下。** 子账户在计算档位时会合并统计，所以拆分毫无收益，只增加运维复杂度。
* **拆分大额订单。** [TWAP](/zh/trading/twap) 和[阶梯订单](/zh/trading/scale-orders)能减少滑点，而在大额订单上，滑点通常远超手续费。

<Warning>
  费率要从链上读，不要写死。费率表是链上配置，会变；集成如果自带一份副本，迟早会算出一个网络并没有收的成本。见[开发者](/zh/developers/overview)。
</Warning>

<h2 id="where-to-go-next">
  后续阅读
</h2>

<CardGroup cols={2}>
  <Card title="费率档位" href="/zh/programs/fee-tiers">
    费率表、档位如何计算，以及做市商返佣。
  </Card>

  <Card title="非交易类手续费" href="/zh/programs/other-fees">
    跨链桥、账户、金库与强平相关成本。
  </Card>

  <Card title="订单类型" href="/zh/trading/order-types">
    只挂单，以及如何确保挂单方身份。
  </Card>

  <Card title="资金费率" href="/zh/trading/funding">
    流向其他交易者、而非协议的那部分成本。
  </Card>
</CardGroup>
