> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 오라클 및 토큰 위험

> Raydium의 오라클 입력 처리 방식과 Token-2022 확장 기능(동결 권한, 전송 훅, 영구 위임자, 기본 동결)이 도입하는 특정 위험 - 프로그램이 보호하는 것과 사용자가 수용해야 하는 것을 포함합니다.

<Info>
  **이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.**

  [영문판 보기 →](/security/oracle-and-token-risks)
</Info>

<Info>
  Raydium의 핵심 상품들은 가격 책정을 위해 외부 오라클에 의존하지 않습니다 — 풀 상태 자체가 오라클입니다. 다만 API와 SDK는 사용자에게 표시할 USD 가격 책정을 위해 외부 오라클을 사용하며, Token-2022 민트는 SPL Token보다 풍부한 제어 기능을 제공하는데, 그 중 일부는 풀의 신뢰 모델을 근본적으로 변경합니다. 이 페이지에서는 둘 다를 다룹니다.
</Info>

## Raydium의 오라클

### 내부: 풀이 오라클이다

AMM v4, CPMM, CLMM의 경우, 프로토콜의 "현재 가격" 정의는 순전히 풀 상태에서 도출됩니다:

* AMM v4 / CPMM: `price = vaultB_balance / vaultA_balance` (소수 자릿수 포함).
* CLMM: `price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB)`.

스왑, 입금 또는 출금 중에 외부 오라클을 참조하지 않습니다. 이것이 AMM 설계의 "신뢰 불필요" 부분입니다: 풀 수학이 정확하면 가격 피드의 외부 조작이 이를 손상시킬 수 없습니다.

### CLMM `ObservationState`를 TWAP 오라클로

CLMM 풀은 과거 `sqrt_price` 스냅샷을 기록하는 `ObservationState` 계정을 유지합니다. 다른 프로그램은 이를 활용하여 조작에 강한 시간 가중 평균 가격을 도출할 수 있습니다:

```rust theme={null}
// 단순화된 TWAP: (현재, N슬롯 전)의 평균.
let obs_now  = load_observation(pool, Clock::slot());
let obs_past = load_observation(pool, Clock::slot() - 300);  // ~2분 전
let twap = (obs_now.price_cumulative - obs_past.price_cumulative)
         / (obs_now.slot - obs_past.slot);
```

이것은 Uniswap V3가 사용하는 동일한 패턴입니다. 단기 가격 조작(고래가 임시로 풀을 움직이는 경우)은 수백 개의 슬롯에 평균화되므로 TWAP을 손상시키지 않습니다.

CLMM 민트에 더 안전한 가격 피드가 필요한 프로그램(청산 오라클, 옵션 가격 책정 등)은 즉시 가격이 아니라 ObservationState TWAP을 사용해야 합니다.

**CLMM 즉시 가격을 합성에 사용하지 마세요.** 단일 대규모 스왑은 얕은 풀에서 현물 가격을 10% 이상 변동시킬 수 있으며, TWAP은 이를 완화합니다. 데이터 레이아웃은 [`products/clmm/accounts#observation-state`](/ko/products/clmm/accounts)를 참고하세요.

### 외부: 프론트엔드/API의 USD 가격 책정

Raydium의 프론트엔드와 `api-v3.raydium.io`는 USD 값(TVL, 수수료 APR, \$ 거래량)을 표시합니다. 이들은 다음에서 나옵니다:

* **Pyth** — 주요 민트의 기본 오라클.
* **Jupiter의 집계 가격** — 폴백.
* **풀에서 도출한 가격** — 외부 오라클 커버리지가 없는 장꼬리 민트용.

USD 표시는 순전히 시각적 목적입니다 — 온체인 작업은 절대 Pyth를 읽지 않으며 풀 수학은 USD를 사용하지 않습니다. Pyth가 민트에 대한 데이터 제공을 중단하면 UI는 "—"를 표시합니다. 풀은 계속 작동합니다.

### 오라클 조작은 Raydium 풀에 적용되지 않음

풀 상태가 오라클이므로, 버그 현상금 문헌이 의미하는 의미에서 "오라클 공격"은 없습니다 — 공격자가 손상시킬 수 있는 외부 조작 가능한 데이터 소스가 없습니다. 풀 상태에 대한 경제적 공격(플래시 론 스타일 조작)은 [`security/attack-vectors`](/ko/security/attack-vectors)에서 다룹니다.

## Token-2022 확장 위험

SPL Token-2022(일명 "Token Extensions")는 확장을 통해 민트에 구성 가능한 동작을 추가합니다. 일부 확장은 이를 포함하는 풀의 신뢰 속성을 변경합니다. Raydium 프로그램은 일부는 자동으로 처리하고 다른 일부는 사용자 경고로 표시합니다.

### 전송 수수료

**정의:** 모든 전송에서 발신자가 민트 권한에 지급하는 구성 가능한 수수료(전송의 백분율, 절대 용어로 `maximum_fee` 상한까지).

**위험:** 수수료는 민트의 수수료 설정 권한자가 변경할 수 있습니다. 수수료가 1%일 때 유동성을 입금했는데 권한자가 50%로 올리면, 후속 스왑은 예상보다 훨씬 적게 반환됩니다.

**Raydium의 완화:** 풀은 스왑 시간에 현재 `transferFeeConfig`를 읽고 수학을 조정합니다. 풀 자체는 손상되지 않지만 사용자는 더 나쁜 결과를 봅니다. 수수료 권한자는 지연된 수수료 변경을 예약할 수 있으며, Raydium의 UI는 임박한 수수료 변경이 있는 풀을 표시합니다.

**잔존 위험:** 진행 중인 스왑 중에 악의적인 수수료 권한자가 수수료를 변경하면, `minimumAmountOut`이 하향선을 보호합니다 — tx가 되돌아갑니다. 민트 발행자를 신뢰하면 괜찮습니다. 신뢰하지 않으면 LP를 하지 마세요.

### 전송 훅

**정의:** 전송은 별도의 프로그램(훅)을 호출하여 사용자 정의 검증 또는 부작용을 실행합니다.

**위험:** 훅은 스왑 중 풀의 내부 전송을 포함한 모든 전송을 차단할 수 있습니다. 업그레이드 가능한 훅은 나중에 악의적이 될 수 있습니다 — 입금 시점에 안전했던 것이 출금 시점에 스왑 불가능할 수 있습니다.

**Raydium의 완화:** Raydium은 훅 프로그램 ID를 풀 상태에 나열합니다. 통합은 훅 프로그램 ID를 사용자에게 표시하여 예상된 (업그레이드 불가능, 감사됨) 프로그램인지 확인할 수 있도록 해야 합니다.

**잔존 위험:** 훅이 업그레이드 가능하고 권한자가 적대적이 되면 풀을 동결할 수 있습니다. Raydium은 전송 훅이 있는 풀을 차단하지 않지만 표시합니다. 전송 훅 풀에 LP하는 것은 훅이 안전함을 확인한 경우에만 하세요.

### 동결 권한

**정의:** 민트의 동결 권한은 그 민트를 보유한 모든 토큰 계정을 동결하여 모든 전송을 방지할 수 있습니다.

**위험:** 풀의 볼트 계정을 동결할 수 있는 동결 권한은 사실상 풀을 종료시킵니다 — 사용자는 출금할 수 없고 거래자는 스왑할 수 없습니다. 이는 SPL Token *과* Token-2022에 적용됩니다. Token-2022로 새로운 것은 아니지만 여전히 위험입니다.

**Raydium의 완화:** 프로그램 수준에서는 없습니다 — SPL Token의 동결은 풀에 불투명합니다. Raydium의 UI는 동결 가능한 민트가 있는 풀에 경고합니다. 입금하는 사용자는 동결 권한이 null이거나 신뢰할 수 있는 멀티시그인지 확인해야 합니다 (USDC는 동결 권한을 가지고 있습니다. 발행자 Circle입니다).

**잔존 위험:** 동결 가능한 민트는 동결될 수 있다는 것을 수용하세요. 주요 민트(USDC, USDT, USDY)는 발행자가 보유한 동결 권한을 가지며 규제 준수에만 사용됩니다. 이는 보통 수용 가능합니다.

### 영구 위임자

**정의:** 승인 없이 모든 보유자로부터 토큰을 전송할 수 있는 영구 위임자를 지정하는 Token-2022 확장.

**위험:** 영구 위임자는 언제든지 풀의 볼트를 비울 수 있습니다.

**Raydium의 완화:** CPMM과 CLMM은 영구 위임자를 가진 민트로 풀을 생성하는 것을 **거부합니다**. 초기화가 되돌아갑니다. 실행 중인 Raydium 풀에는 영구 위임자 민트가 없습니다.

**잔존 위험:** 없음(검사가 정확한 한, 양쪽 감사에서 확인됨).

### 비전송 가능

**정의:** 보유자가 전송할 수 없는 민트.

**위험:** 풀은 사용자 ATA와 풀 볼트 사이에서 토큰을 이동하려면 전송 가능성에 의존합니다. 비전송 가능한 민트는 자명하게 풀을 깨뜨립니다.

**Raydium의 완화:** 풀 생성은 비전송 가능한 민트에서 되돌아갑니다. 팜도 비전송 가능한 스테이킹 민트를 거부합니다.

### 기본 동결 / 폐쇄 권한 / 이자 베어링

Raydium이 처리하는 영향이 낮은 확장:

* **기본 동결**: 새 토큰 계정은 사용 전에 해제되어야 합니다. Raydium은 ATA 생성 시 이를 투명하게 처리합니다.
* **폐쇄 권한**: 지정된 권한은 토큰 계정을 폐쇄할 수 있습니다. 풀 볼트는 풀의 프로그램 유도 권한자가 소유하므로, *민트*의 폐쇄 권한은 볼트에 적용되지 않습니다.
* **이자 베어링**: 표시된 잔액은 이자가 부과됩니다. `amount`는 고정되지만 `uiAmount`가 증가합니다. Raydium 풀 수학은 이자 부과가 아닌 `amount`를 사용합니다. 표시는 별도로 조정됩니다.

### 민트 권한

Token-2022 특정 위험은 아니지만 주목할 가치가 있습니다: 민트가 민트 권한을 유지하면, 보유자는 언제든지 공급을 팽창시킬 수 있습니다. 출시된 토큰의 경우, 이는 풀의 현재 가격에서 LP를 희석시킵니다. LaunchLab은 민트 권한이 null이 아닌 한 출시를 생성하는 것을 거부합니다.

## UI의 위험 레이블

Raydium의 프론트엔드는 각 풀에 적용 가능한 위험 태그를 표시합니다:

* **TRANSFER\_FEE** — 0이 아닌 전송 수수료.
* **TRANSFER\_HOOK** — 전송 훅 확장이 활성.
* **FREEZE** — 민트가 동결 권한을 가짐.
* **MINT** — 민트가 민트 권한을 가짐 (공급이 팽창할 수 있음).
* **CLOSE** — 민트가 폐쇄 권한을 가짐.

Raydium의 API를 사용하는 집계자는 이러한 레이블을 사용자에게 표시해야 합니다.

## 통합자 체크리스트

Raydium 풀과 합성하기 전:

* [ ] `getMint(mint, TOKEN_2022_PROGRAM_ID)`를 통해 각 민트의 확장을 확인합니다.
* [ ] permanent\_delegate 또는 non\_transferable을 가진 민트가 있는 풀을 건너뜁니다(이들은 Raydium에 존재하지 않아야 하지만 심층 방어).
* [ ] 양쪽 민트의 동결 권한을 확인합니다. null 또는 신뢰할 수 있는 권한만.
* [ ] 전송 훅 풀의 경우 훅 프로그램 ID를 화이트리스트와 확인합니다.
* [ ] 전송 수수료 시나리오(수수료가 최대로 가면?)에 대해 노출을 규모화합니다.
* [ ] 현물 가격이 아니라 CLMM TWAP(ObservationState)을 파생 상품 가격 책정에 사용합니다.

## 잔존 위험 수용 성명서

Raydium의 프로그램은 프로그램 수준에서 시행할 수 있는 것을 시행합니다:

* 풀 생성은 permanent\_delegate / non\_transferable 민트를 거부합니다.
* 스왑 수학은 현재 전송 수수료에 맞게 정확하게 조정됩니다.
* ObservationState는 조작 저항성 오라클을 제공합니다.

사용자가 수용해야 할 잔존 위험:

* 민트의 동결 권한은 풀을 동결할 수 있습니다.
* 민트의 수수료 권한은 언제든지 전송 수수료(`maximum_fee` 상한까지)를 올릴 수 있습니다.
* 전송 훅 프로그램은 악의적 코드로 업그레이드될 수 있습니다.
* 이자 베어링 민트의 부과 속도는 변경될 수 있습니다.

올바른 방어는 LP 전 실사입니다: 신뢰하지 않는 집중된 권한을 가진 민트가 있는 풀에 입금하지 마세요. Raydium은 당신을 위해 그 신뢰를 결정할 수 없습니다. 관련된 사실만 표시할 수 있습니다.

## 포인터

* [`algorithms/token-2022-transfer-fees`](/ko/algorithms/token-2022-transfer-fees) — 전송 수수료 민트의 수학 조정.
* [`security/attack-vectors`](/ko/security/attack-vectors) — 이러한 위험이 구체적 공격으로 어떻게 나타나는지.
* [`integration-guides/wallet-integration`](/ko/integration-guides/wallet-integration) — Token-2022 위험 레이블 표시.
* [`products/clmm/accounts`](/ko/products/clmm/accounts) — ObservationState 레이아웃.

출처:

* [SPL Token-2022 확장 문서](https://spl.solana.com/token-2022/extensions).
* 풀 초기화 검증 로직: `src/raydium/cpmm/instrument.ts`, `src/raydium/clmm/instrument.ts`.
* [Pyth](https://pyth.network) — 프론트엔드에서 사용되는 외부 가격 오라클.
