개요
getTransactionsForAddress는 주소의 거래 내역을 고급 필터링, 유연한 정렬, 효율적인 페이지 매김과 함께 반환하는 Helius 전용 RPC 메서드입니다. 표준 Solana RPC의 일부가 아닙니다.
getSignaturesForAddress와는 달리, 이는 서명만 반환하고 연결된 토큰 계정을 건너뛰는 반면, getTransactionsForAddress는 지갑의 연결된 토큰 계정(ATA) 활동을 포함하여 전체 거래 데이터를 단일 호출로 반환할 수 있습니다. 이는 백필링, 인덱싱 및 분석을 위한 전체 주소 기록으로의 가장 빠른 경로를 제공합니다.
이 메서드는 호출 당 최대 1,000개의 전체 거래를 반환합니다.
유연한 정렬
시간순(오래된 것부터) 또는 역순(최신순)으로 정렬하세요.
고급 필터링
시간 범위, 슬롯, 서명, 상태 및 토큰 전송으로 필터링합니다.
전체 거래 데이터
한 번의 호출로 전체 거래 세부정보를 얻고, 후속 getTransaction이 필요하지 않습니다.
토큰 계정
주소의 연결된 토큰 계정의 거래를 포함하세요.
사용 시기
다음이 필요할 때getTransactionsForAddress를 사용하세요.
- 연결된 토큰 계정을 포함한 전체 지갑 토큰 기록
- 인덱서나 데이터 파이프라인을 위한 빠른 단일 호출 백필링
- 시간 기반 또는 슬롯 기반 거래 분석 및 보고
- 성공 또는 실패한 거래만 유지하기 위한 상태 필터링
- 연대기적 역사 재생(이전 순서)
- 토큰 출시 분석: 첫 번째 발행 거래 및 초기 보유자
- 지갑 펀딩 내역 및 상대방 발견
- 특정 기간에 대한 컴플라이언스 및 감사 보고서
getTransfersByAddress를 대신 사용하십시오.
네트워크 지원
빠른 시작
1
API 키 받기
Helius Dashboard에서 API 키를 받으세요.
2
고급 기능으로 쿼리하기
두 날짜 사이에 지갑의 모든 성공적인 거래를 시간 순으로 가져옵니다.
3
매개변수 이해하기
이 예시는 주요 기능을 보여줍니다.
- transactionDetails: 전체 거래 데이터를 한 번의 호출로 얻기 위해
'full'로 설정 - sortOrder: OLD(오래된 것부터) 또는 NEW(최신 순) 정렬 사용
- filters.blockTime:
gte(크거나 같은) 및lte(작거나 같은)으로 시간 범위 설정 - filters.status:
'succeeded'또는'failed'거래만 필터링 - filters.tokenAccounts: 연결된 토큰 계정에 대한 전송, 발행 및 소각 포함
요청 매개변수
string
필수
거래 내역을 쿼리할 계정의 Base-58로 인코딩된 공개 키
string
기본값:"signatures"
반환할 거래 세부정보 수준:
signatures: 기본 서명 정보(더 빠름)full: 전체 거래 데이터(getTransaction 호출 불필요, 최대 1,000까지 지원)
string
기본값:"desc"
결과 정렬 순서:
desc: 최신순(기본값)asc: 오래된 것부터(연대기적, 역사 분석에 적합)
number
기본값:"1000"
반환할 최대 거래 수:
transactionDetails: "signatures"시 최대 1000transactionDetails: "full"시 최대 1000
string
이전 응답에서 받은 페이지 매김 토큰(형식:
"slot:position")string
기본값:"finalized"
약정 수준:
finalized 또는 confirmed. processed 약정은 지원하지 않습니다.object
결과 범위를 좁히기 위한 고급 필터링 옵션입니다.
object
비교 연산자를 사용하여 슬롯 번호로 필터링:
gte, gt, lte, lt예제: { "slot": { "gte": 1000, "lte": 2000 } }object
Unix 타임스탬프를 사용하여 비교 연산자를 사용해 필터링:
gte, gt, lte, lt, eq예제: { "blockTime": { "gte": 1640995200, "lte": 1641081600 } }object
거래 서명을 비교 연산자를 사용해 필터링:
gte, gt, lte, lt예제: { "signature": { "lt": "SIGNATURE_STRING" } }string
거래 성공/실패 상태별로 필터링:
succeeded: 성공한 거래만failed: 실패한 거래만any: 성공 및 실패 모두(기본값)
{ "status": "succeeded" }string
기본값:"none"
관련 토큰 계정의 거래를 필터링:
none: 제공된 주소를 참조하는 거래만 반환(기본값)balanceChanged: 제공된 주소를 참조하거나 해당 주소가 소유한 토큰 계정의 잔액을 수정하는 거래를 반환(권장)all: 제공된 주소를 참조하거나 해당 주소가 소유한 모든 토큰 계정을 참조하는 거래를 반환
{ "tokenAccounts": "balanceChanged" }object
쿼리된 주소와 일치하는 상대방, 방향, 발행 또는 원시 금액 범위에 해당하는 토큰 전송에 참여한 거래로 결과를 좁힙니다. 모든 필드는 선택 사항이며 AND 논리로 결합됩니다.예제:
{ "tokenTransfer": { "direction": "in", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } }string
상대 주소. 다른 쪽이 이 주소인 전송과 일치합니다.
string
기본값:"any"
쿼리된 주소에 대한 전송 방향으로 필터링:
in: 쿼리된 주소로 받은 전송out: 쿼리된 주소에서 보낸 전송any: 들어오는 전송 및 나가는 전송
string
필터링할 토큰 발행.
object
UI 또는 소수 조정 금액이 아닌 원시 온체인 금액을 사용하여 금액을 비교합니다.
gt, gte, lt 및 lte을 지원합니다.string
거래 데이터의 인코딩 형식(
transactionDetails: "full"인 경우에만 적용). getTransaction API와 동일. 옵션: json, jsonParsed, base64, base58number
반환할 최대 거래 버전을 설정합니다. 생략되면 레거시 거래만 반환됩니다. 모든 버전의 거래를 포함하려면
0로 설정하세요.number
요청을 평가할 수 있는 최소 슬롯
계량
성공적인 응답은 반환된 내용에 따라 계량됩니다.응답
응답 형식은transactionDetails에 따라 다릅니다. 서명 모드는 가벼운 서명 기록을 반환하고, 전체 모드는 전체 거래 및 메타데이터 객체를 반환합니다.
- 서명 응답
- 전체 거래 응답
응답 필드
transactionIndex 필드는 getTransactionsForAddress에만 있습니다. getSignaturesForAddress, getTransaction, getTransactions와 같은 다른 유사한 엔드포인트에는 이 필드가 없습니다.
전체 모드에서 meta는 getTransaction가 반환하는 것과 동일한 형식의 완전한 거래 메타데이터 객체입니다. 이는 preTokenBalances 및 postTokenBalances를 포함하므로, 후속 호출 없이 응답에서 직접 토큰 잔액 변경(예: 스왑 감지)을 계산할 수 있습니다.
필터
slot, blockTime, signature에 대해 비교 연산자 및 특별한 status, tokenAccounts, tokenTransfer 필터를 사용할 수 있습니다. 여러 필터를 결합하면 결과를 그 교차점으로 좁게 할 수 있습니다.
비교 연산자
이 연산자는 데이터 범위를 정확하게 제어할 수 있도록 데이터베이스 쿼리처럼 작동합니다.열거형 필터
결합 필터 예제:
연결된 토큰 계정
Solana에서는 지갑이 직접 토큰을 보유하지 않습니다. 대신 지갑이 토큰 계정을 소유하고, 이 토큰 계정이 토큰을 보유합니다. 누군가가 당신에게 USDC를 보내면, 이는 귀하의 주 지갑 주소가 아닌 귀하의 USDC 토큰 계정으로 갑니다. 이 메서드는 지갑의 연결된 토큰 계정(ATAs)을 포함한 전체 토큰 기록을 쿼리할 수 있기 때문에 독특합니다.getSignaturesForAddress와 같은 네이티브 RPC 메서드는 ATAs를 포함하지 않습니다.
tokenAccounts 필터는 이 동작을 제어합니다.
none(기본값): 지갑 주소를 직접 참조하는 거래만 반환합니다. 직접적인 지갑 상호작용에만 관심이 있을 때 사용하세요.balanceChanged(권장됨): 지갑 주소를 참조하거나 지갑이 소유한 토큰 계정의 잔액을 수정하는 거래를 반환합니다. 수수료 수집이나 위임과 같은 스팸 및 관련 없는 작업을 필터링하여 의미 있는 지갑 활동의 깨끗한 뷰를 제공합니다.all: 지갑 주소를 참조하거나 지갑이 소유한 모든 토큰 계정을 참조하는 모든 거래를 반환합니다.
tokenAccounts 필터는 2022년 12월 이전의 거래를 지원하지 않습니다. 이는 슬롯 111,491,819에서 Solana에 도입된 토큰 전송 메타데이터에 의존합니다. 초기 활동을 포괄하려면 historical token account workaround를 참조하세요.
토큰 전송 필터
tokenTransfer 필터는 쿼리된 주소가 특정 조건과 일치하는 토큰 전송(특정 상대방, 발행, 방향, 또는 금액 범위)에 참여한 거래로 결과를 좁힙니다.
이를 사용하여 다음과 같은 질문에 답할 수 있습니다.
- 이 지갑이 특정 상대방으로부터 USDC를 받은 시점은 언제입니까?
- 1,000 토큰 이상인 모든 발송 전송을 보여주세요.
- 이 지갑이 이 특정 발행을 처음으로 마친 시점은 언제입니까?
filters 객체 내부의 선택적 필드입니다.
tokenTransfer 내부의 모든 필드는 선택 사항입니다. 여러 필드를 결합하면 AND로 처리됩니다.
금액 범위 연산자:
금액 연산자를 결합할 수 있습니다. 예:
{ "gte": 1000000, "lte": 5000000 }는 닫힌 범위입니다. tokenTransfer는 다른 상위 레벨 필터(slot, blockTime, status, tokenAccounts)와 결합됩니다. 최종 결과는 교차점입니다.
예제
시간 기반 분석
월별 거래 보고서 생성하기:토큰 발행 생성
특정 토큰에 대한 발행 생성 거래 찾기:펀딩 거래
특정 주소에 자금을 제공한 사람 찾기:토큰 전송
특정 토큰 동작을 격리하기 위해tokenTransfer를 필터링합니다.
주소로의 USDC 유입:
페이지 매김
한도를 초과하는 거래가 있는 경우, 응답에서 받은paginationToken를 사용하여 다음 페이지를 가져옵니다. 토큰은 API가 계속 진행할 위치를 알려주는 간단한 문자열 형식 "slot:position"입니다.
각 응답에서 페이지 매김 토큰을 사용하여 다음 페이지를 가져옵니다.
여러 주소
하나의 요청에서 여러 주소를 쿼리할 수 없습니다. 각 주소 쿼리는 별도의 API 요청으로 처리되며, 이에 따라 계량됩니다. 여러 주소에 대한 거래를 가져오려면 동일한 시간 또는 슬롯 창 내에서 각 주소를 쿼리한 다음 병합하고 정렬합니다.모범 사례
성능. 전체 거래 데이터가 필요하지 않을 때는transactionDetails: "signatures"를 사용하십시오. 더 나은 응답 시간을 위해 합리적인 페이지 크기를 사용하고, 더 타겟화된 쿼리를 위해 시간 범위 또는 특정 슬롯별로 필터링하십시오.
필터링. 광범위한 필터로 시작하여 점점 좁혀가세요. 분석 및 보고 워크플로를 위해 시간 기반 필터를 사용하고, 특정 거래 유형이나 시간 기간을 목표로 하는 정밀한 쿼리를 위해 여러 필터를 결합하십시오.
페이지 매김. 나중에 큰 쿼리를 다시 시작해야 할 경우 페이지 매김 토큰을 저장하십시오. 성능 계획을 위해 페이지 매김 깊이를 모니터링하고, 역사적인 이벤트를 연대순으로 재생해야 할 경우 오름차순을 사용하십시오.
오류 처리. 지수 백오프를 통해 속도 제한을 친절하게 처리하십시오. 요청 전에 주소를 검증하고, 적절할 때 결과를 캐시하여 API 사용을 줄이십시오.
제한 사항 및 예외 사항
일부 주소는 레거시 아카이브로 라우팅되고, 슬롯 스캔 백업으로 제한되거나 빈 값을 반환할 수 있습니다. 슬롯 111,491,819 이전의 토큰 계정 검색 또한 해결책이 필요합니다. 아래 섹션을 확장하여 전체 세부 정보를 확인하세요.지원되지 않는 및 특별히 라우팅된 주소
지원되지 않는 및 특별히 라우팅된 주소
옛 아카이브로 라우팅됨. 이러한 주소에 대한 요청은 우리의 옛 아카이브 시스템으로 라우팅됩니다.
슬롯 스캔 백업. 이러한 주소에 대한 요청은 우리의 새로운 아카이브 시스템으로 전달되며 슬롯별 스캔 접근 방식을 통해 쿼리가 가능합니다(최대 100 슬롯). 그러나 이 데이터는 인덱싱되지 않았습니다.
빈 반환(
is_reserved_address). 요청은 우리의 새로운 아카이브 시스템으로 전달되지만, 데이터는 인덱싱되지 않았며 쿼리는 빈 값을 반환합니다.해결책: 역사적인 토큰 계정 검색(슬롯 111,491,819 이전)
해결책: 역사적인 토큰 계정 검색(슬롯 111,491,819 이전)
슬롯 111,491,819 이전에 토큰 계정 활동이 있는 주소의 경우
tokenAccounts 필터는 소유권을 결정할 수 없습니다. token balance metadata 내 owner 필드가 아직 존재하지 않았기 때문입니다. 완전한 결과를 얻기 위해, 초기 거래 지침을 파싱하여 해당 토큰 계정을 수동으로 발견한 후 각 하나에 대해 getTransactionsForAddress를 병렬적으로 쿼리할 수 있습니다.getSignaturesForAddress와 무엇이 다른가요?
표준getSignaturesForAddress 메서드를 잘 알고 있다면, getTransactionsForAddress는 다단계 워크플로우를 단일 호출로 요약하고 필터링, 정렬, 토큰 계정 지원을 추가합니다.
한 번의 호출로 전체 거래 가져오기
getSignaturesForAddress를 사용하면 두 단계가 필요합니다.
getTransactionsForAddress를 사용하면 한 번의 호출입니다.
한 번의 호출로 토큰 기록 가져오기
getSignaturesForAddress를 사용하면 먼저 getTokenAccountsByOwner를 호출한 후 각 토큰 계정에 대해 쿼리해야 합니다.
getTransactionsForAddress를 사용하면 filters.tokenAccounts를 설정하기만 하면 됩니다.
추가 기능
연대기적 정렬
sortOrder: 'asc'로 오래된 것부터 최신순으로 거래 정렬.시간 기반 필터링
blockTime 필터를 사용하여 시간 범위로 필터링.상태 필터링
status 필터로 성공한 거래 또는 실패한 거래만 가져오기.간단한 페이지 매김
혼란스러운
before/until 서명 대신 paginationToken 사용.다음 단계
인덱싱 가이드
getTransactionsForAddress를 사용하여 Solana 인덱스를 백필링하고 동기화하십시오.
getTransfersByAddress
지불 및 화해를 위한 파싱된 이체 전용 기록.
API 참조
getTransactionsForAddress에 대한 전체 요청 및 응답 스키마.
역사적 데이터 개요
모든 Solana 역사적 데이터 메서드를 비교.