Skip to main content
getTransaction RPC 메소드는 서명을 제공하여 확인된 트랜잭션에 대한 자세한 정보를 검색할 수 있습니다. 여기에는 트랜잭션의 슬롯, 블록 시간, 메타데이터(수수료, 상태, 잔액 변경 등) 및 트랜잭션 구조 자체가 포함됩니다.
성능 향상을 위한 배치 사용 피하기배치 보관 방법은 대기 시간을 크게 증가시킵니다. 100개 이상의 요청을 포함하는 배치는 허용되지 않습니다.

일반적인 사용 사례

  • 트랜잭션 확인: 트랜잭션이 처리되었는지 확인하고 결과(성공 또는 실패)를 확인합니다.
  • 트랜잭션 기록 표시: 사용자에게 지갑이나 탐색기에서 과거 트랜잭션의 세부 정보를 보여줍니다.
  • 감사 및 분석: 실행된 명령, 지불된 수수료, 관련된 계정을 포함한 트랜잭션의 세부사항을 검사합니다.
  • 실패한 트랜잭션 디버깅: 트랜잭션이 실패한 원인을 파악하기 위해 메타데이터의 logMessageserr 필드를 검사합니다.
  • 데이터 인덱싱: 트랜잭션에서 특정 정보를 추출하여 체인 외부 저장 및 분석을 수행합니다.

요청 매개변수

  1. transactionSignature (문자열, 필수): 쿼리하려는 base-58 인코딩된 트랜잭션 서명입니다.
  2. options (객체, 선택 사항): 다음을 포함할 수 있는 선택적 구성 객체:
    • commitment (문자열, 선택 사항): 커밋먼트 레벨을 지정합니다 (예: "finalized", "confirmed"). 제공되지 않으면 노드의 기본 커밋먼트가 사용됩니다 (보통 "finalized").
    • encoding (문자열, 선택 사항): transaction 데이터의 인코딩. 일반적인 값:
      • "json": 트랜잭션 데이터를 구조화된 JSON 형식으로 반환합니다 (명령어는 여전히 base64로 인코딩될 수 있음).
      • "jsonParsed": 가능하면 프로그램별 명령어가 사람이 읽을 수 있는 JSON 구조로 파싱됩니다. 분석에 가장 유용한 인코딩입니다.
      • "base58": base-58로 인코딩된 문자열로 트랜잭션 데이터를 반환합니다.
      • "base64": base-64로 인코딩된 문자열로 트랜잭션 데이터를 반환합니다.
      • 지정되지 않으면 Helius의 기본값으로 "json"가 사용되지만, Solana 기본값은 다를 수 있습니다. 이것을 지정하는 것이 최선입니다.
    • maxSupportedTransactionVersion (숫자, 선택 사항): RPC 엔드포인트가 처리해야 하는 최대 트랜잭션 버전.
      • 버전 트랜잭션(레거시 포함)을 포함하려면 0로 설정하십시오.
      • 생략되면 일부 노드는 레거시 트랜잭션만 반환하거나 버전 트랜잭션이 있을 경우 오류를 발생할 수 있습니다. 모든 트랜잭션 유형을 지원하려면 0로 설정하는 것이 좋습니다.

응답 구조

트랜잭션이 발견되지 않은 경우(예: 아직 처리되지 않았거나 서명이 잘못된 경우) 또는 지정된 커밋먼트 수준에 확인되지 않은 경우, 메소드는 null를 반환합니다. 그렇지 않으면 다음 필드를 가진 객체를 반환합니다:
  • slot (u64): 블록에 포함된 트랜잭션의 슬롯 번호입니다.
  • blockTime (i64 | null): 트랜잭션이 포함된 블록이 생성된 추정 Unix 타임스탬프 (초, epoch 이후). 사용할 수 없는 경우 null일 수 있음.
  • meta (객체 | null): 트랜잭션 실행에 대한 메타데이터를 포함하는 객체. 트랜잭션이 처리되기 전에 실패했거나 메타데이터를 사용할 수 없는 경우 null일 수 있음.
    • err (객체 | null): 트랜잭션이 실패한 경우 오류 객체, 그렇지 않으면 null.
    • fee (u64): 트랜잭션에 지불된 lamports 수수료.
    • preBalances (u64 배열): 트랜잭션 처리 전 관련 계정의 lamport 잔액.
    • postBalances (u64 배열): 트랜잭션 처리 후 관련 계정의 lamport 잔액.
    • preTokenBalances (객체 배열 | null): 트랜잭션 전 관련 토큰 계정의 토큰 잔액.
    • postTokenBalances (객체 배열 | null): 트랜잭션 후 관련 토큰 계정의 토큰 잔액.
    • innerInstructions (객체 배열 | null): 이 트랜잭션 내 CPI(프로그램 간 호출) 일환으로 실행된 명령어 배열.
    • logMessages (문자열 배열 | null): 트랜잭션 명령어 및 내부 명령어로 방출된 로그 메시지 배열.
    • loadedAddresses (객체, 선택 사항): 이 트랜잭션을 위한 주소 조회 테이블에서 로드된 계정을 지정합니다. writablereadonly 공개 키 배열을 포함합니다.
    • returnData (객체, 선택 사항): 트랜잭션이 sol_set_return_datasol_get_return_data를 통해 반환한 데이터. programId (문자열) 및 data (배열: [string, encoding])을 포함합니다.
    • computeUnitsConsumed (u64, 선택 사항): 이 트랜잭션이 소비한 계산 단위의 수.
  • transaction (객체 | 배열): 트랜잭션 구조 자체. encoding 매개변수에 따라 형식이 달라짐:
    • encoding"jsonParsed" 또는 "json"인 경우: message (accountKeys, instructions, recentBlockhash 등 포함) 및 signatures (문자열 배열)를 포함하는 객체.
    • encoding"base58", "base64"인 경우: [encoded_string, encoding_format_string] 배열.
  • version (“legacy” | 숫자 | undefined): 트랜잭션 버전. 오래된 트랜잭션의 경우 "legacy"이거나 버전 트랜잭션의 경우 숫자 (예: 0). 트랜잭션이 버전되었고 maxSupportedTransactionVersion가 설정되지 않은 경우 undefined.
예제 응답 (jsonParsed 인코딩):

코드 예제

개발자 팁

  • 트랜잭션 확정성: 적절한 commitment 수준으로 쿼리하는지 확인하십시오. 지정된 커밋먼트에 도달하지 않은 트랜잭션을 요청하면 null가 반환됩니다.
  • 데이터 볼륨: 응답 객체는 많은 명령어나 상세 로그가 있는 복잡한 트랜잭션의 경우 매우 클 수 있습니다. 데이터를 처리할 때 이를 염두에 두십시오.
  • jsonParsedjson: jsonParsed는 매우 편리하지만, 특정 프로그램에 대한 RPC 노드의 파싱 지원에 따라 달라질 수 있습니다. 프로그램이 인식되지 않으면 jsonParsed에서도 덜 파싱된 형식으로 되돌아갈 수 있습니다.
  • 버전 트랜잭션: 레거시 및 버전 트랜잭션 모두를 처리할 수 있도록 요청 옵션에 항상 maxSupportedTransactionVersion: 0를 설정하십시오. 그렇지 않으면 데이터 누락이나 새로운 트랜잭션 형식에 대한 오류가 발생할 수 있습니다.
  • RPC 공급자 차이: 기본 API는 표준이지만 일부 RPC 공급자는 향상된 파싱이나 추가 필드를 제공할 수 있습니다. 예를 들어, Helius는 풍부한 트랜잭션 파싱을 제공합니다.
이 가이드는 getTransaction RPC 메소드에 대한 포괄적인 개요를 제공하여 상세한 Solana 트랜잭션 데이터를 가져오고 이해할 수 있게 합니다.