이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
Raydium을 통합하는 지갑은 일반적으로 사용자당 네 가지 질문에 답해야 합니다: 이 사용자가 LP를 보유한 풀은 무엇인가? 보유한 포지션(CLMM NFT)은 무엇인가? 스테이킹한 팜은 무엇인가? 이 모든 것의 가치는 얼마인가? 이 페이지에서 각각을 설명합니다.
Raydium 포지션 감지
클래식 LP 토큰 (CPMM, AMM v4)
이들은 다른 SPL 토큰처럼 보입니다: 사용자의 ATA가 잔액을 보유합니다. 지갑은 기본적으로 이를 다른 토큰으로 표시합니다. Raydium LP 포지션으로 표시하려면:- 사용자의 토큰 계정을 열거합니다:
connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID }). - 각 민트에 대해 Raydium의 민트 목록을 확인합니다:
GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,...(호출당 최대 ~50개의 LP 민트를 배치). - 일치하는 민트의 경우 API가 풀 참조를 반환합니다. 이를 사용하여 포지션의 토큰 단위 가치를 계산합니다:
CLMM 포지션 NFT
CLMM 포지션은 NFT입니다. 각 포지션의PersonalPositionState PDA는 NFT 민트에서 파생됩니다. 감지하려면:
- 사용자의 NFT를 열거합니다. 레거시 Metaplex NFT의 경우: 공급량이 1이고 소수 자릿수가 0인 토큰 계정으로 필터링합니다.
- 각 NFT 민트에 대해 PersonalPositionState PDA를 파생시키려고 시도합니다:
-
raydium.clmm.getOwnerPositionInfo({ programId })로 지갑의 포지션을 열거하고nftMint와 일치시킵니다 (getPositionInfo는 없습니다). 각 항목은 다음을 제공합니다:poolId→ 풀을 가져와 민트를 해결합니다tickLower,tickUpper→ 범위 표시liquidity,tokensOwedA/B→ 포지션 가치 + 미수령 수수료 계산rewardInfos→ 스트림당 미수령 보상
-
Token-2022 (
OpenPositionWithToken22Nft)에서 발행된 포지션 NFT의 경우 NFT 민트의 프로그램은 SPL 토큰이 아닌 Token-2022입니다. 스캔할 때 둘 다 열거합니다.
팜 스테이크
팜 v3 / v5 / v6은 각각 사용자별 원장 PDA를 가집니다. 파생:UserLedger PDA를 반복합니다. 모든 팜 ID를 철저히 열거하는 것은 비실용적입니다 (수천 개 존재). API를 사용합니다.
포지션 가치 계산
CPMM / AMM v4 LP
세 모듈은 서명을 공유하지 않습니다:liquidity.getPoolInfoFromRpc는 { poolId }를 취하는 반면 cpmm.getPoolInfoFromRpc와 clmm.getPoolInfoFromRpc는 위치 기반 base58 문자열을 취합니다.
raydium.token 또는 가격 오라클에서).
CLMM 포지션
- 유동성 가치 (현재 가격)
- 미수령 수수료
- 스트림당 미수령 보상
- 범위:
[tickLower_price, tickUpper_price]현재 가격이 범위 내인지 여부를 보여주는 시각적 막대 포함
팜 스테이크
reward_per_share_x64를 새로고침해야 합니다 (경과 시간 × 배출 속도 ÷ 총_스테이킹).
미리보기를 위한 거래 시뮬레이션
사용자가 서명하기 전에 지갑은 일반적으로 잔액 변화를 미리봅니다.simulateTransaction을 사용합니다:
accounts 매개변수는 검증자에게 나열된 주소에 대한 시뮬레이션 후 계정 상태를 반환하도록 요청합니다. 명령 형태만으로 잔액 변화를 예측하려는 것보다 훨씬 더 정확합니다.
시뮬레이션 함정
- CLMM 스왑은 유효한 틱 배열이 필요합니다. 사용자의 입력 크기가 초기화되지 않은 틱 배열로 교차하면 시뮬레이션이 되돌아갑니다 (실행과 동일). UI에서 이를 명확하게 표시합니다.
- 우선순위 수수료. 시뮬레이션은 계산 예산 명령이 적용되지 않은 상태에서 실행됩니다. 기본 200k CU를 초과하는 큰 거래의 경우 시뮬레이션은 실패하지만 명시적 CU 제한이 있는 실제 실행은 성공합니다. 시뮬레이션된 거래에도 항상 CU 제한을 설정합니다.
- 새로운 블록해시. 시뮬레이션은 현재 블록해시를 사용합니다; 서명이 60초 이상 걸리면 거래가 무효화됩니다. 사용자가 주저하면 다시 시뮬레이션합니다.
Token-2022 표시
Token-2022 프로그램의 토큰은 지갑의 토큰 목록에서 레이블을 지정해야 합니다. 다른 위험 표면을 가지기 때문입니다:- 전송 수수료 민트: 현재
transferFeeBasisPoints를 잔액 옆에 “전송 수수료: X%“로 표시합니다. 수신할 때 경고합니다 — 사용자는 발신자가 보낸 것보다 적게 받을 것임을 깨닫지 못할 수 있습니다. - 전송 훅 민트: 훅 프로그램 ID를 표시합니다. 악의적인 훅은 아웃바운드 전송을 차단할 수 있습니다; 사용자는 훅이 예상한 것인지 확인해야 합니다.
- 양도 불가능한 민트: “양도 불가능”을 표시하고 스왑/전송을 비활성화합니다. 이들은 일반적으로 소울바운드 토큰 또는 자격증입니다.
- 이자 베어링 민트:
TokenAccount.amount에서 파생된 UI 잔액은 미수령 이자를 반영하지 않습니다.@solana/spl-token의amountToUiAmount를 사용합니다 (스케일링 팩터를 적용함). 표시된 값의 경우.
팜 APR 표시
사용자에게 표시되는 APR은 모든 라이브 보상 스트림을 결합하고 USD로 변환하며 연간화해야 합니다:APR: X.Y%로 표시합니다. 스테이킹 민트가 LP 토큰인 경우 기초 LP의 기본 수수료 APR도 계산하고 합계를 “총 APR” 또는 “APR + 수수료”로 레이블합니다.
포인터
products/clmm/ticks-and-positions— 포지션 가치 파생.products/farm-staking/accounts— 팜 상태 필드.algorithms/token-2022-transfer-fees— 전송 수수료 토큰의 표시 의미론.
- Raydium SDK v2 — 포지션/팜 헬퍼.
api-v3.raydium.io의 사용자 포지션 엔드포인트.

