isBlockhashValid kiểm tra xem một blockhash đã lấy trước đó có còn được mạng xem là hợp lệ hay không. Blockhash có thời hạn giới hạn (khoảng 2 phút hoặc 150 khối). Sau thời gian này, các giao dịch tham chiếu đến blockhash đó sẽ bị từ chối.
Phương thức này rất quan trọng đối với các ứng dụng lưu giữ blockhash một thời gian trước khi gửi giao dịch, nhằm đảm bảo giao dịch không thất bại do blockhash đã hết hạn.
Lưu ý về phiên bản: Phương thức này có trong solana-core phiên bản 1.9 trở lên. Đối với các nút chạy solana-core phiên bản 1.8 trở xuống, bạn nên sử dụng getFeeCalculatorForBlockhash. Ngoài thông tin về phí, phương thức này còn ngầm cho biết tính hợp lệ của blockhash (phương thức sẽ trả về lỗi nếu blockhash đã quá cũ).
Các trường hợp sử dụng phổ biến
- Gửi lại giao dịch: Trước khi thử lại một giao dịch thất bại, hãy kiểm tra xem blockhash ban đầu của giao dịch có còn hợp lệ hay không. Nếu không, bạn phải lấy một blockhash mới.
- Ký giao dịch có độ trễ: Nếu một giao dịch đã được chuẩn bị nhưng được ký và gửi sau đó, hãy xác minh tính hợp lệ của blockhash ngay trước khi gửi.
- Xử lý giao dịch lạc quan: Xác định xem một blockhash có khả năng được mạng chấp nhận hay không nếu giao dịch được gửi ngay lập tức.
Tham số yêu cầu
blockhash(chuỗi, bắt buộc): Blockhash cần kiểm tra, ở dạng chuỗi được mã hóa base-58.options(đối tượng, không bắt buộc): Một đối tượng cấu hình không bắt buộc có thể bao gồm:commitment(chuỗi, không bắt buộc): Chỉ định mức cam kết cho truy vấn (ví dụ:"finalized","confirmed","processed"). Nếu bỏ qua, mức cam kết mặc định của nút sẽ được sử dụng.minContextSlot(u64, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá. Điều này đảm bảo nút RPC không phản hồi bằng trạng thái từ một slot cũ hơnminContextSlot.
Cấu trúc phản hồi
Trườngresult trong phản hồi JSON-RPC là một đối tượng RpcResponse chứa:
context(đối tượng): Một đối tượng chứa:slot(u64): Slot mà tại đó nút RPC đã đánh giá tính hợp lệ của blockhash.
value(boolean):truenếu blockhash vẫn hợp lệ, nếu không thì làfalse.
Ví dụ mã
Mẹo dành cho nhà phát triển
- Blockhash sẽ hết hạn: Blockhash chỉ hợp lệ trong một khoảng thời gian giới hạn (khoảng 150 slot, tương đương khoảng 1–2 phút). Luôn lấy một blockhash mới nếu bạn không chắc chắn hoặc nếu đã trôi qua một khoảng thời gian đáng kể.
- Cách sử dụng
minContextSlot: Sử dụngminContextSlotđể tránh truy vấn một nút RPC chưa cập nhật. Nút này có thể trả về phản hồi “hợp lệ” đã lỗi thời cho một blockhash mà trên thực tế đã quá cũ theo góc nhìn của phần còn lại trong cụm. - Giải pháp thay thế cho các nút cũ hơn: Đối với các nút chạy phiên bản Solana trước 1.9, hãy sử dụng
getFeeCalculatorForBlockhash("<YOUR_BLOCKHASH>"). Nếu phương thức này trả về thành công thì blockhash hợp lệ. Nếu phương thức trả về lỗi (thường là do không tìm thấy blockhash hoặc blockhash đã quá cũ) thì blockhash không hợp lệ. - Xác nhận trên mạng: Ngay cả khi
isBlockhashValidtrả vềtrue, một giao dịch chỉ được hoàn tất sau khi đạt mức cam kết mong muốn trên mạng sau khi gửi.
isBlockhashValid khi xây dựng ứng dụng Solana.
Các phương thức liên quan
getLatestBlockhash
Lấy một blockhash mới cho các giao dịch mới