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,firstNormalEpochvà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ườngresult 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ằngslotsPerEpoch. Trường này có liên quan nếuwarmuplà true.firstNormalSlot(u64): Chỉ mục slot của slot đầu tiên trongfirstNormalEpoch. Trường này có liên quan nếuwarmuplà 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à
slotsPerEpochvà 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
warmuplàtrue, các epoch trướcfirstNormalEpochsẽ có ít slot hơnslotsPerEpoch. 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 đạtfirstNormalEpoch.MINIMUM_SLOTS_PER_EPOCHthường là 32.
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.