에이전트를 위한 권장사항
두 단계 조회 대신 getTransactionsForAddress 사용
getTransactionsForAddress는 서명 조회와 거래 가져오기를 단일 호출로 결합하여 서버 측 필터링을 제공합니다. 시간/슬롯 범위, 토큰 계정 필터링, 페이지 매김을 지원합니다.
표준 전송에 sendSmartTransaction 사용
자동으로 시뮬레이션하고, 계산 단위를 추정하며, 우선 수수료를 가져와 확인합니다. ComputeBudget 명령을 수동으로 작성하지 마세요 — SDK에서 자동으로 추가합니다.
초저지연을 위해 Helius Sender 사용
시간이 중요한 거래(차익 거래, 스나이핑, 청산)를 위해서는sendTransactionWithSender를 사용하세요. Helius의 다지역 인프라와 Jito를 통해 라우팅됩니다.
여러 자산에 getAssetBatch 사용
하나 이상의 자산을 가져올 때 배치하세요. 루프에서 getAsset를 호출하지 마세요.
폴링 대신 웹훅 또는 WebSocket 사용
루프에서getTransactionsForAddress를 폴링하지 마세요. 서버 간 알림을 위해서는 웹훅을, 클라이언트 측 실시간 스트리밍을 위해서는 WebSocket을 사용하세요.
페이지 매김
SDK는 메서드에 따라 다양한 페이지 매김 전략을 사용합니다.토큰/커서 기반 (RPC V2 메서드)
페이지 기반 (DAS API)
tokenAccounts 필터
getTransactionsForAddress를 쿼리할 때, tokenAccounts 필터는 토큰 계정 활동이 포함될지 여부를 제어합니다.
changedSinceSlot — 점진적 계정 가져오기
changedSinceSlot는 주어진 슬롯 이후에 수정된 계정만 반환합니다. 동기화 또는 인덱싱 워크플로우에 유용합니다. getProgramAccountsV2, getTokenAccountsByOwnerV2, getAccountInfo, getMultipleAccounts, getProgramAccounts, getTokenAccountsByOwner에 의해 지원됩니다.
일반적인 실수
-
transactionDetails: "full"는 기본값이 아닙니다 — 기본적으로getTransactionsForAddress는 서명만 반환합니다. 전체 거래 데이터를 얻으려면transactionDetails: "full"를 설정하세요. -
sendSmartTransaction로 ComputeBudget 명령을 추가하지 마세요 — SDK가 자동으로 추가합니다. 자신의 것을 추가하면 중복 명령 및 거래 실패가 발생합니다. -
우선 수수료는 계산 단위당 마이크로람포트 단위입니다 — 람포트가 아닙니다.
getPriorityFeeEstimate에서 가져온 값은SetComputeUnitPrice에 이미 적합한 단위입니다. -
DAS 페이지 매김은 1을 기준으로 시작합니다 —
page: 1는 첫 번째 페이지이며,page: 0가 아닙니다. -
blockTime는 밀리초가 아닌 유닉스 초입니다 —blockTime에 따라 필터링할 때Math.floor(Date.now() / 1000)를 사용하세요. -
getAsset는 기본적으로 대체 가능한 토큰을 숨깁니다 — 포함하려면options: { showFungible: true }를 전달하세요. -
WebSocket 스트림 정리가 필요합니다 — 항상 AbortController 신호를 사용하고 연결 누수를 방지하기 위해 완료되었을 때
helius.ws.close()를 호출하세요.
오류 처리 및 재시도
SDK는 HTTP 상태 코드가 메시지 문자열에 내장된 네이티브Error 개체를 제공합니다 (예: "API error (429): ..."). 오류 개체에는 .status 속성이 없으므로 상태 감지는 메시지 구문 분석이 필요합니다.