Skip to main content
Helius TypeScript SDK를 사용하는 에이전트에 대한 모범 사례 및 권장 패턴입니다. 설치 및 시작 방법에 대해서는 개요를 참조하세요.

에이전트를 위한 권장사항

두 단계 조회 대신 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에 의해 지원됩니다.

일반적인 실수

  1. transactionDetails: "full"는 기본값이 아닙니다 — 기본적으로 getTransactionsForAddress는 서명만 반환합니다. 전체 거래 데이터를 얻으려면 transactionDetails: "full"를 설정하세요.
  2. sendSmartTransaction로 ComputeBudget 명령을 추가하지 마세요 — SDK가 자동으로 추가합니다. 자신의 것을 추가하면 중복 명령 및 거래 실패가 발생합니다.
  3. 우선 수수료는 계산 단위당 마이크로람포트 단위입니다 — 람포트가 아닙니다. getPriorityFeeEstimate에서 가져온 값은 SetComputeUnitPrice에 이미 적합한 단위입니다.
  4. DAS 페이지 매김은 1을 기준으로 시작합니다page: 1는 첫 번째 페이지이며, page: 0가 아닙니다.
  5. blockTime는 밀리초가 아닌 유닉스 초입니다blockTime에 따라 필터링할 때 Math.floor(Date.now() / 1000)를 사용하세요.
  6. getAsset는 기본적으로 대체 가능한 토큰을 숨깁니다 — 포함하려면 options: { showFungible: true }를 전달하세요.
  7. WebSocket 스트림 정리가 필요합니다 — 항상 AbortController 신호를 사용하고 연결 누수를 방지하기 위해 완료되었을 때 helius.ws.close()를 호출하세요.

오류 처리 및 재시도

SDK는 HTTP 상태 코드가 메시지 문자열에 내장된 네이티브 Error 개체를 제공합니다 (예: "API error (429): ..."). 오류 개체에는 .status 속성이 없으므로 상태 감지는 메시지 구문 분석이 필요합니다.