Uniswap V4에서 Hook 데이터 표준 설정

avatar
Bitpush
05-30
이 기사는 기계로 번역되었습니다
원문 표시

출처: 등련 커뮤니티
원본 링크: https://mp.weixin.qq.com/s/Jz3ONarTdRuCEzJ0_PfjrQ

후크는 Uniswap v4의 핵심 기능으로, 개발자가 유동성 풀의 동작을 사용자 지정하고 확장할 수 있도록 합니다. 이 가이드의 목표는 후크 개발자, 후크 데이터 인덱서, 분석가를 위한 표준을 확립하여 개발자와 LP부터 분석가까지 모든 사용자가 후크 데이터로 작업할 때 동일한 공유 프레임 사용할 수 있도록 하는 것입니다.

Hook 및 Uni v4

하지만 먼저, v4에 후크가 어떻게 적용되는지 알아보겠습니다. 이를 PoolManager 계약에 대한 플러그인이나 외부 API라고 생각해 보세요. 각 풀은 하나의 후크에만 연결될 수 있지만, 단일 후크 계약은 여러 풀을 서비스할 수 있습니다. 후크를 사용하여 풀을 초기화하면 풀은 "후크 풀"(일반 풀과 반대)이 되고 후크 자체는 "초기화"된 것으로 간주됩니다. 이와 대조적으로 풀이 없는 후크 계약은 핵심 후크 함수의 하위 집합을 구현하는 사용되지 않는 Solidity 계약일 뿐입니다.

Uniswap v4는 싱글톤이라는 점을 기억하세요. PoolManager는 모든 v4 풀과 해당 상태를 한곳에서 관리합니다. 다음 시각화는 풀, 후크, PoolManager라는 부분이 어떻게 관련되어 있는지 보여줍니다.

이미지-20240930222847819.png

후크 표준

후크에는 모든 Solidity 코드가 포함될 수 있지만, 모두 Uniswap v4의 10개 핵심 후크 함수에 고정됩니다. 이러한 기능은 풀 수명 주기의 주요 지점(예: 스왑 또는 유동성 수정 전/후)에 해당하며 사용자 정의를 위한 명확한 "진입 지점"을 제공합니다. 참고로 Uni v4 코어 라이브러리의 Hooks.sol 계약과 모든 후크 진입점을 정의하는 OpenZeppelin에서 만든 BaseHook.sol 템플릿을 참조하세요.

이러한 핵심 기능 외에도 4개의 "델타 반환" 플래그가 있어 가능한 "후크 플래그"의 총 개수가 14개가 됩니다. 각 후크 계약은 주소의 마지막 14비트를 통해 14개 플래그 중 어떤 플래그를 구현하는지 나타냅니다(이 비트를 읽는 방법은 이전 v4 데이터 가이드를 참조하세요). 이를 통해 개발자와 인덱서는 후크의 속성을 빠르게 결정할 수 있습니다. 반환 델타에 대해 잘 모르는 경우 v4 문서에서 사용자 지정 회계, 잠금 해제 콜백, 델타 및 BeforeSwapDelta를 참조하세요.

이미지-20240930222847819.png

후크는 표준 10개 핵심 기능 이상을 수행할 수 있지만, 다음 기능은 일관된 기반을 만듭니다.

  • 개발자는 알려진 "진입점"을 활용하여 풀 동작을 사용자 정의할 수 있습니다.
  • 인덱서는 동일한 코어 후크 호출에 대해 다양한 후크에서 추적 데이터를 안정적으로 구문 분석할 수 있습니다.

많은 경우, 후크는 단순히 일반 v4 PoolManager 흐름을 수정하거나 확장하고 Uniswap v4 핵심 계약에서 공통 이벤트를 상속합니다. 그러나 일부 후크는 일부 논리를 우회하거나 대체하여 기본 v4 이벤트가 건너뛰어지거나 부정확해질 수 있습니다. 이러한 차이를 메우고 볼륨, TVL, 수수료에 대한 정확한 지표를 보장하기 위해 우리는 일련의 후크별 이벤트를 제안합니다. 적절한 시기에 발행함으로써 후크는 발견 가능한 상태로 유지되고, 분석은 신뢰할 수 있으며, LP는 완전한 리스크-보상 그림을 얻을 수 있습니다.

우리는 OpenZeppelin과 협력하여 이러한 표준을 Uniswap Hooks 라이브러리에 통합하고, Atrium Academy와 협력하여 개발자 교육에 이를 도입하고 있습니다. 모든 주요 표준(예: ERC20, EIP1559)과 마찬가지로, 성공을 위해서는 광범위한 커뮤니티의 지원이 중요합니다.

표준 후크 이벤트

개발자, LP, 분석가, 사용자가 모두 통합된 후크 데이터 해석 프레임 공유할 수 있도록 이러한 이벤트를 내보내는 것이 좋습니다. 이 표준을 따르면 개발 중인 오픈 소스 저장소에도 액세스할 수 있으므로 후크의 메트릭을 쉽게 검색하고 프런트엔드 디스플레이에 통합하고 내부 분석에 사용할 수 있습니다. 이를 통해 후크가 더 넓은 생태계에서 계속 보이고 가치를 유지할 수 있습니다.

 이벤트 HookSwap(bytes32 인덱스 ID, // v4 풀 ID 주소 인덱스 발신자, // 라우터 교체됨 int128 amount0, int128 amount1, uint128 hookLPfeeAmount0, uint128 hookLPfeeAmount1); 이벤트 HookFee(bytes32 인덱스 ID, // v4 풀 ID 주소 인덱스 발신자, // 라우터 교체됨 uint128 feeAmount0, uint128 feeAmount1); 이벤트 HookModifyLiquidity(bytes32 인덱스 ID, // v4 풀 ID 주소 인덱스 발신자, // 라우터 주소 int128 amount0, int128 amount1); 이벤트 HookBonus(bytes32 인덱스 ID, // v4 풀 ID uint128 amount0, uint128 amount1);

네 가지 이벤트를 모두 내보낼 필요는 없습니다. 후크 동작과 관련된 이벤트만 내보내면 됩니다.

사용 사례 흐름도

다음 다이어그램은 후크의 수명 주기 동안 각 이벤트가 발생하는 시기를 보여줍니다. 이러한 시나리오는 겹칠 수 있다는 점을 명심하세요. 귀하의 후크는 "사용자 정의 곡선"과 "후크 수수료" 모두에 있을 수 있으므로 두 흐름 모두에 대한 이벤트를 내보내야 합니다.

사용자 정의 곡선

이미지-20240930222847819.png

v4에서는 개발자가 사용자 정의 회계를 사용하여 내장된 v3 중앙화된 유동성을 우회하고, 자체 스왑 곡선을 구현할 수 있습니다. 이를 통해 사용자 정의 유동성 제공 및 스왑 로직이 가능해집니다. 사용자 정의 곡선은 Hooks.BEFORE_SWAP_FLAG 및 Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG를 통해 활성화됩니다. 이러한 곡선의 예는 다음과 같습니다.

  • 상수와 곡선
  • 스테이블스왑
  • 램버트
  • 비대칭 곡선
  • 동적 곡선
  • 계단형 곡선

이러한 사용자 지정 곡선은 내장된 ModifyLiquidity 이벤트의 방출을 우회하고 잘못된 Swap 이벤트 정보를 생성하므로, 후크 계약에서 HookSwap 및 HookModifyLiquidity 이벤트를 방출하는 것이 좋습니다.

비동기 스왑

이미지-20240930222847819.png

비동기 스왑은 스왑 실행을 나중으로 미루어 후크가 스왑 순서를 제어할 수 있게 하고 스왑 수행자를 MEV 샌드위치 공격으로부터 보호합니다. 또한, 비동기 스왑은 v4 스왑 로직을 사용자 정의 곡선으로 대체하여 v3와 유사한 스왑 구현을 효과적으로 우회할 수도 있습니다.

Hooks.BEFORE_SWAP_FLAG 및 Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG를 사용하여 비동기 스왑이 활성화됩니다. 배치 기반 실행 모델이므로 개별 스왑마다 HookSwap 이벤트를 발생시키는 것보다는 배치가 완료될 때 HookSwap 이벤트를 발생시키는 것이 좋습니다.

OpenZeppelin이 개발한 비동기 교환 템플릿은 여기에서 찾을 수 있습니다.

후크 수수료

이미지-20240930222847819.png

후크는 스왑이나 유동성 수정에 대해 고정 금액 또는 동적으로 계산되는 수수료를 부과할 수 있습니다. 후크가 교환자에게 귀중한 서비스를 제공하는 경우 교환 중에 수수료를 청구할 수도 있습니다. 마찬가지로, 후크는 유동성 수정에 대해 수수료를 부과할 수 있습니다. 예를 들어, 후크는 특정 기간 내에 유동성을 제거하는 데 높은 수수료를 부과하여 적시(JIT) 유동성에 대한 처벌을 내릴 수 있습니다. 정적 후크 충전을 구현하는 예는 여기를 확인하세요.

후크 리워드

이미지-20240930222847819.png

후크 보상은 후크 수수료의 반대 개념입니다. 후크는 스왑퍼에게 요금을 청구하는 대신, 이러한 보상 메커니즘을 구현한 풀을 통해 스왑을 장려하기 위해 사용자에게 리베이트를 제공합니다. 후크는 이를 달성하기 위해 BEFORE_SWAP_RETURNS_DELTA_FLAG 및/또는 AFTER_SWAP_RETURNS_DELTA_FLAG와 같은 return-delta-flags를 사용할 수 있습니다.

데이터 인덱서용

이제 개발자가 후크 표준을 통합하는 방법을 살펴보았으니, 후크 데이터를 효과적으로 인덱싱하는 방법을 알아보겠습니다.

  1. 초기화된 후크 식별
    1. 풀 생성 중에 v4 PoolManager에서 Initialize 이벤트를 모니터링합니다.
  2. 이 이벤트는 풀이 후크 풀(유효한 후크 주소가 표시됨)인지 아니면 바닐라 풀(주소가 null 주소임)인지를 나타냅니다.
  3. 이러한 주소를 추적하면 데이터 인덱스 초기화 후크의 전체 목록을 컴파일할 수 있습니다.
  4. 인덱스 후크 활동
    1. 모든 초기화된 후크는 10개의 핵심 후크 함수를 구현하고 우리가 도입한 표준 후크 이벤트를 발생시켜야 합니다.
  5. 이러한 기능과 이벤트에 대한 로그와 추적 데이터를 모니터링하면(부록의 ABI 참조) 각 후크의 활동을 일관되고 표준화된 방식으로 캡처할 수 있습니다.

후크 메트릭스

여기까지 읽어주셔서 축하드립니다. 이제 거의 결승선에 다다랐습니다!

이제 후크가 Uniswap v4와 어떤 관련이 있는지, 후크 표준과 다양한 사용 사례 흐름에 대해 살펴보았으니, 이제 메트릭을 살펴볼 차례입니다. 공통된 용어를 확립하면 후크 관련 지표와 v4 지표를 논의할 때 논의 내용을 명확하고 일관되게 이해할 수 있습니다.

우리는 TVL과 거래량이라는 두 가지 주요 지표 범주에 초점을 맞출 것입니다. 아래에서는 이러한 측정 항목을 정의하고 계산에 대한 권장 사항을 제공합니다.

TVL(총 잠금 가치)

전체 TVL

Uniswap v4의 전체 TVL은 프로토콜에 잠긴 모든 유동성의 총 가치입니다(일반적으로 USD로 측정). 여기에는 싱글톤 v4 풀 관리자 계약에 보유된 유동성과 외부에서 초기화된 후크 계약에 보유된 유동성이 포함됩니다. 후크 계약은 최소한 하나의 Uniswap v4 풀에 등록되면 "초기화"된 것으로 간주됩니다.

이미지-20240930222847819.png

싱글턴 TVL

싱글턴 TVL은 Uniswap v4의 핵심(싱글턴) 풀 관리자 계약에만 보유되는 총 유동성의 일부를 말합니다. 외부 후크를 사용하여 풀을 초기화하더라도 싱글턴 TVL은 후크 계약에서 보유한 외부 유동성을 제외하고 핵심 계약 자체에 잠긴 자산만 계산합니다.

이미지-20240930222847819.png

외부 TVL

외부 TVL은 Uniswap v4 핵심 풀 관리자 계약 외부, 특히 초기화된 후크 계약에 저장된 총 유동성을 말합니다. 후크 계약은 최소한 하나의 Uniswap v4 풀에 등록되면 "초기화"된 것으로 간주됩니다.

이미지-20240930222847819.png

후크 TVL

Hook TVL은 Hook을 사용하는 풀의 총 유동성을 나타냅니다. 여기에는 일반 후크 풀(유동성은 Uniswap v4 Pool Manager 계약에 보관됨)과 특수 후크 풀(예: 사용자 정의 곡선)(유동성은 외부 후크 계약에 있음)이 포함됩니다.

이미지-20240930222847819.png




고급 후크 시나리오에 대한 참고 사항

후크는 위에서 설명한 단순한 "잠금" 모델을 넘어서는 더욱 복잡한 유동성 흐름을 도입할 수 있는 잠재력을 가지고 있습니다. 예를 들어, 재담보 후크는 v4 풀 관리자 계약에 머무르는 대신 수익을 얻을 수 있는 외부 대출 프로토콜에 유동성을 배치할 수 있습니다. 마찬가지로, 적시(JIT) 유동성 후크는 스왑에 필요할 때만 다른 곳에서 유동성을 클레임 수 있습니다. 이러한 시나리오는 v4의 "TVL"(싱글톤 및 외부)이 스왑에 사용된 실제 자본이나 특정 시점에 프로토콜에 상주하는 자본과 다를 수 있음을 의미합니다.

우리는 광범위한 Uniswap 커뮤니티와 Hook 개발자들과 적극적으로 협력하여 이러한 고급 사용 사례에 대한 TVL 정의와 측정 방법론을 개선하고 있습니다. 개정된 TVL 표준이 확정되면 즉시 업데이트를 공유해드리겠습니다.

믿다

TVL은 두 가지 방법으로 결정할 수 있습니다.

  1. 유동성 변화 이벤트 추적 – 스왑을 포함한 유동성 변화를 순 총 유동성으로 모니터링합니다.
  2. 토큰 흐름 추적 - 관련 계약의 유입 및 유출을 측정합니다.

v4의 싱글톤 아키텍처로 인해 풀 수준에서는 TVL을 더 이상 토큰 흐름만으로 파생할 수 없습니다. 그러나 전반적인 TVL을 더 광범위하게 계산하는 경우, 토큰 흐름을 추적하는 것이 유동성 수정 이벤트를 모니터링하는 것보다 더 효과적인 경우가 많습니다.

용량

거래량은 Uniswap v4의 총 거래 활동(일반적으로 USD)을 나타내며 거래별로 측정됩니다. 예를 들어, 2,673.83 USDC를 1 ETH로 교환하는 경우(2월 13일 오후 5시 23분 기준 ETH 가격), 거래량은 2,673.83달러로 계산되며, 두 자산의 총액의 두 배가 아닙니다.

총 거래량(기간별)

총 거래량(기간별)은 바닐라 및 후크 풀을 포함한 모든 Uniswap v4 풀의 누적 거래량을 특정 기간 동안 나타낸 것입니다.

이미지-20240930222847819.png

Hooks 거래량(시간 경과에 따른)

후크 볼륨(기간별)은 주어진 기간 동안 후크 풀의 총 볼륨입니다. 여기에는 자체 사용자 정의 논리 및/또는 유동성을 사용하는 반환 델타 후크(예: 사용자 정의 곡선 또는 비동기 스왑)를 통해 용이해진 스왑 금액이 포함됩니다.

이미지-20240930222847819.png

바닐라 거래량(기간별)

바닐라 볼륨(일정 기간 동안)은 바닐라 풀, 즉 어떠한 후크를 사용하여 초기화되지 않은 풀의 총 볼륨을 말합니다.

이미지-20240930222847819.png

믿다

Uniswap v4에서 거래량을 정확하게 측정하려면 두 가지 주요 접근 방식이 있습니다.

  1. 이벤트 기반 추적 – 방출된 이벤트를 추적할 수 있지만 전체적인 상황을 파악하려면 다음 사항도 모니터링해야 합니다.
  • v4 핵심 계약에서 이벤트를 교환합니다.
  • 델타 반환 후크 계약(예: 사용자 정의 곡선)의 HookSwap 이벤트. 스왑 이벤트에만 의존하면 델타 반환 후크로 인해 발생하는 볼륨을 놓치게 됩니다.
  • 추적 데이터 인덱싱 – 보다 포괄적인 접근 방식은 v4에서 교환 함수 호출에 대한 추적 데이터를 인덱싱하는 것입니다. 이를 위해서는 swapDelta 필드를 구문 분석하여 스왑 매개변수를 기반으로 amount0과 amount1을 재구성해야 합니다. 이 방법을 사용하면 델타 반환 후크에서 처리하는 스왑을 포함하여 모든 스왑이 포착됩니다.
  • Dune과 Allium에서는 추적 데이터 인덱스를 사용하여 dex.trades에서 전체 거래량을 조회할 수 있습니다. 또한, 우리는 이를 v4 오픈소스 서브그래프에 적용하기 위해 Uniswap Labs와 협력하고 있습니다.

    결론

    이 가이드가 표준과 이벤트부터 인덱싱과 분석까지 Uniswap v4 후크 데이터 환경을 명확하게 설명하는 데 도움이 되기를 바랍니다. 마무리하면서, 우리의 주요 행동 촉구는 다음과 같습니다.

    • Hook 개발자: 4개의 표준 이벤트를 가져와 권장 지점에서 발생시킵니다. 이를 통해 생태계의 모든 사람이 후크의 동작을 쉽게 이해하고 통합할 수 있습니다. 이 표준을 준수하면 곧 출시될 오픈 소스 저장소를 사용할 수 있으며, 이를 통해 후크에 대한 메트릭을 원활하게 검색하고 프런트엔드에 표시하고 내부적으로 분석할 수 있습니다. 이를 통해 후크를 더 광범위한 생태계의 최전선에 유지하고 팀의 인력 시간을 대량 절약할 수 있습니다.
    • 인덱서 및 분석기: 파이프라인을 업데이트하여 초기화 후크를 감지하고 표준 후크 이벤트를 구문 분석합니다. 이를 통해 v4에서는 스왑, 수수료 및 유동성 변화에 대한 포괄적인 적용이 보장됩니다.

    ERC20이나 EIP1559 표준이 등장한 것과 같은 방식으로 협력하면 Uniswap v4 후크에 대한 일관되고 발견 가능하며 투명한 미래를 형성할 수 있습니다!

    • 원본 링크: https://uniswapfoundation.mirror.xyz/KGKMZ2Gbc_I8IqySVUMrEenZxPnVnH9-Qe4BlN1qn0g
    • 등련 커뮤니티 AI 어시스턴트가 훌륭한 영어 기사를 번역해 드립니다. 번역에 오류가 있다면 용서해주세요~

    출처
    면책조항: 상기 내용은 작자의 개인적인 의견입니다. 따라서 이는 Followin의 입장과 무관하며 Followin과 관련된 어떠한 투자 제안도 구성하지 않습니다.
    라이크
    즐겨찾기에 추가
    코멘트