isBlockhashValid RPC 메서드는 이전에 얻은 블록해시가 네트워크에 의해 여전히 유효한지 확인합니다. 블록해시는 제한된 수명(약 2분 또는 150개 블록)을 가지며, 이후에는 이를 참조하는 트랜잭션이 거부됩니다.
이 메서드는 블록해시를 일정 시간 보관한 후 거래를 제출하는 애플리케이션에 중요합니다. 거래가 만료된 블록해시로 인해 실패하지 않도록 보장합니다.
버전 참고: 이 메서드는 solana-core v1.9 이상에서 사용할 수 있습니다. solana-core v1.8 이하를 실행하는 노드의 경우 getFeeCalculatorForBlockhash를 사용해야 하며, 이는 수수료 정보와 함께 암묵적으로 블록해시 유효성을 나타냅니다(블록해시가 너무 오래되면 오류를 발생시킴).
일반적인 사용 사례
- 트랜잭션 재전송: 실패한 트랜잭션을 다시 시도하기 전에 원래 블록해시가 아직 유효한지 확인합니다. 유효하지 않은 경우 새 블록해시를 가져와야 합니다.
- 지연된 트랜잭션 서명: 트랜잭션이 준비되었지만 서명과 제출이 나중에 이루어지는 경우 제출 직전에 블록해시 유효성을 확인합니다.
- 낙관적 트랜잭션 처리: 블록해시가 트랜잭션이 즉시 전송되면 네트워크에서 수락될 가능성이 있는지 판단합니다.
요청 매개변수
blockhash(문자열, 필수): base-58로 인코딩된 검사할 블록해시입니다.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>")를 사용하세요. 이 메서드가 성공적으로 반환되면 블록해시는 유효합니다. 블록해시가 발견되지 않거나 너무 오래되어 오류가 발생하면 블록해시는 유효하지 않습니다. - 네트워크 확인:
isBlockhashValid가true를 반환하더라도 트랜잭션은 제출 후 네트워크에서 원하는 커밋 수준에 도달해야만 최종화됩니다.
isBlockhashValid RPC 메서드를 효과적으로 사용하는 데 필요한 세부 정보를 제공합니다.
관련 메서드
getLatestBlockhash
새로운 트랜잭션을 위한 최신 블록해시 가져오기