Skip to main content
Phương thức RPC getEpochSchedule trả về thông tin lịch epoch từ cấu hình khởi nguyên của cụm. Dữ liệu này xác định cấu trúc của các epoch, bao gồm độ dài và cách xác định lịch leader so với thời điểm bắt đầu epoch. Việc hiểu lịch epoch rất quan trọng đối với các ứng dụng cần đồng bộ với sự kiện mạng, dự đoán ranh giới epoch hoặc tìm hiểu cơ chế luân phiên leader.

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

  • Dự đoán ranh giới epoch: Xác định số lượng slot trong một epoch để ước tính thời điểm epoch hiện tại kết thúc và epoch tiếp theo bắt đầu.
  • Tính toán lịch leader: Hiểu leaderScheduleSlotOffset để biết lịch leader cho epoch sắp tới được tạo trước bao nhiêu slot.
  • Phân tích quá trình khởi tạo mạng: Quan sát warmup, firstNormalEpoch và firstNormalSlot để hiểu giai đoạn tăng dần ban đầu của độ dài epoch trong cụm, nếu có.
  • Xây dựng công cụ giám sát mạng: Sử dụng thông tin này để hiển thị chính xác thời gian và tiến trình của epoch.

Tham số yêu cầu

Phương thức này không nhận tham số nào.

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

Trường result trong phản hồi JSON-RPC sẽ là một đối tượng chứa các trường sau:
  • slotsPerEpoch (u64): Số slot tối đa trong mỗi epoch (sau giai đoạn khởi động, nếu có).
  • leaderScheduleSlotOffset (u64): Số slot trước khi một epoch bắt đầu mà tại đó lịch leader cho epoch đó được tạo.
  • warmup (boolean): Giá trị boolean cho biết cụm có giai đoạn khởi động hay không, trong đó các epoch ban đầu ngắn hơn rồi tăng dần về độ dài.
  • firstNormalEpoch (u64): Số thứ tự của epoch đầu tiên có độ dài đầy đủ bằng slotsPerEpoch. Trường này có liên quan nếu warmup là true.
  • firstNormalSlot (u64): Chỉ mục slot của slot đầu tiên trong firstNormalEpoch. Trường này có liên quan nếu warmup là true.

Ví dụ

1. Lấy lịch epoch của cụm

Ví dụ này truy xuất lịch epoch.

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

  • Thông tin tĩnh: Lịch epoch được xác định bởi cấu hình khởi nguyên của cụm và thường không thay đổi, trừ khi có bản nâng cấp mạng quan trọng hoặc một cụm mới được khởi chạy với các tham số khác.
  • Mainnet so với Testnet/Devnet: Lịch epoch, đặc biệt là slotsPerEpoch và các tham số khởi động, có thể khác biệt đáng kể giữa Mainnet Beta, Testnet và Devnet. Luôn truy vấn đúng cụm mà bạn quan tâm.
  • Giai đoạn khởi động: Nếu warmup là true, các epoch trước firstNormalEpoch sẽ có ít slot hơn slotsPerEpoch. Công thức chính xác để tính độ dài epoch trong giai đoạn khởi động là 2^N * MINIMUM_SLOTS_PER_EPOCH, trong đó N là số thứ tự epoch (bắt đầu từ 0), cho đến khi đạt firstNormalEpoch. MINIMUM_SLOTS_PER_EPOCH thường là 32.
Hướng dẫn này cung cấp thông tin cần thiết để sử dụng phương thức RPC getEpochSchedule nhằm tìm hiểu cơ chế thời gian và cấu trúc cơ bản của các epoch trong một cụm Solana.