PoCs

ERC-7683 정산 보안 — 표준이 일부러 비워둔 그 층

ERC-7683은 주문 봉투만 표준화하고 정산 증명은 비워뒀습니다. 세 정산 모델(낙관적, 라이트클라이언트, 위원회 브릿지)이 브릿지 리스크를 누가 실제로 지는지와 필러 스프레드가 벌어지는 이유를 결정합니다.

어떻게 보나

아직 범위 미정 — 세 정산 계층의 필러 자본 회수 시간(수십 분~시간), 분쟁 실패 시 피해 반경, 스프레드 가격 결정을 비교 분석하는 것부터. 출처: ERC-7683 스펙(erc7683.org), Across 프로토콜 문서, EIP-7683.

기술 노트

각 항목이 실제로 무엇을 보여주고 어떻게 동작하는지 — 위 카드보다 자세한 기술 설명입니다.

ERC-7683 정산 보안 — 표준이 일부러 비워둔 그 층완료

목적: **인텐트는 브릿지 리스크를 없앤 게 아니라 사용자에게서 필러로 옮겼습니다.** 사용자가 서명하면 출발 체인에 입력 토큰이 에스크로되고, 필러가 목적지 체인에서 자기 돈으로 먼저 지급합니다. 사용자는 즉시 자금을 받고, 브릿지 대기 리스크는 에스크로 회수를 기다리는 필러가 집니다. **카드가 될 값어치는 ERC-7683이 일부러 비워둔 자리에 있습니다.** 표준이 정한 것은: - 크로스체인 주문 구조체(`GaslessCrossChainOrder`, `OnchainCrossChainOrder`) - 두 표준 인터페이스(`IOriginSettler.open()`, `IDestinationSettler.fill()`) 즉 **봉투 규격까지**입니다. 필러가 무엇을 근거로 에스크로를 회수해 가는지는 전혀 정하지 않았습니다. ERC-7683은 정산 검증 방식에 의도적으로 불가지론적(agnostic)이며, 정산 컨트랙트의 보안 평가 책임을 필러와 앱에 명시적으로 위임합니다. 그래서 같은 **"ERC-7683 호환"**이라는 간판 아래 완전히 다른 세 가지 신뢰 모델이 들어갑니다: 1. **낙관적 검증 (Across류)**: 챌린지 기간 동안 이의 제기가 없으면 참으로 간주. 2. **라이트클라이언트**: 출발 체인의 블록 헤더를 목적지에서 암호학적으로 검증. 3. **범용 브릿지 메시징**: 위원회(멀티시그)가 체결되었다고 서명. **핵심은 셋의 실패 모드가 서로 다른 사람을 다치게 한다는 것입니다.** 낙관적 검증이 실패하면 필러가 잃지만, 라이트클라이언트 구현 버그나 위원회 침해가 발생하면 에스크로에 잠긴 모든 사용자의 자금이 털립니다. "7683 호환"이라는 라벨은 이 구분을 전혀 담지 않습니다.

동작 방식: ### 돈이 실제로 어떻게 흐르는가 — t=0, t=1, t=2 인텐트가 바꾼 것은 **사용자가 무엇을 지정하는가**이지 실제로 무슨 일이 일어나야 하는가가 아닙니다. 기존 방식은 경로를 지정했고 — 브릿지 A로 옮기고, DEX B에서 스왑하고 — **각 단계의 실패를 사용자가 떠안았습니다.** 인텐트는 결과만 지정합니다: *Arbitrum에 100 USDC 있음, Base에서 99 USDC 이상 받고 싶음.* 서명 한 번이면 경로는 필러들이 경쟁해서 알아서 찾습니다. **사용자는 이제 브릿지가 뭔지 몰라도 되고**, 그게 인텐트가 팔린 이유입니다. 그런데 돈은 세 박자로 움직이고, 이 카드 전체가 그중 두 박자 사이의 틈에 있습니다. | | 무슨 일이 일어나는가 | 누가 노출되는가 | |---|---|---| | **t=0** | 사용자가 출발 체인 에스크로에 100 USDC를 잠그고 주문에 서명 — `IOriginSettler.open()` | 아직 없음 | | **t=1** | 필러가 목적지 체인에서 **자기 돈** 99 USDC를 사용자에게 지급 — `IDestinationSettler.fill()` | **사용자는 여기서 끝** — 즉시 수령 | | **t=2** | 필러가 *지급했다는 증명*을 제출하고 에스크로 100 USDC 회수. 이익 1 USDC | **필러**, t=1 → t=2 구간 전체 | 즉 인텐트는 브릿지 리스크를 없앤 게 아닙니다. **`t=1`에서 사용자에게서 필러로 옮긴 것입니다.** 그리고 이 카드의 주제는 질문 하나입니다 — **`t=2`에서 무엇이 증명으로 인정되는가.** ### 표준이 정한 것과 비워둔 것 ``` 정함: GaslessCrossChainOrder / OnchainCrossChainOrder IOriginSettler.open() <- t=0 IDestinationSettler.fill() <- t=1 비움: 무엇이 에스크로를 풀어주는가 <- t=2 ``` **봉투 규격은 정했고, 봉투를 열어주는 근거는 정하지 않았습니다.** ### 그런데 이 빈칸은 게으름이 아닙니다 ERC-7683이 정산 모델 하나를 골랐다면 채택되지 않았을 겁니다 — 체인 쌍마다 최적이 다르고 이 분야는 아직 움직이는 중입니다. **불가지론으로 남긴 덕분에 빨리 퍼졌습니다.** 이건 표준 일반의 법칙에 가깝습니다: > **표준의 채택 속도와 그 표준이 보장하는 것의 양은 반대 방향으로 움직입니다.** **ERC-20이 한 세대 앞선 같은 사례입니다.** 인터페이스는 정하고 *동작*은 정하지 않았습니다. 그래서 수수료를 떼는 토큰과 리베이싱 토큰이 나왔고, "ERC-20 호환"만 믿고 짠 통합은 지금도 그 위에서 깨집니다. `transfer(100)`을 불렀는데 97이 도착하는 토큰은 **표준을 어긴 것이 아닙니다.** **"7683 호환"도 정확히 같은 크기의 약속입니다** — 들리는 것보다 작습니다. ### 세 모델이 `t=2`에서 실제로 하는 일 | | 필러가 내미는 것 | 검사 방식 | |---|---|---| | **낙관적** | 지급했다는 주장 + 담보 | **아무도 반박하지 않으면 참으로 침** | | **라이트클라이언트** | 목적지 체인의 헤더 증명 | 출발 체인이 **암호학적으로 검증** | | **브릿지 메시징** | 위원회 서명 | **위원회를 믿음** | 세 번째는 `t=2`를 사실상 *"누가 그렇다고 말했다"*로 줄입니다 — 그래서 위원회가 뚫리면 한 필러의 원금이 아니라 **에스크로 전체**가 나갑니다. 아래 표는 같은 셋을 **그 손실을 누가 흡수하는가**로 다시 정렬한 것입니다. **그리고 그 틈이 곧 스프레드입니다.** `t=1` → `t=2`가 바로 필러 자본의 구속 시간이고, 그 길이를 정하는 것이 정산 모델이며, 아래 수식이 가격을 매기는 대상이 정확히 그것입니다. 그래서 *"가장 싼 인텐트 프로토콜"*은 *"자본을 가장 덜 묶는 정산 층"*을 뜻하고, 그건 대개 리스크를 없앤 것이 아니라 **다르게 배치한 것**입니다. 광고는 앞의 절반만 인용합니다. ### 세 정산 모델을 리스크로 나란히 놓으면 | 모델 | 필러가 회수하는 근거 | 회수까지 걸리는 시간 | 필러가 지는 것 | 실패 모드 및 피해 반경 | |---|---|---|---|---| | **낙관적 검증 (Across류)** | 챌린지 기간 동안 이의가 없었음 | 수십 분~수 시간 | 자본 구속 + 분쟁자가 게으를 위험 | 거짓 청구가 통과되면 필러 손실 | | **라이트클라이언트** | 출발 체인 헤더를 목적지에서 암호학적 검증 | 파이널리티 도달 (약 12초~15분) | 구현 버그 (검증 로직 오류 시 무근거 회수) | 에스크로에 잠긴 **모든 자금 탈취** | | **브릿지 메시징** | 위원회가 체결 사실에 서명함 | 메시징 전파 지연 | 위원회 침해 (브릿지의 가장 얇은 벽) | 에스크로에 잠긴 **모든 자금 탈취** | ### 필러 경제학: 단기 대출업과 스프레드 형성 필러의 본질은 **단기 대출업**입니다: 1. 목적지 체인에서 자기 자본으로 먼저 지급하는 것은 사용자에게 단기 신용을 제공하는 것과 같습니다. 2. 그 대출의 만기(기간)를 정하는 것이 바로 **정산 계층**입니다. 낙관적 검증에서는 챌린지 기간 내내 자본이 묶이므로, 자본 회전율이 떨어지고 스프레드가 두꺼워지며 사용자가 그 비용을 부담합니다. 반대로 라이트클라이언트는 자본 회전이 빠른 대신 스마트 컨트랙트 검증 버그 위험을 필러와 프로토콜이 떠안습니다. $$\text{최소 스프레드} \ge (\text{자본비용} \times \text{구속 시간}) + \text{디폴트/버그 위험}$$ "어느 인텐트 프로토콜이 가장 싼가"는 결국 "어느 정산 층이 자본을 덜 묶는가"로 귀결되며, 사용자에게 보이는 가격 차이의 상당 부분이 여기서 발생합니다. 프로토콜 마케팅이 이를 자세히 설명하지 않는 이유는 비용을 설명하려면 숨겨진 신뢰·리스크 모델을 함께 공개해야 하기 때문입니다. ### 예측시장 및 Verex 함의 Verex 같은 크로스체인 예측시장에서 체인 B의 사용자가 체인 A의 마켓에 즉시 베팅하려 할 때 필러 모델이 그대로 작동합니다: - 사용자는 체인 B에 증거금을 넣고, Verex/필러는 체인 A에서 즉시 포지션을 열어줘야 합니다. - 정산 계층의 지연이 길거나 분쟁 위험이 크면 필러는 불리한 호가 스프레드를 제시하고, 사용자의 베팅 배당률이 깎입니다. - 이는 `governance-capture-cost`(감사 경계는 주문 인터페이스에서 끝나지만 실제 돈이 걸린 곳은 정산 기저층인 구조) 및 `l1-zkevm-optional-proofs`(안전이 경제적 할인율 선택에 기대는 구조)와 정확히 같은 논리적 궤를 공유합니다. ### 2026-08-25 보강 — 같은 빈칸, 한 층 위 Term Labs 사건($8.5M, 코드는 한 줄도 안 깨짐)이 **정확히 같은 모양**입니다. ERC-7683은 주문 봉투를 정하고 **정산 검증을 비워뒀고**, Yearn v3는 금고 로직과 권한 역할을 정하고 **그 역할을 누가 갖는지를 비워뒀습니다.** 둘 다 빈칸을 채우는 것은 통합하는 팀이고 감사인은 보지 않으므로, **"감사받은 컴포넌트로 지었다"는 참이면서 불충분합니다** — 컴포넌트 사이의 빈칸은 누구의 감사 범위도 아닙니다. **완화책도 그대로 옮겨옵니다.** Term 공격의 결정적 단계는 공격자 컨트랙트를 전략으로 등록한 것이고, 그게 가능했던 이유는 거버넌스를 통해 **범용 `call(target, calldata)`에 도달할 수 있었기** 때문입니다. 정산 경로를 **사전 등록된 함수·주소 화이트리스트로 좁히면** 정산 층의 신뢰 모델이 무엇이든 **피해 반경이 코드로 묶입니다.** 그리고 타임락과 달리 화이트리스트는 **큐를 지켜보는 사람이 없어도 작동합니다.** 그래서 가장 싼 첫 측정은 챌린지 기간 숫자가 아니라 예/아니오 한 줄입니다 — **우리 정산 경로에 범용 call이 노출돼 있는가.** 있다면 그 경로의 보안은 코드의 속성이 아니라 **그 권한을 쥔 주체의 시장 가격**입니다.

인텐트 정산 수명주기 및 필러 대출 회수 흐름