Skip to main content

transactionSubscribe란 무엇인가요?

transactionSubscribe WebSocket 메서드(표준 Solana WebSocket API에 대한 Helius 확장)는 실시간 거래 이벤트를 가능하게 합니다. 사용하려면 TransactionSubscribeFilter을 제공하고 선택적으로 추가 맞춤화를 위해 TransactionSubscribeOptions을 포함할 수 있습니다. transactionSubscribe는 표준 Solana 구독 메서드와 동일한 통합 wss://mainnet.helius-rpc.comwss://devnet.helius-rpc.com 엔드포인트에 있습니다.

TransactionSubscribeFilter

  • vote: 투표 관련 거래 포함/제외 여부를 나타내는 불리언 플래그
  • failed: 실패한 거래 포함/제외 여부를 나타내는 불리언 플래그
  • signature: 서명을 기준으로 특정 거래에 대한 업데이트 필터링
  • accountInclude: 거래 업데이트를 받고 싶은 계정 목록. 계정 중 하나만 거래 업데이트에 포함되어 있으면 됩니다(예: 계정 1 또는 2).
  • accountExclude: 거래 업데이트에서 제외하려는 계정 목록
  • accountRequired: 지정된 모든 계정이 업데이트에 포함되도록 거래에 포함되어야 함(예: 계정 1 및 2)
  • tokenAccounts: 선택적 연결된 토큰 계정(ATA) 확장(balanceChanged, all 또는 none). 아래 지갑 감시, 토큰 전송 포함을 참조하세요.
accountInclude, accountExcludeaccountRequired 배열에 최대 50,000개의 주소를 포함할 수 있습니다.

TransactionSubscribeOptions (선택 사항)

  • commitment: 데이터 가져오기 위한 커밋 수준(processed, confirmed 또는 finalized)
  • encoding: 반환된 데이터의 인코딩 형식(base58, base64 또는 jsonParsed)
  • transactionDetails: 반환된 데이터의 세부 수준(full, signatures, accountsnone)
  • showRewards: 업데이트에 보상 데이터 포함 여부를 나타내는 불리언 플래그
  • maxSupportedTransactionVersion: 업데이트를 받고자 하는 거래의 최고 버전을 지정합니다. 레거시 및 v0 거래 모두를 받으려면 값을 0로 설정하십시오.
maxSupportedTransactionVersion는 지정된 거래의 계정 및 전체 수준의 세부 정보를 반환하는 데 필요합니다(즉, transactionDetails: "accounts" | "full").

Transaction Subscribe 예제

이 예제에서는 Raydium 계정 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8을 포함하는 거래를 구독하고 있습니다. 675k...1Mp8 계정을 거래의 accountKeys에 포함하는 거래가 발생하면 WSS 알림을 받게 됩니다. 구독 옵션에 따라 거래 알림은 processed 커밋 수준, jsonParsed 인코딩, full 거래 세부 정보로 전송되며 보상이 표시됩니다.

예제 알림

지갑 감시, 토큰 전송 포함

accountInclude를 사용하여 지갑을 감시하면 지갑 공개키가 계정 키에 직접 나타나는 거래만 일치합니다. 일반적인 경우는 누락됩니다: 누군가가 지갑에 SPL 토큰(예: USDC)을 보낼 때 전송은 지갑의 **연결된 토큰 계정 (ATA)**에 접근하며 지갑 공개키에는 나타나지 않습니다. 따라서 단순 accountInclude: [wallet] 구독으로는 이를 볼 수 없습니다. 일치 확장을 위해 tokenAccounts 필드를 설정하여 감시 계정이 토큰 잔액을 소유하는 거래도 일치하도록 설정하세요:
  • balanceChanged: 지갑이 소유한 토큰 잔액의 금액이 변경된 경우(또는 토큰 계정이 닫힌 경우) 일치합니다. “실제로 돈이 움직였을 때 알려줘”라는 목적으로 사용합니다. 이는 더 좁고, 낮은 볼륨이며 가장 일반적인 선택입니다.
  • all: 지갑이 소유한 토큰 잔액을 참조하는 모든 거래에 일치합니다, 비록 변경되지 않았더라도. 더 많은 볼륨.
  • none: 확장 없음. 필드를 생략한 것과 동일(기본값).
일치는 소유자 기반입니다: 지갑이 소유한 모든 토큰 계정을 포착하며 비정형적 계정도 포함, 파생된 ATA 주소에 한정되지 않습니다. 잘못된 값은 JSON-RPC 오류 -32602를 반환합니다. tokenAccounts를 생략한 구독은 이전과 동일하게 작동합니다. ATA 확장이 어떻게 작동하는지에 대한 전체 개요는 토큰 계정 (ATA) 필터링 웹소켓을 참조하세요.

새로운 Jupiter DCA 모니터링

Jupiter DCA 또는 Dollar Cost Averaging은 Solana에서 반복 거래를 예약하는 방법입니다. 이러한 예약된 매수/매도 주문은 온체인에 기록되므로 트레이더는 transactionSubscribe 메서드 및 getAsset를 사용하여 새로운 주문을 감지할 수 있습니다.

예제 알림

새로운 pump.fun 토큰 모니터링

예제 알림

구독 관리

구독 ID

transactionSubscribe가 성공하면 서버는 result 필드에 구독 ID를 반환합니다. 이는 해당 구독에서 발생하는 모든 알림의 params.subscription에 나타나는 동일한 번호입니다:
응답에서 구독 ID를 저장하세요. 구독 취소에 필요합니다.

구독 취소

알림 수신을 중지하려면 구독 ID로 transactionUnsubscribe를 호출하세요. 같은 연결에서 transactionSubscribe 호출마다 별도의 구독이 생성되며 각 구독에는 고유한 ID가 있습니다. 중복 알림 수신을 피하려면 재구독 전 구독을 취소하세요.
이 예제에서는 Raydium 거래를 구독하고 서버의 응답에서 구독 ID를 캡처한 후 해당 ID를 사용하여 구독을 취소합니다. 메시지가 transactionUnsubscribe 호출 후 잠시 동안 여전히 도착할 수 있습니다. 이는 예상된 동작입니다.