Uniswap Aggregator Hooks: 여러 거래쌍이 같은 풀을 쓸 때
Uniswap v4 풀처럼 표시되는 경로가 실제로는 다른 곳의 유동성을 사용할 수 있다. 10월 지원 체인 확대를 계기로, 여러 거래쌍이 같은 풀을 공유하는 구조와 API의 별도 라우팅 조건을 살펴본다.

여러 거래쌍의 인터페이스가 하나의 유동성 원천에 연결되는 구조를 표현한 AI 생성 개념도. 실제 시설이나 거래를 재현한 그림이 아니다.
핵심 요약
- Uniswap Labs는 10월 22일 Ethereum·Base·Robinhood Chain 지원 확대를 발표했다. 최초 가동은 3월 Tempo에서 이뤄졌다.
- v4 풀 인터페이스 뒤에 외부 유동성이 연결될 수 있다. 문서의 Curve 구현에서는 여러 거래쌍이 원래 풀 하나를 공유한다.
- Guidestar 베타 API는 명시적 선택이 필요하고, 같은 체인의 EXACT_INPUT 요청을 지원하며 표준 라우팅으로 자동 전환하지 않는다.
사건의 흐름 한눈에 보기
Uniswap Labs가 Tempo의 내장 스테이블코인 DEX를 감싼 구조를 aggregator hooks의 첫 실제 배포로 소개했다.
Labs가 Ethereum 메인넷·Base·Robinhood Chain의 Web App과 API 지원을 발표했다.
풀 이름은 입구에 붙은 표시다
2026년 10월 22일, Uniswap Labs는 Ethereum 메인넷·Base·Robinhood Chain의 Web App과 API에서 Aggregator Hooks를 사용할 수 있다고 발표했다. 외부 유동성 원천을 v4 인터페이스로 감싸는 방식이다. 따라서 라우터가 만나는 v4 풀이 실제 스왑에는 다른 곳의 유동성을 사용할 수 있다. 여기서 지원 체인에 관한 설명은 사업자의 발표에 근거하며, 이 글이 각 체인의 배포를 독립적으로 검증한 것은 아니다.[1]
10월 발표는 첫 출시가 아니라 지원 확대다. Labs는 이미 3월 18일 Tempo에서 최초 가동을 알렸다. aggregator hook이 체인에 내장된 스테이블코인 DEX를 여러 v4 풀의 형태로 노출하는 구조였다. 기존 유동성 원천을 일반적인 v4 자체 풀로 바꾸지 않고도 라우팅에 연결한 것이다.[2]
거래쌍은 여러 개, 준비 자산은 하나의 풀에
공개 구현을 보면 이 차이가 구체적으로 드러난다. BaseAggregatorHook은 v4 코어의 유동성 추가 콜백으로 들어오는 요청을 거부한다. 스왑 콜백은 대신 훅의 정산 경로를 호출한다. 이 코드는 연결 방식을 설명하는 근거다. 저장소에 구현이 있다는 이유만으로 나열된 모든 연동이 발표된 모든 체인에서 가동 중이라고 판단할 수는 없다.[4][1]
Curve가 좋은 예다. 저장소 문서는 원래 Curve 풀 하나에 훅 하나를 배치하고, 토큰 조합마다 별도의 v4 거래쌍을 만든다고 설명한다. 문서의 토큰 8개 예시에서는 거래쌍 28개가 모두 같은 훅과 같은 원래 풀을 쓴다. 이는 연결 구조를 설명하는 예시이며, 특정 8토큰 풀의 실제 배포를 관측했다는 뜻은 아니다.[3]
거래쌍 화면이 28개라고 독립된 준비 자산 묶음이 28개 생기는 것은 아니다. 스왑은 공유 풀의 상태를 바꾸고, 거래에 쓰인 토큰이 포함된 다른 교환 방향에도 영향을 준다. 같은 유동성 원천을 여러 번 거치는 라우터는 이 공유 상태를 고려해야 한다. 거래쌍 이름의 개수만으로 독립된 유동성 규모를 판단할 수 없는 이유다.[3]
이 규칙은 연결 구현에 따라 달라진다. V2 호환 원천에서는 훅 하나가 서로 다른 외부 거래쌍 여러 개를 담당하고, 팩토리와 두 토큰으로 각각을 찾는다. V3 호환 구조는 해당 수수료 등급이나 틱 간격도 사용한다. 문서의 Curve 구조에서는 훅 주소의 중복으로 같은 풀을 알아볼 수 있지만, 모든 구현에서 같은 주소가 같은 준비 자산을 뜻하지는 않는다.[3]
연결된 API 문서는 선택형 베타다
확대 발표에 따르면 Web App은 외부 유동성을 자동으로 포함한다. 반면 발표의 API 링크는 Guidestar Routing (Beta) 문서로 연결된다. 이 베타는 현재 Ethereum·Base·Robinhood Chain에서 서로 다른 두 토큰 사이의 같은 체인 EXACT_INPUT 스왑을 지원한다. EXACT_INPUT은 투입할 수량을 고정하는 방식이다. 이는 문서에 적힌 API 지원 범위이며, 모든 aggregator-hook 계약에 같은 제한이 있다고 추론한 내용이 아니다.[1][5]
명시적으로 선택하려면 x-api-experimental: true와 x-universal-router-swapsteps: true 헤더가 모두 필요하다. swapsteps 헤더만으로는 Guidestar를 요청하지 않는다. Guidestar는 BEST_PRICE 라우팅으로 CLASSIC AMM 견적을 반환한다. 요청에서 AMM 프로토콜과 UniswapX를 함께 지정해도 UniswapX는 고려하지 않는다.[5]
명시적으로 요청한 Guidestar 견적은 표준 라우팅으로 자동 전환되지 않는다. 지원 범위를 벗어난 요청은 HTTP 400, 지원되는 요청이지만 견적을 찾지 못한 경우는 HTTP 404를 반환한다. 문서는 베타 기간에 두 헤더를 뺀 표준 견적도 별도로 병렬 요청하라고 안내한다. 호출하는 서비스가 직접 구현해야 할 처리다.[5]
route가 빈 배열이어도 경로는 있을 수 있다
Guidestar 응답의 quote.route는 빈 배열이다. 실행 순서는 quote.swapSteps에 들어 있으며, 경로를 표시하거나 검증할 때 이 필드를 사용해야 한다. swapSteps의 존재는 Guidestar가 만든 견적임을 구분하는 기준이 된다. 별도의 quote.routeString은 디버깅용 자유 형식 문자열이므로 고정된 경로 형식처럼 파싱하면 안 된다.[5]
따라서 경로를 읽으려면 풀 개수나 익숙한 필드 하나보다 더 살펴봐야 한다. 실제로 어떤 유동성 원천을 쓰는지, 다른 거래쌍이 같은 상태를 건드리는지, 어느 엔진이 응답을 만들었는지, 견적 자체가 반환됐는지가 핵심이다. 훅의 연결 구조와 API 응답은 이 질문의 서로 다른 부분에 답한다.[3][5]
이어서 읽을 이야기
같은 주제를 다른 사례와 배경에서 살펴보세요.


