Chuyển đến nội dung chính
Phương thức RPC 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 sử dụng giới hạn (khoảng 30 giây 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 v1.9 trở lên. Đối với các nút chạy solana-core v1.8 trở xuống, bạn nên dùng getFeeCalculatorForBlockhash. Ngoài thông tin về phí, phương thức này cũng 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

  1. blockhash (chuỗi, bắt buộc): Blockhash cần kiểm tra, dưới dạng chuỗi được mã hóa base-58.
  2. options (đối tượng, không bắt buộc): Một đối tượng cấu hình tùy chọn 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ơn minContextSlot.

Cấu trúc phản hồi

Trường result 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): true nếu blockhash vẫn còn hợp lệ; nếu không thì là false.
Phản hồi mẫu (Blockhash hợp lệ):
Phản hồi mẫu (Blockhash không hợp lệ/đã hết hạn):

Ví dụ mã

Mẹo dành cho nhà phát triển

  • Blockhash 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 30 giây). 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 dùng minContextSlot: Sử dụng minContextSlot để tránh truy vấn một nút RPC cũ có thể trả về phản hồi “hợp lệ” đã lỗi thời cho một blockhash 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 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 isBlockhashValid trả về true, giao dịch chỉ được hoàn tất sau khi gửi và đạt đến mức cam kết mong muốn trên mạng.
Hướng dẫn này cung cấp các thông tin cần thiết để sử dụng hiệu quả phương thức RPC 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