Chuyển đến nội dung chính
Phương thức RPC getSlot trả về slot hiện tại mà nút RPC cho là đã đạt đến một mức cam kết cụ thể. Đây là phương thức cơ bản để hiểu trạng thái hiện tại của blockchain theo góc nhìn của nút.

Các trường hợp sử dụng phổ biến

  • Lấy tiến trình hiện tại của mạng: Xác định slot gần đây nhất đã được nút xử lý hoặc xác nhận.
  • Kiểm tra khả năng đồng bộ hóa của nút: So sánh slot từ các nút khác nhau có thể cho biết trạng thái đồng bộ hóa của chúng.
  • Gắn dấu thời gian cho hoạt động: Sử dụng slot hiện tại làm điểm tham chiếu cho các hoạt động hoặc để xác định độ cũ của một số dữ liệu.
  • Đầu vào cho các lệnh gọi RPC khác: Một số phương thức RPC có thể sử dụng số slot làm điểm tham chiếu.

Tham số yêu cầu

Phương thức này nhận một đối tượng cấu hình không bắt buộc làm tham số đầu tiên:
  1. options (object, không bắt buộc): Một đối tượng cấu hình không bắt buộc có các trường sau:
    • commitment (string, không bắt buộc): Chỉ định mức cam kết cho truy vấn. Các giá trị được hỗ trợ là finalized, confirmed hoặc processed. Nếu bỏ qua, mức cam kết mặc định của nút RPC sẽ được sử dụng (thường là finalized).
      • processed: Nút sẽ truy vấn slot mới nhất của nó. Lưu ý rằng slot này có thể chưa được cụm xác nhận và có khả năng bị bỏ qua.
      • confirmed: Trong Alpenglow, giá trị này tương đương với finalized; được giữ lại để đảm bảo khả năng tương thích.
      • finalized: Nút sẽ truy vấn slot mới nhất đã được cam kết vĩnh viễn. Nên dùng giá trị này cho mã mới.
    • minContextSlot (number, 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 đặt slot tối thiểu cho ngữ cảnh của nút. Nếu trạng thái của nút cũ hơn slot này, nút có thể trả về lỗi hoặc số slot phản ánh trạng thái hiện tại (cũ hơn) của nó so với mức tối thiểu này.

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

Trường result trong phản hồi JSON-RPC là một giá trị u64 duy nhất (số nguyên 64 bit không dấu), biểu thị số slot hiện tại theo mức cam kết đã chỉ định. Ví dụ về phản hồi:

Ví dụ

1. Lấy slot hiện tại (mức cam kết mặc định)

Ví dụ này lấy slot hiện tại bằng mức cam kết mặc định của nút (thường là finalized).

2. Lấy slot đã hoàn tất hiện tại

Ví dụ này truy xuất rõ ràng slot hiện tại đã được cam kết vĩnh viễn bằng finalized.

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

  • Mức cam kết rất quan trọng: processed trả về slot mới nhất mà nút đã thực thi và có thể bao gồm công việc sau đó bị hoàn tác. Trong Alpenglow, confirmed và finalized trả về cùng một trạng thái đã được cam kết vĩnh viễn; nên dùng finalized cho mã mới.
  • Sự khác biệt giữa các nút: Các nút RPC khác nhau có thể trả về số slot hơi khác nhau do độ trễ truyền tải trên mạng hoặc trạng thái xử lý riêng của chúng. Điều này đặc biệt đúng ở mức cam kết processed.
  • minContextSlot: Tham số này đảm bảo nút xử lý yêu cầu của bạn đã đạt ít nhất đến minContextSlot. Nếu nút chưa đạt đến slot này, hành vi có thể khác nhau (ví dụ: trả về lỗi hoặc slot cao nhất hiện tại của nút, thấp hơn minContextSlot). Tham số này thường được dùng trong các tình huống nâng cao khi cần đảm bảo truy vấn được thực hiện trên một trạng thái đủ mới.
getSlot là một phương thức đơn giản nhưng thiết yếu để tương tác với blockchain Solana và nắm được tiến trình hiện tại của nó.