> ## 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.

# 跨链桥

> 保证金资产如何在 Intention 与外部链之间移动——充值、带争议期的两阶段提现，以及哪些角色可以叫停它。

网络在跨链桥这里，碰的是自己没有创造的资产。这套架构里的其余部分都是封闭系统，任何人重放区块就能核验对不对。跨链桥做不到这一点，因为它有一半在另一条链上，而那条链有自己的验证者、自己的最终性和自己的失效模式。

这种不对称决定了它的设计。充值和提现不是对称的操作，提现也是刻意做得比技术上需要的更慢。

<h2 id="roles">
  角色
</h2>

<div className="dg" data-dg="bridge-roles">
  <div className="dg-c" style={{aspectRatio:"720 / 330"}}>
    <svg className="dg-w" viewBox="0 0 720 330" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 289.00 86.00 L 364.60 86.00" />

      <path className="dg-head dg--blue" d="M 371.00 86.00 L 364.60 90.40 L 364.60 81.60 Z" />

      <path className="dg-wire dg--blue" d="M 540.00 112.00 L 540.00 125.60" />

      <path className="dg-head dg--blue" d="M 540.00 132.00 L 535.60 125.60 L 544.40 125.60 Z" />

      <path className="dg-wire dg--sky" d="M 371.00 166.00 L 295.40 166.00" />

      <path className="dg-head dg--sky" d="M 289.00 166.00 L 295.40 161.60 L 295.40 170.40 Z" />

      <path className="dg-wire dg--yellow dg-dash" d="M 371.00 246.00 L 330.00 246.00 L 330.00 196.00 L 295.40 196.00" />

      <path className="dg-head dg--yellow" d="M 289.00 196.00 L 295.40 191.60 L 295.40 200.40 Z" />
    </svg>

    <div className="dg-band" style={{left:"0.0000%",top:"7.8788%",width:"41.6667%",height:"63.6364%"}}><span className="dg-cap">外部链</span></div>
    <div className="dg-band" style={{left:"50.0000%",top:"7.8788%",width:"50.0000%",height:"78.7879%"}}><span className="dg-cap">Intention</span></div>
    <div className="dg-b dg--orange" style={{left:"2.2222%",top:"18.1818%",width:"37.2222%",height:"45.4545%"}}><span className="dg-t">跨链桥合约</span><span className="dg-s">托管资产 · 放钱之前先校验签名</span><span className="dg-n">用户资金真正依赖的那个部件</span></div>
    <div className="dg-b dg--blue" style={{left:"52.2222%",top:"14.5455%",width:"45.5556%",height:"18.1818%"}}><span className="dg-t">验证者</span><span className="dg-s">观测外部链，并对看到的内容签名</span></div>
    <div className="dg-b dg--sky" style={{left:"52.2222%",top:"41.2121%",width:"45.5556%",height:"18.1818%"}}><span className="dg-t">Finalizer</span><span className="dg-s">中继，不是权威——它造不出一笔验证者没签过名的提现</span></div>
    <div className="dg-b dg--yellow" style={{left:"52.2222%",top:"65.4545%",width:"45.5556%",height:"18.1818%"}}><span className="dg-t">Governor</span><span className="dg-s">验证者集合与参数——那些没法安全自动化的部分</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"89.0909%",width:"100.0000%"}}><div className="dg-n">一笔提现只有在聚合到足够多验证者签名之后才可执行——与共识是同一套信任假设，只是跨过了链的边界。</div></div>
    <div className="dg-lbl" style={{left:"45.8333%",top:"21.2121%",width:"12.2222%",whiteSpace:"normal"}}>充值事件</div>
    <div className="dg-lbl" style={{left:"87.2222%",top:"36.9697%",width:"19.4444%",whiteSpace:"normal"}}>聚合签名</div>
    <div className="dg-lbl" style={{left:"45.8333%",top:"45.4545%",width:"12.2222%",whiteSpace:"normal"}}>提现交易</div>
  </div>
</div>

**验证者**观测外部链，并对看到的内容签名。一笔提现只有在聚合到足够多验证者签名之后才可执行——与共识是同一套信任假设，只是跨过了链的边界。

**Finalizer**（终结方）在外部链一侧提交交易。它是中继，不是权威：它可以选择*什么时候*提交，也可能提交不成，但它无法造出一笔验证者没有签过名的提现。

**Governor**（治理方）执行管理类操作——验证者集合变更、参数更新。它手里的，正是那些没法安全自动化的权限。

**跨链桥合约**在外部链一侧托管资产，放钱之前先校验签名。它才是用户资金真正依赖的那个部件。

<h2 id="deposits">
  充值
</h2>

充值是容易的那个方向。资金被锁在外部合约里，合约发出一个充值事件；验证者观测到它，这笔入账在 Intention 上成为一笔协议原生的交易。

这笔入账就是一笔普通交易，所以[内核](/zh/protocol/architecture/kernel)保证的一切它都继承下来。它按规范顺序执行，对账户的影响算在它自己头上，也和其他任何状态变更一起出现在同一份输出里。充值给一个濒临强平的仓位补上保证金，[清算所](/zh/protocol/architecture/clearinghouse)在同一个执行步骤里就能看见——不用等之后对账。

要等的是外部链的最终性，不是 Intention 的。源链的确认数一够，充值就入账。

<h2 id="withdrawals">
  提现
</h2>

提现是危险的那个方向，它分两个阶段进行，中间隔着一个**争议期**。

<div className="dg" data-dg="bridge-withdrawal">
  <div className="dg-c" style={{aspectRatio:"720 / 290"}}>
    <svg className="dg-w" viewBox="0 0 720 290" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 154.00 91.00 L 179.60 91.00" />

      <path className="dg-head dg--blue" d="M 186.00 91.00 L 179.60 95.40 L 179.60 86.60 Z" />

      <path className="dg-wire dg--sky" d="M 354.00 91.00 L 379.60 91.00" />

      <path className="dg-head dg--sky" d="M 386.00 91.00 L 379.60 95.40 L 379.60 86.60 Z" />

      <path className="dg-wire dg--green" d="M 554.00 91.00 L 582.40 49.29" />

      <path className="dg-head dg--green" d="M 586.00 44.00 L 586.04 51.77 L 578.76 46.81 Z" />

      <path className="dg-wire dg--orange" d="M 554.00 91.00 L 582.78 140.47" />

      <path className="dg-head dg--orange" d="M 586.00 146.00 L 578.98 142.68 L 586.58 138.26 Z" />
    </svg>

    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"15.1724%",width:"20.8333%",height:"32.4138%"}}><span className="dg-t">在 Intention 上发起请求</span></div>
    <div className="dg-b dg--sky" style={{left:"26.3889%",top:"15.1724%",width:"22.2222%",height:"32.4138%"}}><span className="dg-t">由验证者签名，并登记到合约上</span><span className="dg-s">它并不放款</span></div>
    <div className="dg-b dg--yellow" style={{left:"54.1667%",top:"15.1724%",width:"22.2222%",height:"32.4138%"}}><span className="dg-t">争议期</span><span className="dg-s">必须经过一段配置好的时长</span></div>
    <div className="dg-b dg--green" style={{left:"81.9444%",top:"5.5172%",width:"18.0556%",height:"19.3103%"}}><span className="dg-t">终结</span><span className="dg-s">资金释放</span></div>
    <div className="dg-b dg--orange" style={{left:"81.9444%",top:"40.6897%",width:"18.0556%",height:"19.3103%"}}><span className="dg-t">被作废</span><span className="dg-s">在任何资金移动之前取消</span></div>
    <div className="dg-b dg--orange dg-left" style={{left:"0.0000%",top:"67.5862%",width:"100.0000%",height:"26.2069%"}}><span className="dg-t">为什么要等</span><span className="dg-s">每一次灾难性的跨链桥事故都是同一个结构：攻击者取得了授权提现的能力，资金在同一个区块里就没了。争议期把瞬时、不可逆的损失变成一段窗口，人和监控还来得及动手。代价是正常的提现也要跟着等。</span></div>
    <div className="dg-lbl" style={{left:"79.1667%",top:"10.3448%"}}>期满</div>
    <div className="dg-lbl" style={{left:"79.1667%",top:"54.4828%"}}>提出异议</div>
  </div>
</div>

请求由验证者签名，并登记到外部合约上。它并不放款。必须先经过一段配置好的时长，在此期间这笔提现可以被**作废**——在任何资金移动之前取消掉。

这不是性能上的疏忽。每一次灾难性的跨链桥事故都是同一个结构：攻击者取得了授权提现的能力，资金在同一个区块里就没了。争议期把瞬时、不可逆的损失，变成一段窗口——人和监控还来得及动手。代价是正常的提现也要跟着等。

提现是批量处理的——按组发起、按组终结，不是一笔一个交易——所以外部链手续费不会随提现笔数线性增长。

失败是显式的。终结不了的提现会带着错误码报错，而不是悄悄什么都不做；这样一来，*卡住*和*被拒绝*的区别看得见，不必从“什么都没发生”里去猜。

<h2 id="stopping-it">
  叫停它
</h2>

出问题时有两套机制。

**作废**在争议期内取消某一笔特定的提现。这是有针对性的处置。

**锁定**是粗暴的那一个：指定角色可以锁定跨链桥，需要多少个这样的角色一起动手，本身也是一个参数。它对付的是“出事了，但还不知道出的是什么事”——切断整条流，而不是逐笔裁定交易。

<Warning>
  这些控制手段既让争议期真正有用，也确实是实打实的信任假设。能锁定跨链桥的一方，同样能挡住正常的提现。这是刻意的取舍：跨链桥一旦失效就是灾难性且不可逆的，“能够叫停”比“保证它永不暂停”更值钱。见[风险披露](/zh/protocol/security/risks)。
</Warning>

<h2 id="validator-set-changes">
  验证者集合变更
</h2>

外部合约必须知道验证者是谁，所以验证者集合一变，就得跨过边界传播过去。变更先提出，再单独走一步终结，而不是一提交就生效——和提现同样的两阶段形态，出于同样的理由。

<h2 id="where-the-risk-actually-sits">
  风险到底在哪里
</h2>

值得直说，因为跨链桥正是用户亏钱的地方：

* **在 Intention 一侧，跨链桥是普通的。** 一笔已入账的充值就是一笔普通交易，带着普通的保证。
* **在外部链一侧，你依赖的是合约和签名阈值。** 这是与共识不同的安全模型，并且[单独接受审计](/zh/protocol/security/audits)——跨链桥正是接受第三方审查的那个组件。
* **在两者之间，你依赖验证者正确观测**，以及 Finalizer 完成提交。二者都无法伪造一笔提现；二者都可以拖延一笔提现。

<Note>
  支持的链、资产、确认数要求，以及争议期的长度，都是运营参数，每次发布都可能变。以你转账那一刻交易所充值和提现弹窗里显示的数值为准——见[充值](/zh/help/deposit)与[提现](/zh/help/withdraw)。
</Note>

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

<CardGroup cols={2}>
  <Card title="充值" href="/zh/help/deposit">
    面向用户的入金路径，含当前支持的链与时长。
  </Card>

  <Card title="非交易类费用" href="/zh/programs/other-fees">
    一笔提现要花多少钱，以及充值为什么免费。
  </Card>

  <Card title="清算所" href="/zh/protocol/architecture/clearinghouse">
    一笔充值落地的那一刻，对保证金做了什么。
  </Card>

  <Card title="风险披露" href="/zh/protocol/security/risks">
    以风险形式陈述的跨链桥信任假设。
  </Card>
</CardGroup>
