Skip to main content
Phương thức RPC getBlockCommitment cung cấp thông tin về trạng thái cam kết của một khối cụ thể trong sổ cái Solana. Thông tin này hữu ích để xác định mức độ chung cuộc của một khối dựa trên lượng stake đã bỏ phiếu cho khối đó.

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

  • Đánh giá tính chung cuộc của khối: Xác định mức độ đồng thuận mà một khối đã đạt được bằng cách xem xét các phiếu bầu được tính trọng số theo stake ở những độ sâu xác nhận khác nhau.
  • Tìm hiểu tình trạng của cụm: totalStake cung cấp thông tin về tổng lượng stake đang hoạt động trong cụm tại thời điểm khối được xử lý.
  • Logic xác nhận nâng cao: Dành cho các ứng dụng yêu cầu mức bảo đảm rất cụ thể về tính chung cuộc của khối, vượt ngoài các cấp độ cam kết tiêu chuẩn (confirmed, finalized).

Tham số

  1. slot (number, bắt buộc): Số slot (u64) của khối cần truy vấn thông tin cam kết.

Phản hồi

Trường result trong phản hồi JSON-RPC sẽ là một đối tượng chứa:
  • commitment (mảng các số nguyên u64 | null):
    • Một mảng các số nguyên u64, trong đó mỗi số nguyên biểu thị lượng stake của cụm (tính bằng lamport) đã bỏ phiếu cho khối ở một độ sâu xác nhận cụ thể.
    • Mảng thường có 32 phần tử (biểu thị các độ sâu từ 0 đến MAX_LOCKOUT_HISTORY, tức là 31).
    • Chỉ mục i của mảng cho biết lượng stake đã bỏ phiếu cho khối, có tính đến các phiếu bầu cho chính khối đó và các khối hậu duệ của nó ở độ sâu tối đa i cấp.
    • Nếu không tìm thấy khối hoặc không có thông tin cam kết của khối đó (ví dụ: khối đã quá cũ và bị loại khỏi dữ liệu theo dõi cam kết), trường này sẽ là null.
  • totalStake (number):
    • Tổng lượng stake đang hoạt động trong cụm (tính bằng lamport) tại slot mà khối này được xử lý. Giá trị này được dùng để tính tỷ lệ phần trăm stake đã cam kết với khối.

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

  • Diễn giải mảng commitment:
    • Mảng commitment cho biết lượng stake (tính bằng lamport) đã bỏ phiếu cho khối ở các độ sâu xác nhận khác nhau. Giá trị cao hơn tại các chỉ mục sâu hơn biểu thị tính chung cuộc mạnh hơn.
    • Mảng commitment có giá trị null thường có nghĩa là nút không có dữ liệu cho slot, có thể do slot đã quá cũ hoặc đã bị bỏ qua.
    • Bạn có thể đánh giá tính chung cuộc ở độ sâu i nếu commitment[i] / totalStake >= 2/3 (siêu đa số).
  • Các trường hợp sử dụng nâng cao: getBlockCommitment được dùng để phân tích chi tiết tính chung cuộc. Trong hầu hết các trường hợp phổ biến, việc sử dụng các cấp độ cam kết tiêu chuẩn (processed, confirmed hoặc finalized) với các phương thức RPC khác (như getTransaction hoặc getBlock) sẽ đơn giản và đầy đủ hơn.
  • Tìm hiểu về cam kết: Để tận dụng tối đa getBlockCommitment, bạn cần hiểu rõ các cấp độ cam kết của Solana. Xem Các cấp độ cam kết của Solana để biết thông tin chi tiết.
  • Cắt tỉa dữ liệu: Lưu ý rằng các nút RPC có thể cắt tỉa thông tin cam kết cũ, khiến các slot cũ hơn trả về kết quả null.

Ví dụ: Truy xuất thông tin cam kết của khối

Hãy thử truy xuất thông tin cam kết cho một số slot minh họa trên Devnet. Quan trọng: Các số slot được xử lý rất nhanh. Số slot được dùng bên dưới (250000000) là giá trị giữ chỗ. Khi chạy ví dụ, bạn nên thay thế số này bằng một slot gần đây đã được xác nhận và chắc chắn tồn tại trên mạng đích (ví dụ: Devnet hoặc Mainnet). Bạn có thể tìm các số slot gần đây bằng trình khám phá khối Solana. Lưu ý: Thay YOUR_API_KEY bằng khóa API Helius thực tế của bạn trong các ví dụ bên dưới.