손쉬운 교육: Meteora 유동성 가격 범위를 빠르게 파악하는 방법
作者:자부
Meteora는 Solana 체인上的 DeFi 프로젝트로, Solana 생태계에 효율적이고 지속 가능하며 유연한 유동성 레이어를 구축하는 데 중점을 두고 있습니다. 그 목표는 Solana에서 유동성이 부족한 문제를 해결하여 거래를 더 원활하고 비용을 낮추며, 유동성을 제공하는 사용자에게 더 나은 수익을 가져다주는 것입니다.
Meteora의 풀은 주로 DLMM 풀과 Dynamic Pools(동적 풀)로 구성되어 있으며, DLMM 풀에서는 양방향 풀과 단방향 풀을 추가할 수 있습니다. 여기서 dev는 단방향 풀을 이용해 출하 및 매집을 할 수 있습니다. 예를 들어, trump/sol 거래 쌍에서 가격이 상승할 때, dev는 특정 더 높은 가격 구간에 $trump의 단방향 풀만 추가할 수 있습니다. 가격이 이 가격 구간에 도달하면 자동으로 $trump를 $sol로 교환하여 출하할 수 있으며, 동시에 수수료를 얻을 수 있습니다. 가격이 하락할 때는 dev가 특정 더 낮은 가격 구간에 $sol의 단방향 풀만 추가할 수 있으며, 가격이 해당 가격 구간에 도달하면 자동으로 $trump를 매입하여 매집을 달성할 수 있습니다.
dev가 어떤 가격에 단방향 풀로 출하 및 매집을 하는지 알고 싶다면, 해당 가격 구간을 아는 것이 매우 중요합니다.
1. 기본 개념
웹사이트: https://app.meteora.ag/
1. 거래 쌍
임의의 두 개의 코인이 하나의 거래 쌍을 구성합니다. 예를 들어, $trump와 $sol이 trump-sol 거래 쌍을 구성하고, $trump와 $usdc가 trump-usdc 거래 쌍을 구성합니다.
2. 풀(LP 풀)
각 거래 쌍 아래에는 여러 개의 풀을 가질 수 있으며, 각 풀은 Bin Step과 Fee(수수료)의 차이에 따라 구분됩니다. 예를 들어, trump-usdc 거래 쌍 아래에는 57개의 풀이 있으며, 각 풀은 고유한 주소에 해당합니다.
3. 빈
DLMM에서 각 빈은 하나의 가격을 나타내며, 각 빈은 특정 가격의 매수 또는 매도 주문입니다.
4. 빈 스텝
빈 스텝은 두 인접한 빈 사이의 가격 간격 크기를 나타내며, 기준점(basis points, 1 기준점 = 0.01%)으로 계산됩니다. 이는 빈의 밀도와 유동성 분포의 세부 정도를 결정하며, 풀의 생성자가 설정합니다.
예를 들어:
- 현재 SOL/USDC의 가격이 20달러라고 가정하고, 빈 스텝을 25 기준점(0.25%)으로 설정합니다.
- 다음 빈의 가격은 20 × 1.0025 = 20.05달러이며, 그 다음은 20.05 × 1.0025 ≈ 20.10달러입니다. 계속해서 이와 같은 방식으로 진행됩니다.
5. 포지션(위치)
포지션은 유동성 제공자가 자금을 특정 가격 구간에 어떻게 배분하는지를 설명하는 데 사용되며, 각 포지션은 고유한 주소에 해당합니다. 포지션은 특정 풀 내에서 생성되며, 하나의 풀은 여러 개의 서로 다른 포지션을 생성할 수 있습니다.
하나의 포지션은 일반적으로 다음과 같은 주요 요소를 포함합니다:
(1) 가격 구간
각 포지션은 유동성 제공자가 지원하고자 하는 가격 범위를 나타내는 명확한 가격 구간을 가지고 있으며, 이 가격 구간은 연속적인 빈으로 구성됩니다.
(2) 자금량
두 가지 토큰(예: SOL과 USDC)의 수량을 투입합니다. Meteora는 현재 가격과 구간 범위에 따라 각 토큰의 구체적인 비율을 계산하여 풀의 요구를 충족하도록 합니다.
(3) 분배 전략 Meteora는 사용자가 자금을 각 빈에 어떻게 배분할지 결정할 수 있도록 여러 가지 유동성 분배 방식을 제공합니다:
- 스팟(균일 분배): 자금을 각 빈에 평균적으로 분배하며, 가격 변동이 적을 것으로 예상되는 상황에 적합합니다.
- 커브(종형 분배): 자금이 현재 가격 근처에 집중되며, 현재 가격에서 멀어질수록 적어지는 종형 곡선 형태로, 현재 가격에 집중하고자 하는 LP에 적합합니다.
- 입찰-요청(양방향 분배): 자금이 현재 가격의 양쪽에 집중되어 두 개의 봉우리를 형성하며, 높은 변동성이 있는 시장에 적합합니다.
(4) 빈 스텝 사용자가 포지션을 생성할 때 빈 스텝을 변경할 수 없으며, 이는 풀 생성 시 설정됩니다.
2. 지갑 연결하여 보기
Meteora는 지갑 주소를 연결한 후 보유하고 있는 포지션을 확인할 수 있으며, 관찰 지갑 방식으로도 확인할 수 있습니다. 이 기능을 통해 풀의 가격 구간을 확인할 수 있습니다.
$trump(6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN)를 예로 들어보겠습니다.
먼저, debot (https://debot.ai?inviteCode=175623)를 열고 $trump의 CA를 입력한 후, dev의 주소 5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7을 찾습니다.
그 다음, Phantom 지갑을 열고, 【지갑 추가/연결】--【주소 모니터링】을 클릭하여 "이름"과 "주소"를 입력합니다. 여기서 dev의 주소 5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7을 입력합니다.
마지막으로, Meteora에서 Phantom 지갑을 연결하고, 상단의 【포트폴리오】를 클릭하면 추가한 모든 풀을 볼 수 있으며, DLMM의 임의의 풀을 클릭하면 풀의 세부 정보와 모든 포지션을 확인할 수 있습니다.
왼쪽의 빈 스텝과 기본 수수료는 현재 풀의 정보이며, 중간 부분은 다양한 가격 구간의 포지션입니다. 임의의 포지션을 클릭하면 현재 잔액, 미수령 수수료, 분배 전략 등의 정보를 확인할 수 있습니다.
이 방법으로 가격 구간을 확인하는 장점은 편리하고 직관적이며, 현재 존재하는 모든 포지션 데이터를 나열할 수 있다는 것입니다. 단점은 유동성이 철회된 후에는 확인할 수 없다는 것입니다.
3. 온체인 데이터 계산
우리는 온체인 데이터를 사용하여 각 포지션의 가격 구간을 계산할 수 있으며, 포지션이 존재하는지 여부에 관계없이 가능합니다.
Meteora의 문서에서는 계산 공식을 제공합니다.
가격 구간의 최소값: minprice = (1 + binstep/10000) \^ lowerbinid
가격 구간의 최대값: maxprice = (1 + binstep/10000) \^ upperbinid
거래 쌍이 A/B로 표시되고, 토큰 A의 정밀도가 decimalsA, 토큰 B의 정밀도가 decimalsB일 경우, 최종 계산 공식은 다음과 같습니다.
가격 구간의 최소값: minprice = (1 + binstep/10000) \^ lowerbinid/10\^(decimalsB-decimalsA)
가격 구간의 최대값: maxprice = (1 + binstep/10000) \^ upperbinid/10\^(decimalsB-decimalsA)
여기서 계산된 가격은 토큰 A가 토큰 B에 대한 가격임을 유의해야 하며, 토큰 A가 USD에 대한 가격을 확인하려면 토큰 B의 USD 가격을 조회한 후 변환해야 합니다.
위의 공식을 통해 데이터를 계산하기 위해서는 풀의 binstep, 포지션의 lowerbinid와 upperbinid를 알아야 하며, 거래 쌍의 두 코인의 정밀도도 알아야 합니다.
계속해서 $trump(6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN)를 예로 들어, dev의 특정 단방향 풀의 가격 구간을 계산해 보겠습니다.
우리는 solscan을 열고 $trump의 dev 주소( https://solscan.io/account/5e2qRc1DNEXmyxP8qwPwJhRWjef7usLyi7v5xjqLr5G7?activitytype=ACTIVITYTOKENADDLIQ\&page=5#defiactivities )를 입력한 후, 【Defi Activities】 탭을 열고, 【Action】 필터에서 "ADD LIQUIDITY"를 선택합니다. Amount 열에서 나열된 유동성 추가 거래는 모두 단방향 풀이며, $trump만 추가되었거나 $usdc만 추가된 거래입니다. 본문에서는 그림의 마지막 거래를 예로 들겠습니다.
위 그림의 마지막 거래( https://solscan.io/tx/284UXTrgWNFFXTovbCAQsJA8U5mW4rntwa8KyRvSmhNYf7cus1rtskiVqwNkErdosDMUsJfxXm8KgkCf1DzTPmPr )를 열어 거래 세부 정보를 확인하면, 이 거래는 $trump만 추가된 풀임을 알 수 있습니다.
$trump와 $usdc의 링크를 각각 열어보면, $trump의 정밀도가 6이고, $usdc의 정밀도도 6임을 확인할 수 있습니다.
거래 세부 정보 페이지에서 아래로 스크롤하여 【#4.1 - Meteora DLMM Program: initializePosition】에서 lowerBinId가 1062임을 알 수 있으며, 빈의 너비 즉 개수는 46이고, 풀 주소는 9d9mb8kooFfaD3SctgZtkxQypkshx6ezhbKio89ixyy2입니다. 위 정보를 통해 upperBinId=lowerBinId + width - 1 = 1062 + 46 - 1 = 1107로 계산할 수 있습니다.
solscan에서 풀 주소 9d9mb8kooFfaD3SctgZtkxQypkshx6ezhbKio89ixyy2( https://solscan.io/account/9d9mb8kooFfaD3SctgZtkxQypkshx6ezhbKio89ixyy2 )를 열고, 【data】 탭을 클릭한 후 "LbPair"를 "Table"로 전환하면 binStep의 값이 50임을 확인할 수 있습니다.
위 정보를 통해 계산 공식에 필요한 모든 데이터를 얻을 수 있습니다:
binstep=50
lowerbinid=1062
upperbinid=1107
decimalsA=6
decimalsB=6
따라서 다음과 같이 계산할 수 있습니다.
가격 구간의 최소값: minprice = (1 + binstep/10000) \^ lowerbinid/10\^(decimalsB-decimalsA)=(1+50/10000)\^1062/10\^(6-6)=199.6905832
가격 구간의 최대값: maxprice = (1 + binstep/10000) \^ upperbinid/10\^(decimalsB-decimalsA)=(1+50/10000)\^1107/10\^(6-6)=249.9368917
계산된 가격 구간은 두 번째 부분의 이미지에 있는 가격 구간과 완전히 일치합니다.
4. 요약
모니터링 도구와 결합하여 dev 또는 다른 대규모 투자자가 단방향 풀을 추가할 때, 우리는 위의 방법을 사용하여 그들이 출하하거나 매집할 가격 범위를 계산할 수 있으며, 이후 K선 및 기타 데이터를 결합하여 결정을 내릴 수 있습니다. 아르헨티나 대통령 미레이가 발행한 $libra도 단방향 풀 추가를 통해 출하되었으며, 위에서 소개한 방법으로 당시 추가한 풀의 가격 범위를 재검토할 수 있습니다.
제가 자주 사용하는 도구는 debot, gmgn 및 okx입니다. 그러나 이 세 가지 도구는 유동성을 확인할 때 아직 편리하지 않으며, 이상적인 몇 가지 유용한 기능은 다음과 같습니다:
- dev의 모든 작업을 나열하고, 입금, 출금, 풀 추가 및 철회에 대해 식별하고 표시할 수 있습니다.
debot은 모든 입금과 출금을 식별할 수 있지만, 풀 추가 및 철회는 없습니다;
gmgn은 풀 추가 및 철회를 식별할 수 있지만, dev의 입금 및 출금을 식별할 수 없으며, trump 이 코인에서는 dev의 풀 추가 및 철회 거래를 식별하지 못합니다;
okx는 자금 풀 변화 기능이 있어 풀 추가 및 철회를 별도로 나열하지만, trump 이 코인에서는 dev의 풀 추가 및 철회 거래를 식별하지 못합니다. - 각 풀 추가 및 철회에 대해 구체적인 가격 구간을 제공하여 수동으로 계산할 필요가 없도록 합니다.
- dev의 수익 데이터를 계산할 때, 수령한 수수료 및 철회 시 자금의 변화를 포함하여 수동으로 수익 상황을 통계할 필요가 없도록 합니다.
이 기능은 주로 debot와 gmgn에서 구현할 가능성이 있으며, 그들은 각 주소의 수익 데이터를 작성했습니다.
이 도구들이 점점 더 유용해지기를 기대합니다!