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

일반적인 사용 사례

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

매개변수

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

응답

지정된 블록이 확인되었고 발견된 경우, 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 블록 탐색기를 사용하여 찾을 수 있습니다. 참고: 아래 예제에서 실제 Helius API 키로 YOUR_API_KEY를 교체하세요.

개발자 팁

  • 슬롯 대 블록 높이: getBlock는 반드시 블록 높이가 아님을 기억하십시오. 슬롯은 순차적이지만 일부 슬롯은 리더에 의해 건너뛰어질 수 있습니다. 응답의 blockHeight 필드는 이 블록 이전의 실제 블록 수를 나타냅니다.
  • maxSupportedTransactionVersion가 중요합니다: 버전이 있는 거래(주소 조회 테이블을 사용하는 표준)를 검사하려면 maxSupportedTransactionVersion: 1(또는 새 표준이 등장할 경우 더 높은 버전)를 설정해야 합니다. 이를 잊으면 대부분의 현대 블록에서 오류가 발생합니다.
  • transactionDetails 선택:
    • full는 가장 상세한 분석에 필요하지만 가장 많은 데이터를 반환합니다.
    • signatures는 블록 내 거래를 나열하기만 하면 될 때 유용합니다.
    • accounts는 모든 명령 데이터 가져오기 없이 어느 계정이 관련되어 있는지 알아야 할 때 중간 선택지가 될 수 있습니다.
    • none는 드물지만 blockhash 또는 rewards와 같은 블록 수준 메타데이터만 필요한 경우 사용할 수 있습니다.
  • jsonParsed는 인코딩에 권장됩니다: 거래 세부 정보를 요청할 때 jsonParsed는 가장 개발자 친화적인 출력과 주소 조회 테이블의 계정을 올바르게 해결합니다. json(더 이상 사용되지 않음)에서는 해결되지 않습니다.
  • 블록 비가용성: null 결과는 해당 슬롯의 블록이 발견되지 않았음을 의미합니다. 슬롯이 건너뛰어졌거나, 지정된 commitment 수준으로 확인되지 않았거나, RPC 노드가 원장의 해당 역사 블록을 삭제한 경우(오래된 슬롯에 일반적)일 수 있습니다.
  • 보상 정보: 블록 보상의 배포를 검토하려면 rewards: true를 설정해야 합니다(검증자 및 경우에 따라 보상 유형에 따라 스테이커). 이는 응답 크기를 증가시킵니다.
  • 블록 구조 이해: Solana의 아키텍처에서 블록이 어떻게 맞물리는지에 대한 더 깊은 이해는 Solana의 슬롯, 블록 및 에포크 이해를 참조하세요.