getLatestBlockhash rất cần thiết để chuẩn bị và gửi giao dịch trên mạng Solana. Phương thức này truy xuất blockhash mới nhất đã được nút xử lý, cùng với độ cao khối cuối cùng mà blockhash này còn hợp lệ. Để biết thêm chi tiết về cách sử dụng blockhash hiệu quả và đảm bảo giao dịch được xử lý thành công, hãy tham khảo hướng dẫn toàn diện của chúng tôi.
Mọi giao dịch trên Solana đều phải tham chiếu đến một blockhash gần đây. Cơ chế này giúp ngăn chặn một số loại tấn công, chẳng hạn như phát lại giao dịch trên một chuỗi đã phân nhánh.
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, hãy sử dụng phương thức getRecentBlockhash thay thế.
Các trường hợp sử dụng phổ biến
- Tạo giao dịch: Lấy một blockhash gần đây để đưa vào giao dịch mới trước khi ký và gửi.
- Quản lý thời hạn giao dịch: Sử dụng
lastValidBlockHeightđể xác định khoảng thời gian mà giao dịch tham chiếu đến blockhash đã truy xuất dự kiến còn hợp lệ. - Kiểm tra trước khi thực thi: Mặc dù
simulateTransactioncó thể thực hiện việc này ngầm định, ứng dụng vẫn có thể truy xuất blockhash để chuẩn bị giao dịch theo cách thủ công cho quá trình mô phỏng.
Tham số yêu cầu
Phương thức này có thể nhận một đối tượng cấu hình không bắt buộc với các tham số sau:commitment(chuỗi, không bắt buộc): Chỉ định mức commitment cho truy vấn. Nếu bỏ qua, commitment mặc định của nút sẽ được sử dụng. Đối với giao dịch,confirmedhoặcfinalizedthường được sử dụng để đảm bảo blockhash đến từ một phần tương đối ổn định của chuỗi.minContextSlot(số nguyên, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá. Tham số này đảm bảo truy vấn được thực hiện dựa trên trạng thái sổ cái đã xử lý ít nhất đến slot này.
Cấu trúc phản hồi
Trườngresult trong phản hồi JSON-RPC sẽ là một đối tượng RpcResponse. Trường value trong đối tượng này chứa:
blockhash(chuỗi): Chuỗi được mã hóa base-58 đại diện cho blockhash mới nhất.lastValidBlockHeight(u64): Độ cao khối mà tại đóblockhashsẽ hết hạn. Giao dịch tham chiếu đếnblockhashnày vẫn hợp lệ cho đến khi mạng đạt đếnlastValidBlockHeight.
context chứa slot mà tại đó thông tin được truy xuất.
Ví dụ
1. Lấy blockhash mới nhất với commitment mặc định
Ví dụ này truy xuất blockhash mới nhất bằng commitment mặc định của nút.2. Lấy blockhash mới nhất với commitment ‘confirmed’
Ví dụ này yêu cầu rõ ràng blockhash mới nhất với commitmentconfirmed.
Mẹo dành cho nhà phát triển
- Thời hạn hiệu lực của blockhash: Blockhash chỉ hợp lệ trong một khoảng thời gian giới hạn, khoảng 2 phút (dù thời gian này có thể thay đổi). Giao dịch phải được mạng xác nhận trước khi vượt qua
lastValidBlockHeighttương ứng. Luôn truy xuất blockhash mới nếu đã qua một khoảng thời gian đáng kể kể từ lần truy xuất gần nhất. - Chọn commitment: Đối với các giao dịch quan trọng, việc sử dụng commitment
finalizedmang lại sự đảm bảo cao nhất rằng blockhash đến từ nhánh chính của chuỗi, nhưng blockhash đó có thể cũ hơn đôi chút.confirmedmang lại sự cân bằng phù hợp. Tìm hiểu thêm về các mức commitment để biết thông tin chi tiết. - Phí giao dịch: Hãy nhớ tính toán và bao gồm cả phí giao dịch phù hợp. Bản thân blockhash không quyết định mức phí.
- Logic thử lại: Nếu giao dịch hết hạn do đã vượt qua
lastValidBlockHeighttương ứng, bạn phải ký lại giao dịch bằng một blockhash mới và gần đây hơn, sau đó gửi lại.
getLatestBlockhash hiệu quả, một thành phần cốt lõi để tương tác với mạng Solana thông qua các giao dịch.
Các phương thức liên quan
simulateTransaction
Mô phỏng giao dịch trước khi gửi
isBlockhashValid
Kiểm tra xem blockhash còn hợp lệ hay không