> For the complete documentation index, see [llms.txt](https://docs.pancakeswap.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pancakeswap.finance/kr/undefined/pancakeswap-infinity/hooks.md).

# Hooks

{% hint style="info" %}
개발자이거나 Hook 개발에 대한 자세한 기술 문서가 필요하시다면 [여기](https://developer.pancakeswap.finance/contracts/infinity/guides/develop-a-hook)를 방문하세요.
{% endhint %}

Hooks는 개발자가 PancakeSwap Infinity 유동성 풀의 동작을 확장하고 커스터마이징할 수 있게 해 주는 강력한 애드온입니다. 유동성 풀에 새로운 기능을 더해 주는 "플러그인"이나 "위젯"이라고 생각하시면 됩니다.

#### 🔍 Hooks란 무엇인가요?

* Hooks는 개발자, 프로토콜, 커뮤니티 구성원 등 누구나 만들 수 있는 외부 스마트 컨트랙트로, 유동성 풀에 연결되어 풀의 동작을 향상하거나 수정합니다.
* 각 풀에는 하나의 Hook만 연결할 수 있지만, 하나의 Hook이 여러 풀을 지원할 수 있습니다.
* Hooks는 다음과 같은 주요 동작 전후에 커스텀 코드를 실행할 수 있습니다.
  * 풀 초기화
  * 스왑
  * 유동성 추가/제거
  * 도네이션(Donate)<br>

**⛓️ Hooks의 작동 방식:**

* Hook은 풀 생성 시 선택되며 이후에는 변경할 수 없습니다.
* Hook 컨트랙트는 특정 동작(스왑, 유동성 추가 등)에서 트리거되어, 컨트랙트에 정의된 대로 해당 동작 전후에 로직을 실행합니다.
* 예를 들어 Hook은 다음을 할 수 있습니다.
  * CAKE 보유자에게 스왑 수수료 할인 제공
  * 커스텀 수수료 부과 및 보상 분배
  * 스테이블스왑이나 TWAMM 방식 주문 같은 새로운 스왑 로직 활성화<br>

#### ⚙️ Hook 콜백

Hooks는 열 가지 특정 시점에 트리거될 수 있습니다. 개발자는 구현하려는 시점을 선택할 수 있습니다.

* beforeInitialize / afterInitialize
* beforeAddLiquidity / afterAddLiquidity
* beforeRemoveLiquidity / afterRemoveLiquidity
* beforeSwap / afterSwap
* beforeDonate / afterDonate<br>

이를 통해 Hooks로 매우 커스터마이징 가능한 모듈식 동작을 구현할 수 있습니다.

#### 🔧 두 가지 유형의 Hooks

**유형 1: 승인이 필요 없음**

이 Hooks는 자동으로 실행되며 사용자 권한이 필요하지 않습니다. 스왑이나 유동성 변경 같은 동작에 의해 트리거됩니다.

예시:

* 동적 수수료: 시장 변동성에 따라 스왑 수수료 조정
* 수수료 리베이트: CAKE를 보유했거나 거래량이 많은 사용자에게 할인 제공

예시 흐름 (CAKE 수수료 할인):

1. 사용자가 스왑을 시작합니다.
2. Hook이 `beforeSwap` Hook 콜백을 통해 사용자의 CAKE 잔액을 확인합니다.
3. 정의된 기준에 따라 사용자가 충분한 CAKE를 보유하고 있으면 풀 수수료를 50% 할인받습니다.
4. 나머지 트랜잭션은 평소대로 진행됩니다.<br>

{% hint style="success" %}
이 Hooks는 별도의 UI나 추가 상호작용이 필요하지 않습니다. 혜택이 자동으로 적용됩니다.
{% endhint %}

**유형 2: 사용자 승인이 필요함**

이 Hooks는 사용자가 직접 상호작용하고 승인을 제공해야 하며, 자금 전송이 필요할 수 있습니다. 주로 포지션을 생성하거나 관리하기 위한 용도입니다.

예시:

* 지정가 주문: 목표 가격에 도달했을 때만 스왑을 실행합니다.
* TWAMM: 큰 주문을 작은 조각으로 나누어 더 나은 체결을 제공합니다.
* 액티브 유동성 관리: 최적의 수익을 위해 LP 포지션을 자동으로 관리합니다.

예시 흐름 (지정가 주문 Hook):

1. 사용자가 (일반적인 스왑 UI가 아니라) Hook 컨트랙트와 직접 상호작용합니다.
2. 지정가, 토큰 페어, 수량 같은 정보를 입력합니다.
3. Hook이 주문을 나타내는 영수증 토큰을 발행합니다.
4. 이후 풀 가격이 목표에 도달하면 Hook이 afterSwap을 사용해 주문을 실행합니다.
5. 사용자는 영수증 토큰을 반환하여 스왑된 자산을 수령할 수 있습니다.

{% hint style="info" %}
이 Hooks는 커스텀 UI가 필요한 경우가 많으며, 사용자는 Hook 컨트랙트가 자금을 보관하도록 신뢰하고 승인해야 합니다.
{% endhint %}

#### 🚀 활용 사례와 혁신

Hooks는 다음을 포함한 무한한 가능성을 열어 줍니다.

* 커스텀 AMM (예: 스테이블코인 곡선)
* 유동성 마이닝 보상
* 자동화된 거래 전략, 유동성 관리
* 온체인 지정가 주문 및 기타 주문 유형
* 동적 가격 책정 및 수수료 조정
* 수익을 높이는 LP 전략<br>

Hooks를 사용하면 개발자는 PancakeSwap Infinity의 기존 인프라를 활용해 완전히 새로운 DeFi 경험을 구축할 수 있으며, 개발 속도를 높이고 비용을 줄일 수 있습니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.pancakeswap.finance/kr/undefined/pancakeswap-infinity/hooks.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
