궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

Uniswap v4 훅이 바꾸는 풀 동작과 검토 항목

Uniswap v4 훅이 풀 초기화·유동성·스왑 전후에 실행되는 방식과 주소 권한 플래그, return delta, 외부 관리자 위험을 설명합니다.

여러 부속장치가 유동성 수로에 연결된 유니콘 조형물로 Uniswap 훅을 표현한 그림
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

v4 풀은 선택적으로 훅 하나를 연결하며 기존 풀에 나중에 추가하거나 교체할 수 없다.
before·after 함수와 return delta 권한은 훅 주소 하위 비트 플래그로 PoolManager에 알려진다.
훅의 수수료·접근 통제·외부 호출은 코어 풀과 별도의 스마트 계약 위험을 만든다.

Uniswap v4 훅은 특정 풀의 initialize, 유동성 변경, swap, donate 전후에 호출되는 외부 스마트 계약입니다. 훅은 동적 수수료, 접근 제한, 별도 회계 등을 구현할 수 있어 같은 토큰 쌍과 fee라도 동작이 달라집니다. 풀 생성 때 PoolKey에 훅 주소가 고정되므로 사용자는 훅 코드, 주소 비트에 인코딩된 권한, 관리자와 업그레이드 가능성, 반환 delta를 확인해야 합니다.

훅은 풀 생명주기의 지정 지점에 개입한다

Uniswap v4에서 훅은 PoolManager가 호출하는 외부 계약입니다. beforeInitialize와 afterInitialize, 유동성 추가·제거 전후, swap 전후, donate 전후 중 필요한 함수를 구현합니다. 모든 v4 풀이 훅을 가져야 하는 것은 아니며 표준 집중 유동성 동작만 쓰는 풀도 만들 수 있습니다.

풀마다 훅 주소는 하나지만 한 훅 계약이 여러 풀을 서비스할 수 있습니다. 훅이 공유 상태를 쓴다면 한 풀의 활동이 다른 풀의 한도나 수수료에 영향을 줄 수 있습니다. 같은 토큰 쌍이라는 정보만으로 풀 행동을 추정하지 말고 PoolKey 전체를 확인합니다.

훅 호출 지점과 바뀔 수 있는 동작
호출 지점 가능한 용도 검토 항목
before/afterInitialize 초기 조건 검증 초기 가격·허용 목록
before/afterAddLiquidity LP 접근·보상 예치 제한·별도 회계
before/afterSwap 동적 수수료·곡선 delta·외부 가격 의존
before/afterDonate 기부 처리 보상 배분·재진입

권한 플래그는 훅 주소의 하위 비트에 들어간다

Uniswap 공식 문서는 각 훅 함수 권한이 계약 주소의 하위 비트에 인코딩된다고 설명합니다. Hooks.sol은 beforeSwap, afterSwap 같은 플래그와 return delta 플래그를 상수로 정의하고 주소가 선언 권한과 맞는지 검사합니다. 개발자는 CREATE2 salt를 찾아 원하는 비트를 가진 주소에 배포합니다.

주소 플래그는 어떤 진입점이 호출될 수 있는지를 알려 주지만 코드가 안전하다는 인증은 아닙니다. 플래그가 afterSwap을 나타내면 실제 구현이 무엇을 저장하고 호출하는지 verified source에서 읽습니다. 프록시를 가리키거나 외부 설정 계약에 의존하면 현재 구현과 변경 권한을 함께 봅니다.

권한 비트는 호출 가능 지점의 목록이지 훅 행동의 안전 보증서가 아니다.

JOBCOIN 해설

return delta 권한은 풀 회계 결과를 조정할 수 있다

일반 before·after 훅은 검증과 부수 작업을 수행하지만 특정 플래그를 가진 훅은 swap이나 유동성 변경에서 반환 delta를 통해 PoolManager가 정산할 금액에 영향을 줄 수 있습니다. 커스텀 곡선, 훅 수수료, 별도 자산 회계에 활용될 수 있는 강한 권한입니다.

사용자는 quote와 실제 amount delta가 어떤 규칙으로 달라지는지 확인합니다. 훅이 외부 오라클이나 별도 토큰 가격을 읽으면 stale price, 조작, decimals 오류가 추가됩니다. 최소 수령량과 최대 지불량 조건이 훅 적용 뒤 최종 delta에 대해 검사되는지도 봅니다.

  • PoolKey의 token0·token1·fee·tickSpacing·hooks를 기록한다.
  • 훅 주소의 before·after·return delta 플래그를 디코딩한다.
  • verified source와 관리자·업그레이드 권한을 확인한다.
  • quote와 실제 최종 delta, 별도 수수료를 비교한다.

외부 호출과 재진입 경계를 검토한다

훅은 swap 중 다른 계약을 호출하거나 상태를 갱신할 수 있습니다. PoolManager의 lock·settlement 모델을 따르더라도 훅 자체의 외부 프로토콜, 토큰 callback, 관리자 함수에서 재진입과 실패 경로가 생길 수 있습니다. 호출 실패가 전체 swap을 revert하는지 fallback 동작이 있는지 확인합니다.

동적 수수료 훅은 수수료를 바꿀 권한 주체와 상한을 봅니다. 허용 목록 훅은 누가 목록을 편집하는지, pause가 LP 인출까지 막는지 구분합니다. 마케팅 이름보다 실제 함수 selector와 storage 변경 이벤트를 기준으로 권한을 기록합니다.

풀 생성 뒤 훅을 교체할 수 없다는 경계를 이해한다

공식 문서에 따르면 훅은 풀 초기화 때 PoolKey 일부로 정해지며 기존 풀에 추가·제거·교체할 수 없습니다. 다른 훅을 쓰려면 새 풀을 만들어야 합니다. 다만 훅 주소의 코드가 프록시거나 외부 설정을 읽으면 같은 주소의 행동이 사실상 변할 수 있습니다.

따라서 불변 훅 주소와 불변 로직을 같은 뜻으로 보지 않습니다. 코드 해시, 구현 슬롯, 관리자, timelock, 설정 변경 이벤트를 감시합니다. 새 풀로 유동성이 이동할 때 기존 LP 포지션이 자동 이전되는지도 별도 확인합니다.

거래 전후 풀과 훅 이벤트를 함께 남긴다

실행 전 quoter가 훅 데이터를 요구하면 출처와 의미를 확인합니다. deadline, slippage, hookData, recipient를 기록하고 시뮬레이션 결과를 봅니다. 실제 거래에서는 PoolManager 이벤트뿐 아니라 훅이 낸 수수료·보상·상태 이벤트도 확인합니다.

감사는 v4 코어 감사만으로 끝나지 않습니다. 개별 훅 코드와 배포 매개변수, 외부 의존성, 운영 키를 별도로 검토해야 합니다. 훅이 없거나 단순한 풀과 수익률을 비교할 때 추가 보상뿐 아니라 실패·검열·업그레이드 위험을 가격에 반영합니다.

자주 묻는 질문

모든 Uniswap v4 풀에 훅이 있나요?

아닙니다. 훅은 선택 사항이며 표준 집중 유동성 동작만 사용하는 풀도 가능합니다.

훅 주소의 권한 비트가 맞으면 안전한가요?

비트는 호출될 함수 범위를 나타낼 뿐 코드 품질과 관리자 안전을 보증하지 않습니다. 구현과 외부 의존성을 검토해야 합니다.

기존 풀의 훅을 바꿀 수 있나요?

PoolKey에 고정돼 직접 교체할 수 없습니다. 다른 훅을 쓰려면 새 풀을 만들지만 프록시 훅의 구현 변경 가능성은 별도입니다.

직접 확인한 자료

자료 확인 2026.09.27
  1. Uniswap v4 Hooksdocs.uniswap.org
  2. Hooks.solgithub.com
AI 활용 안내

이 글은 AI로 초안을 구성한 뒤 공개 원문과 기술 문서를 대조해 작성했습니다. 대표 이미지는 AI 생성 개념 일러스트이며 실제 사건 사진이나 가격 차트가 아닙니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙과 정정 안내 →