가격 오라클
프로토콜이 LP 포지션 상태를 신용 관련 담보 가치로 변환하는 방식.
개요
Avana는 포지션을 재구성하고 그 안의 자산을 평가하여 LP 담보의 가격을 산정합니다. 대체 가능한 LP의 경우, 프로토콜은 외부 자산 가격과 풀 잔액 재구성을 통해 가치를 도출합니다. 집중 유동성의 경우, 유동성, 범위, 현재 틱, 토큰 노출 및 누적 수수료별로 포지션을 분해합니다.
결과는 회수 가능한 담보 가치로 할인됩니다. 대출 한도는 낙관적인 순자산 가치가 아니라 시장의 위험 가정을 기반으로 포지션이 현실적으로 지원할 수 있는 범위에 따라 결정됩니다.
시가와 회수 가능 가치의 구분이 있어야 오라클이 분석이 아니라 대출에 유용합니다. ERC-20 LP·NFT LP·다중 자산 풀이 하나의 상위 인터페이스를 공유할 수 있는 것은 가치가 Spoke 에 도달하기 전 각 유형이 자체 검증과 조작 저항 검사를 거치기 때문입니다.
LP collateral value depends on:
- 기초 자산의 가격
- 풀 예약 또는 재고 분할
- Fee accrual
- 집중 유동성의 경우, 포지션 범위에 대한 현재 틱
- 포지션이 범위 내에 있는지 아니면 대부분 한쪽으로 치우쳐 있는지
오라클 인터페이스: IOracle
DEX 마다 LP 형식이 달라도 Borrow Spoke 에는 하나의 컨트랙트 표면이 필요합니다. `IOracle` 이 그 공통 형태를 주고하며 원금 가치·누적 수수료·예비 버퍼를 분리해 이후 리스크 로직이 포지션의 어느 부분을 보는지 추측할 필요가 없습니다:
function getValue(uint256 tokenId, address asset)
external view returns (
uint256 fullValue,
uint256 feeValue,
uint256 reserveValue
);인터페이스는 DEX 고유 배관을 Spoke 에서 숨깁니다. 동일한 호출자가 하나의 반환 형태로 ERC-20 LP·NFT LP·다중 자산 풀을 처리하면서 뒤에서는 보수적·담보 계열별 처리를 유지 수 있습니다.
다층 아키텍처
LP의 평가는 단일 순간 가격 읽기가 아니라 단계별 과정입니다. 오라클 경로는 다음 단계를 거칩니다:
외부 신뢰할 수 있는 오라클에서 기초 자산의 가격 책정
담보가 원시 풀 스팟 상태의 모든 노이즈나 조작 가능성을 그대로 물려받지 않도록 기초 자산에 대해 회복력 있는 외부 피드에서 시작하세요.
LP 값을 보수적으로 산출하십시오
준비금·유동성·레인지·수수료에서 대체 가능 LP 잔액을 재구성하거나 집중 유동성 포지션을 분해합니다. Spoke 가 추론할 수 있는 결정적 경로를 사용합니다.
일시적 손실 및 청산 슬리피지에 대한 헤어컷
재구성된 마크를 이론적인 NAV에서의 깨끗한 상환보다는 스트레스, 슬리피지 및 불완전한 청산을 가정한 회수 가능한 담보 가치로 할인하십시오.
LP 가족 및 유동성 풀 깊이에 의한 캡 노출
LP 계열, 풀 클래스 및 사용 가능한 깊이를 기반으로 통제를 적용하여 얇거나 더 복잡한 시장이 더 깊고 단순한 시장과 동일한 차입 한도를 받지 않도록 합니다.
낙관적인 NAV가 아닌 회수 가능한 청산 가치에 따라 청산하십시오.
대출 권한을 부여하고 청산을 결정할 때 최상의 표시 가치 대신, 해제 경로를 통해 합리적으로 실현할 수 있는 가치를 사용하십시오.
DEX별 처리
서로 다른 DEX는 서로 다른 상태 정보를 노출하며, 오라클은 이러한 입력을 사용하여 포지션을 재구성하고 가격을 검증합니다. 풀에서 파생된 데이터는 직접적인 담보 가격으로 맹목적으로 받아들여지지 않습니다.
| DEX / LP 유형 | 오라클 소스 | 참고 |
|---|---|---|
| Curve 안정/안정 ERC-20 LPs | 외부 스테이블코인 피드 + 풀 상태 확인 + TWAP 검증 | 외부 가격은 자산의 기준이 되며 풀 잔액과 수수료 발생은 할인된 담보 가치를 결정합니다. |
| Uniswap V2 ERC-20 LP들 | Chainlink + 예약 재구성 + TWAP 확인 | 표준 LP 토큰은 재구성된 기초 잔액에서 평가되며, TWAP는 조작에 강한 교차 확인용으로 사용됩니다. |
| Uniswap V3 NFT LP들 | Chainlink + 포지션 분해 + 틱/TWAP 체크 | NFT는 유동성, 활성 범위, 현재 가격에 따라 분해된 후 회수 가능한 청산 가치에 대해 할인됩니다. |
| Balancer 다중 자산 LP | Chainlink + 가중 재고 재구성 | 멀티 토큰 풀은 외부 가격과 가중 풀 재고를 사용하여 보수적인 담보 가치를 추정합니다. |
| SushiSwap / Aerodrome | Chainlink + 예약 재구성 + TWAP 확인 | 풀 기반 관찰은 재구성된 가치를 확인하고 유동성이 낮은 시장에서 동일 거래 남용을 방지하는 데 도움을 줍니다. |
| PancakeSwap | Chainlink + 블록 기반 TWAP 검증 | 외부 가격은 여전히 기준점으로 남아 있는 반면, 블록 기반 관측은 위치 상태를 검증하고 가정을 해소합니다. |
DEX별 TWAP 계산
TWAP는 검증 입력입니다. 이들은 외부 자산 가격과 결정론적 포지션 재구성 옆에 놓여 풀 상태가 신뢰할 수 있는 청산 경로와 일치하는지 확인합니다. 이것들은 의심스러운 또는 단기간의 왜곡을 거부하는 데 도움을 주지만, 그 자체로 더 넓은 오라클 모델을 대체하지는 않습니다.
Uniswap V2 및 SushiSwap
On-chain cumulative price data over a 1-hour window is used to cross-check the reconstructed reserve picture and reduce sensitivity to flash swaps or other short-lived pool distortions.
Uniswap V3
포지션 인식 검사는 틱 범위, 유동성 분포 및 누적 수수료를 포함하여 프로토콜이 각 NFT LP의 분해된 토큰 노출을 검증할 수 있도록 하며, NFT를 블랙박스로 취급하지 않습니다.
Balancer
가중 토큰 관찰치는 풀 가중치와 결합되어, 오라클이 보수적인 담보 가치를 할당하기 전에 다중 자산 재고 분할을 검증합니다.
Curve
스테이블코인 관찰은 주로 외부 가격이 여전히 주요 기준이 되는 동안, 오래된 피드, 준비금 변동 및 단기 이상 현상을 감지하는 데 사용됩니다.
Trader Joe 및 Aerodrome
30~60분 창에서의 누적 가격 관찰은 낮은 유동성 풀 상태를 검증하고 담보 확인 중 동일 거래 조작에 저항하는 데 도움이 됩니다.
안전성 및 조작 방지
- 편차 임계값
풀에서 파생된 검증 데이터가 외부 기준 가격에서 너무 멀어지면 새로운 대출이나 청산을 일시 중지할 수 있습니다
maxDifference. - maxPoolPriceDifference
이것은 풀에 암시된 상태를 기본 토큰 가격과 일치시키고 즉각적인 풀 조작이나 같은 거래 내 오라클 남용을 제한합니다.
- 미결제약정 캡
노출은 LP 패밀리, 풀 깊이, 담보 복잡성에 의해 제한되므로 얇은 시장은 더 엄격한 대출 한도를 받습니다.
- 회수 헤어컷
오라클은 차입 권한이 부여되기 전에 이론적 LP 가치를 일시적 손실, 청산 스리피지 및 스트레스 상태 청산 가정을 반영하여 할인합니다.
- Oracle Sentinel
Oracle Sentinel 시계는 건강 및 검증 입력을 확인하고, 데이터가 오래되었거나 손상되었거나 위치 상태 확인과 일치하지 않을 경우 대체 동작을 트리거할 수 있습니다.
구성 가능 오라클 매개변수
풀별 오라클 설정은 토큰별로 구성됩니다 setTokenConfig. 아래 표는 토큰과 관련 풀을 어떻게 확인해야 하는지를 정의하는 매개변수를 보여줍니다:
| 매개변수 | 설명 |
|---|---|
| 토큰 | 담보 토큰 주소 |
| AggregatorV3Interface | 기초 토큰용 Chainlink 피드 |
| maxFeedAge | Chainlink 사료의 최대 허용 연령 |
| 풀 | 특정 DEX 풀 (Uniswap V3, Balancer, Curve 등) |
| twapSeconds | TWAP 계산용 창 |
| 모드 | 오라클 운영 모드 (표준/대체) |
| maxDifference | DEX와 검증 가격 간 허용 최대 편차 |
실제로 오라클 동작은 외부 자산 가격, LP 재구성 로직, 회수 가능 가치 처리 및 토큰별 설정 구성을 통한 조합에서 발생합니다.setTokenConfig.
