Skip to main content
isBlockhashValid RPC 메서드는 이전에 얻은 블록해시가 네트워크에 의해 여전히 유효한지 확인합니다. 블록해시는 제한된 수명(약 2분 또는 150개 블록)을 가지며, 이후에는 이를 참조하는 트랜잭션이 거부됩니다. 이 메서드는 블록해시를 일정 시간 보관한 후 거래를 제출하는 애플리케이션에 중요합니다. 거래가 만료된 블록해시로 인해 실패하지 않도록 보장합니다. 버전 참고: 이 메서드는 solana-core v1.9 이상에서 사용할 수 있습니다. solana-core v1.8 이하를 실행하는 노드의 경우 getFeeCalculatorForBlockhash를 사용해야 하며, 이는 수수료 정보와 함께 암묵적으로 블록해시 유효성을 나타냅니다(블록해시가 너무 오래되면 오류를 발생시킴).

일반적인 사용 사례

  • 트랜잭션 재전송: 실패한 트랜잭션을 다시 시도하기 전에 원래 블록해시가 아직 유효한지 확인합니다. 유효하지 않은 경우 새 블록해시를 가져와야 합니다.
  • 지연된 트랜잭션 서명: 트랜잭션이 준비되었지만 서명과 제출이 나중에 이루어지는 경우 제출 직전에 블록해시 유효성을 확인합니다.
  • 낙관적 트랜잭션 처리: 블록해시가 트랜잭션이 즉시 전송되면 네트워크에서 수락될 가능성이 있는지 판단합니다.

요청 매개변수

  1. blockhash (문자열, 필수): base-58로 인코딩된 검사할 블록해시입니다.
  2. options (객체, 선택 사항): 다음을 포함할 수 있는 선택적 구성 객체:
    • commitment (문자열, 선택 사항): 쿼리에 대한 커밋 수준을 지정합니다 (예: "finalized", "confirmed", "processed"). 생략하면 노드의 기본 커밋이 사용됩니다.
    • minContextSlot (u64, 선택 사항): 요청이 평가될 수 있는 최소 슬롯입니다. 이는 RPC 노드가 minContextSlot보다 오래된 슬롯의 상태로 응답하지 않도록 보장합니다.

응답 구조

JSON-RPC 응답의 result 필드는 RpcResponse 객체를 포함합니다:
  • context (객체): 다음을 포함하는 객체:
    • slot (u64): RPC 노드가 블록해시 유효성을 평가한 슬롯입니다.
  • value (부울): 블록해시가 여전히 유효하면 true, 그렇지 않으면 false입니다.
예시 응답 (유효한 블록해시):
예시 응답 (유효하지 않거나 만료된 블록해시):

코드 예제

개발자 팁

  • 블록해시 만료: 블록해시는 제한된 시간 동안만 유효합니다(약 150 슬롯, 약 1-2분). 확실하지 않거나 시간이 많이 경과한 경우 항상 새 블록해시를 가져옵니다.
  • minContextSlot 사용: 오래되었지만 여전히 유효한 것처럼 보이는 응답을 제공할 수 있는 오래된 RPC 노드를 쿼리하는 것을 방지하기 위해 minContextSlot를 사용합니다.
  • 구형 노드에 대한 대안: Solana 1.9 이전 버전을 실행하는 노드의 경우 getFeeCalculatorForBlockhash("<YOUR_BLOCKHASH>")를 사용하세요. 이 메서드가 성공적으로 반환되면 블록해시는 유효합니다. 블록해시가 발견되지 않거나 너무 오래되어 오류가 발생하면 블록해시는 유효하지 않습니다.
  • 네트워크 확인: isBlockhashValidtrue를 반환하더라도 트랜잭션은 제출 후 네트워크에서 원하는 커밋 수준에 도달해야만 최종화됩니다.
본 가이드는 Solana 애플리케이션을 구축할 때 isBlockhashValid RPC 메서드를 효과적으로 사용하는 데 필요한 세부 정보를 제공합니다.

관련 메서드

getLatestBlockhash

새로운 트랜잭션을 위한 최신 블록해시 가져오기