Skip to main content
getBlock RPC 메서드를 사용하면 Solana 원장에 있는 확인된 블록에 대한 자세한 정보를 검색할 수 있습니다. 이는 블록 탐색기, 거래 내역 분석 및 특정 시점에 체인의 상태를 이해하는 데 필수적입니다.
더 나은 성능을 위해 배치를 피하세요보관 방법 배치는 대기 시간을 크게 증가시킵니다. 10개 이상의 요청을 포함하는 배치는 허용되지 않습니다.

일반적인 사용 사례

  • 블록 내용 검사: 특정 블록에 포함된 모든 거래를 봅니다.
  • 블록 해시 검색: 주어진 슬롯에 대한 블록 해시, 부모의 블록 해시 및 부모 슬롯을 가져옵니다.
  • 블록 높이 및 시간 확인: 블록의 높이(순서 번호)와 예상 생성 시간을 확인합니다.
  • 거래 세부 정보 분석: 적절한 매개변수를 사용하여 수수료, 상태, 사전/사후 잔액 및 내부 명령과 같은 메타데이터를 포함한 전체 거래 데이터를 얻을 수 있습니다.
  • 보상 가져오기: 블록의 보상 정보를 포함할 수 있습니다.

매개변수

  1. slot (필수, 숫자): 쿼리할 블록의 슬롯 번호 (u64).
  2. config (선택 사항, 객체): 다음 필드를 가진 구성 객체:
    • commitment (선택 사항, 문자열): 사용할 커밋먼트 수준을 지정합니다. 이 메서드에 대해 processed는 지원되지 않습니다. 기본값은 finalized입니다.
    • encoding (선택 사항, 문자열): 거래 데이터의 인코딩을 지정합니다. 기본값은 json입니다. transactionDetailsfull 또는 accounts인 경우, 그렇지 않으면 base64입니다.
      • json: JSON 형식으로 거래 및 계정 데이터를 반환합니다 (jsonParsed을 권장하며 더 이상 사용되지 않음).
      • jsonParsed: 구문 분석된 JSON으로 거래 및 계정 데이터를 반환합니다. 이 방법은 모든 거래 계정 키를 포함하므로 권장됩니다 (주소 조회 테이블의 경우에도 포함).
      • base58 (느림)
      • base64
      • base64+zstd
    • transactionDetails (선택 사항, 문자열): 반환할 거래 세부 정보 수준을 지정합니다. 기본값은 full입니다.
      • full: 거래 메타데이터를 포함한 전체 거래 세부 정보를 반환합니다.
      • accounts: 각 거래에 설명된 계정 목록을 반환하지만, 전체 거래 데이터나 메타데이터는 반환하지 않습니다.
      • signatures: 거래 서명만 반환합니다.
      • none: 거래 세부 정보를 반환하지 않습니다.
    • rewards (선택 사항, 불리언): 응답에 보상 배열을 포함할지 여부를 나타냅니다. 기본값은 false입니다.
    • maxSupportedTransactionVersion (선택 사항, 숫자): 반환할 최대 거래 버전을 지정합니다. 블록에 더 높은 버전의 거래가 포함된 경우 오류가 반환됩니다. 생략된 경우 레거시 거래만 반환되고, 버전이 있는 거래가 있는 블록은 오류를 발생시킵니다. 주소 조회 테이블을 사용하는 버전된 거래를 포함하려면 0로 설정합니다.

응답

지정된 블록이 확인되고 발견되면 result 필드는 블록에 대한 정보를 포함하는 객체가 됩니다. 블록이 발견되지 않거나 확인되지 않으면 resultnull입니다. 블록 객체의 주요 필드는 다음과 같습니다:
  • blockhash (문자열): 이 블록에 대한 base-58로 인코딩된 블록 해시.
  • previousBlockhash (문자열): 이전 블록의 base-58로 인코딩된 블록 해시. (원장 정리로 인해) 부모가 사용 불가능한 경우, 이것은 시스템 프로그램 ID일 수 있습니다.
  • parentSlot (숫자): 부모 블록의 슬롯 번호.
  • transactions (배열): 블록에 포함된 거래 객체 배열. 이러한 객체의 구조는 encodingtransactionDetails 매개변수에 따라 다릅니다.
    • 각 거래 객체는 일반적으로 meta (수수료, 상태, 로그, 사전/사후 잔액과 같은 메타데이터) 및 transaction (메시지 및 서명을 포함한 실제 거래 데이터)를 포함합니다.
  • rewards (옵션, 배열): rewards: true가 지정된 경우 존재하는 보상 객체 배열. 각 객체는 pubkey, lamports, postBalance, rewardType 및 잠재적으로 commission를 상세히 설명합니다.
  • blockTime (숫자 | null): Unix 타임스탬프(시작 시점 이후 초)로서 블록의 예상 생성 시간입니다. 사용할 수 없는 경우 null입니다.
  • blockHeight (숫자 | null): 이 블록의 높이(슬롯 0에서 발생한 체인의 이전 블록 수)입니다. 사용할 수 없는 경우 null입니다.
응답 내의 거래 및 메타 객체의 완전하고 자세한 구조에 대해서는 공식 Solana RPC 문서를 참조하세요.

예제: 블록 정보 가져오기

Devnet의 설명용 슬롯 번호에 대한 정보를 가져와 보겠습니다. 중요: 슬롯 번호는 빠르게 처리됩니다. 아래 사용된 슬롯 번호(250000000)는 자리 표시자입니다. 예제를 실행할 때 Devnet 또는 Mainnet 등 타겟 네트워크에 실제로 존재하는 최근 확인된 슬롯으로 바꿔야 합니다. Solana 블록 탐색기를 사용하여 최근 슬롯 번호를 확인할 수 있습니다. 참고: 아래의 예에서 YOUR_API_KEY를 실제 Helius API 키로 교체하세요.

개발자 팁

  • 슬롯 대 블록 높이: getBlock는 반드시 블록 높이가 아닌 slot 번호를 입력으로 받는다는 점을 기억하세요. 슬롯은 순차적이지만, 일부 슬롯은 리더에 의해 건너뛰어질 수 있습니다. 응답의 blockHeight 필드는 이 블록 이전의 실제 블록 수를 나타냅니다.
  • maxSupportedTransactionVersion는 중요: 버전된 거래를 포함하는 블록을 검사하려면 (현재 표준이며 주소 조회 테이블을 사용하는) maxSupportedTransactionVersion: 0를 설정해야 합니다 (또는 새로운 표준이 나타나면 더 높은 버전). 이를 잊으면 현대 블록에 대해 오류가 발생합니다.
  • transactionDetails 선택:
    • 풀 분석에 필요한 데이터 양을 반환하지만 가장 많은 데이터를 반환합니다.
    • 블록의 거래 목록만 필요한 경우 유용합니다.
    • 모든 명령 데이터를 가져오지 않고도 어떤 계정이 관련되었는지 보려면 중간 지점이 될 수 있습니다.
    • 드물지만 blockhashrewards와 같은 블록 수준 메타데이터만 필요한 경우 사용할 수 있습니다.
  • 인코딩을 위한 jsonParsed 권장: 거래 세부 정보를 요청할 때, jsonParsed는 가장 개발자 친화적인 출력을 제공하며 json (더 이상 사용되지 않음)에서는 해결되지 않는 주소 조회 테이블의 계정을 올바르게 해결합니다.
  • 블록 가용성 없음: null 결과는 해당 슬롯의 블록을 찾을 수 없음을 의미합니다. 이는 슬롯이 건너뛰어졌거나, 당신이 지정한 commitment 수준으로 블록이 확인되지 않았거나, RPC 노드가 해당 슬롯의 기록 블록을 원장에서 제거했기 때문일 수 있습니다 (오래된 슬롯에서 일반적임).
  • 보상 정보: 블록 검증자(및 보상 유형에 따라 스테이커)에게 보상의 분배를 보기 위해서는 rewards: true을 설정해야 합니다. 이는 응답 크기를 증가시킵니다.
  • 블록 구조 이해: Solana의 아키텍처에서 블록이 어떻게 맞물리는지에 대한 더 깊은 이해를 위해, Solana의 슬롯, 블록 및 에포크 이해하기를 참조하세요.