> ## 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과 외부 체인 사이를 오가는 방식. 입금, 분쟁 기간을 둔 2단계 출금, 그 흐름을 멈출 수 있는 역할을 다룹니다.

브릿지는 네트워크가 스스로 만들지 않은 자산과 맞닿는 지점입니다. 이 아키텍처의 나머지 전부는 블록을 재실행하면 누구나 정확성을 검사할 수 있는 닫힌 시스템입니다. 브릿지는 그럴 수 없습니다. 절반이 자체 검증자와 자체 최종성, 자체 장애 양상을 가진 다른 체인 위에 있기 때문입니다.

그 비대칭이 설계를 결정합니다. 입금과 출금은 대칭적인 작업이 아니며, 출금은 기술적으로 필요한 것보다 의도적으로 더 느립니다.

<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">최종화 담당</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">거버너</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 위의 프로토콜 네이티브 트랜잭션이 됩니다.

그 크레딧은 평범한 트랜잭션이므로 [커널](/ko/protocol/architecture/kernel)이 보장하는 모든 것을 그대로 물려받습니다. 정해진 순서대로 실행되고, 계정에 미친 효과가 그 트랜잭션에 귀속되며, 다른 어떤 상태 변경과도 같은 출력에 드러납니다. 청산에 근접한 포지션의 증거금을 회복시키는 입금은 같은 실행 단계 안에서 [클리어링 하우스](/ko/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>
  이 제어 수단이 분쟁 기간을 쓸모 있게 만들며, 동시에 실재하는 신뢰 가정이기도 합니다. 브릿지를 잠글 수 있는 주체는 정상적인 출금도 멈출 수 있습니다. 의도적인 트레이드오프입니다. 브릿지는 파국적이고 되돌릴 수 없는 방식으로 실패하므로, 절대 멈추지 않는다는 보장보다 멈출 수 있다는 쪽이 더 값어치가 큽니다. [리스크 고지](/ko/protocol/security/risks)를 참고하십시오.
</Warning>

<h2 id="validator-set-changes">
  검증자 집합 변경
</h2>

외부 컨트랙트는 검증자가 누구인지 알아야 하고, 따라서 검증자 집합 변경은 경계를 넘어 전파되어야 합니다. 변경은 제출 즉시 발효되는 대신 제안된 뒤 별도의 단계로 최종화됩니다. 출금과 같은 2단계 형태이며, 이유도 같습니다.

<h2 id="where-the-risk-actually-sits">
  리스크가 실제로 있는 곳
</h2>

브릿지는 사용자가 돈을 잃는 자리이므로, 분명하게 적어 두겠습니다.

* **Intention 위에서 브릿지는 평범합니다.** 반영된 입금은 평범한 보장을 가진 평범한 트랜잭션입니다.
* **외부 체인에서는 컨트랙트와 서명 임계값에 의존하게 됩니다.** 합의와는 다른 보안 모델이며, 그래서 [별도로 감사받습니다](/ko/protocol/security/audits). 브릿지는 제3자 검토를 받는 구성 요소입니다.
* **그 사이에서는 검증자가 올바르게 관찰하는지**와 최종화 담당이 제출하는지에 의존합니다. 어느 쪽도 출금을 조작해 낼 수는 없지만, 양쪽 모두 지연시킬 수는 있습니다.

<Note>
  지원 체인, 자산, 확인 수 요건, 분쟁 기간 길이는 릴리스마다 바뀌는 운영 파라미터입니다. 기준이 되는 값은 자금을 옮기는 시점에 거래소의 입금 및 출금 대화상자에 표시되는 값입니다. [입금](/ko/help/deposit)과 [출금](/ko/help/withdraw)에서 각각 다룹니다.
</Note>

<h2 id="where-to-go-next">
  다음으로 읽을 문서
</h2>

<CardGroup cols={2}>
  <Card title="입금하기" href="/ko/help/deposit">
    현재 지원 체인과 소요 시간을 포함한, 사용자가 밟는 입금 경로입니다.
  </Card>

  <Card title="거래 외 수수료" href="/ko/programs/other-fees">
    출금에 드는 비용과, 입금이 무료인 이유입니다.
  </Card>

  <Card title="클리어링 하우스" href="/ko/protocol/architecture/clearinghouse">
    입금이 도착하는 순간 증거금에 무슨 일이 일어나는지 설명합니다.
  </Card>

  <Card title="리스크 고지" href="/ko/protocol/security/risks">
    브릿지의 신뢰 가정을 리스크로 정리했습니다.
  </Card>
</CardGroup>
