이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
애그리게이터의 역할은 많은 풀에서 사용자에게 최고의 가격을 제공하고, 단일 입력을 여러 풀 경로에 걸쳐 분할하며, 이를 원자적으로 실행하는 것입니다. 이 페이지는 그 작업의 Raydium 관련 부분을 다룹니다: 발견, 견적 조회, 트랜잭션 조립.
발견
풀 인벤토리
각 상품별로 활성 Raydium 풀의 전체 목록이 필요합니다. 세 가지 옵션이 있습니다:- REST API (가장 간단함):
GET https://api-v3.raydium.io/pools/info/list?poolType=all&pageSize=1000&page=1은 1000개 단위로 풀을 반환합니다. 모두 얻을 때까지 페이지를 넘기세요. 1~5분 동안 캐시하세요. - 온체인 스캔: CPMM, CLMM, AMM v4 프로그램 ID에서
getProgramAccounts를 실행하고 상태 계정 판별자로 필터링합니다. ~10초의 RPC 시간으로 거의 모든 활성 풀을 반환합니다. API가 다운되거나 속도 제한될 때 유용합니다. - 하이브리드: API를 주요 소스로 사용하고, 일일 온체인 스캔을 건전성 검사로 실행합니다. 팀은 API를 포괄적으로 유지하기로 약속하지만, 직접 CPI를 통해 생성된 풀(프론트엔드 없음)은 가끔 지연될 수 있습니다.
민트 쌍 조회
특정(mintA, mintB) 쌍의 경우 GET /pools/info/mint?mint1=...&mint2=...&poolType=all&sort=liquidity를 사용합니다. 모든 수수료 계층 및 상품 유형의 모든 풀을 반환합니다. 거래량이 많은 민트에서는 쌍당 ~10개 결과가 일반적입니다. TVL로 정렬하고 라우팅을 위해 상위 몇 개를 선택하세요.
견적 조회
견적 계산은 상품별로 다릅니다. SDK의 순수 수학 함수를 사용하여 다시 구현하지 않도록 하세요:amountOut(슬리피지 전)을 사용합니다.
캐시 신선도
풀 상태는 빠르게 오래됩니다. 권장 신선도 목표:
대화형 지연 시간에서 견적을 받는 애그리게이터의 경우, 각 관련 풀 상태에서 WebSocket 계정 업데이트(
accountSubscribe)를 구독하세요. 이는 모델을 폴링에서 푸시로 전환합니다.
Token-2022 조정
경로의 모든 민트에 Token-2022 전송 수수료가 있으면, 견적 계산이algorithms/token-2022-transfer-fees에 따라 입력과 출력을 조정해야 합니다. SDK는 poolInfo.mintA.extensions.transferFeeConfig가 채워져 있으면 이를 처리합니다. 견적을 신뢰하기 전에 .extensions 필드를 확인하세요.
라우팅
단일 풀 경로
대부분의 경로는 단일 풀입니다.amountOut이 가장 높은 풀을 선택하세요. 여러 개가 비슷하면, 수수료 계층(낮을수록 좋음)으로 동점을 깨고, TVL(많을수록 안전함)로 깨세요.
분할 라우팅
단일 풀이 >5% 가격 영향을 미치는 대규모 거래의 경우, 풀 전체에 분할합니다. 간단한 탐욕 알고리즘:[(pool_A, 0.6), (pool_B, 0.3), (pool_C, 0.1)]을 생성합니다. 적절한 볼록 최적화 솔루션(예: 풀 전체에서 한계 가격 균등화)은 실제로 탐욕 결과의 ~1% 이내입니다.
다중 홉 경로
USDC → RAY → SOL을 두 개의 별도 풀을 통해 사용하는 것은 직접 USDC-SOL 풀이 좋은 견적을 제공하지 않을 때 일반적입니다(드문 경우). 홉당 슬리피지 경계를 적용하세요. 각 홉은 자체 minAmountOut을 적용합니다. algorithms/slippage-and-price-impact를 참조하세요.
동일한 풀에 걸친 다중 홉(예: SOL-USDC의 두 CLMM 홉)은 단일 홉에 비해 항상 차선입니다. 그러한 경로를 생성하지 마세요.
트랜잭션 조립
단일 홉, 단일 풀
단일 풀의 경우, 해당 풀 유형의 자체 스왑 빌더를 호출하세요 —raydium.liquidity.swap, raydium.cpmm.swap 또는 raydium.clmm.swap. raydium.tradeV2.swap은 다중 홉 경로 실행자이며 완전히 다른 형태({ swapInfo, swapPoolKeys, routeProgram, ownerInfo, txVersion })를 사용합니다. raydium.trade는 없습니다.
분할 및 다중 홉
ATA + 명령어를 수동으로 구성합니다. 패턴:원자성
애그리게이터는 원자성을 보장해야 합니다: 전체 경로가 착지하거나 아무것도 착지하지 않습니다. Raydium의 스왑 명령어는ExceededSlippage에서 되돌아가므로, 한 홉이 실패하는 다중 풀 경로는 전체 트랜잭션을 되돌립니다. 무료입니다.
한 가지 예외: 경로가 Raydium + 제3자 DEX를 통과하는 경우, 해당 DEX도 슬리피지 되돌리기 모델을 가지고 있는지 확인하세요. 일부 프로그램은 슬리피지 경계를 무시합니다(드문 경우).
함정
1. 오래된 견적
사용자가 “125.43 RAY를 받습니다”를 보는 것과 트랜잭션이 착지하는 사이에 리저브가 변할 수 있습니다. 제출 직전에 풀 상태를 다시 조회하세요. 다시 견적을 조회하세요. 새 견적이 >1% 더 나쁘면, 일시 중지하고 사용자와 다시 확인하세요.2. 풀 블랙리스트
일부 Raydium 풀은 전송 수수료가 99%로 설정되거나 양도 불가능한 확장이 있는 사기 토큰입니다. REST API는 이를 태그합니다(tags 필드 참조). scam 또는 honeypot으로 태그된 모든 풀을 건너뛰세요. Raydium의 태그 위에 자체 안전 검사를 실행하는 것이 현명합니다.
3. CLMM의 관찰 상태 요구사항
CLMMSwapV2는 observation_state 계정을 사용합니다. SDK가 이를 채웁니다. 수동으로 구축된 명령어는 종종 이를 잊어서 프로그램이 AccountNotFound로 되돌아갑니다. 항상 포함하세요.
4. 주소 조회 테이블
Raydium은 가장 자주 사용되는 계정(주요 민트, 프로그램 ID, AmmConfigs)에 대한 공개 조회 테이블을 유지합니다. 애그리게이터는 이를 사용해야 합니다 — 트랜잭션당 ~100바이트를 절약하고 더 큰 경로가 V0에 맞도록 합니다. LUT 주소 가져오기:5. 혼잡 처리
대량 거래 기간 동안 트랜잭션은 여러 블록 동안 메모리풀에 머물 수 있습니다. TX 만료 시 공격적인 재시도(되돌리기가 아님 — 되돌리기는 결정론적임)가 권장됩니다. SDK의sendAndConfirm 옵션은 기본 재시도를 수행합니다. 프로덕션 애그리게이터는 자체 로직(Jito 번들, 다중 RPC 브로드캐스트)을 위에 계층화합니다.
체크리스트
라이브하기 전에 확인하세요:- 풀 발견이 CPMM + CLMM + AMM v4를 포괄적으로 다룹니다.
- 견적이 몇 가지 테스트 거래에서 Raydium의 자체 UI 견적과 1 베이시스 포인트 이내로 일치합니다.
- 분할 라우팅이 단일 풀에서 >5% 영향의 거래에 대해 시작됩니다.
- 우선순위 수수료가 최근 풀 프로그램 수수료에 대해 크기가 조정됩니다(
integration-guides/priority-fee-tuning참조). - Token-2022 전송 수수료가 계산되고 사용자에게 표시됩니다.
- 슬리피지가 초과되면 트랜잭션이 깔끔하게 되돌아갑니다.
- 재시도 로직이 tx 만료(재시도)를 되돌리기(재시도하지 않음)와 구분합니다.
포인터
integration-guides/routing-and-mev— 샌드위치 저항, 번들.integration-guides/priority-fee-tuning— 계산 예산 명령어 크기 조정.sdk-api/rest-api— 풀 목록 엔드포인트.

