Phương thức RPC getBlock cho phép bạn truy xuất thông tin chi tiết về một khối đã được xác nhận trong sổ cái Solana. Phương thức này rất cần thiết cho trình khám phá khối, phân tích lịch sử giao dịch và tìm hiểu trạng thái của chuỗi tại một thời điểm cụ thể.
Tránh xử lý theo lô để có hiệu suất tốt hơnViệc xử lý các phương thức lưu trữ theo lô làm tăng đáng kể độ trễ. Không cho phép các lô có hơn 10 yêu cầu.
Các trường hợp sử dụng phổ biến
- Kiểm tra nội dung khối: Xem tất cả giao dịch có trong một khối cụ thể.
- Truy xuất mã băm khối: Lấy mã băm khối của một slot nhất định, mã băm khối của khối cha và slot cha.
- Kiểm tra chiều cao và thời gian của khối: Xác định chiều cao của khối (số thứ tự của khối) và thời gian tạo ước tính.
- Phân tích chi tiết giao dịch: Với các tham số phù hợp, bạn có thể lấy toàn bộ dữ liệu giao dịch, bao gồm siêu dữ liệu như phí, trạng thái, số dư trước/sau và các lệnh nội bộ.
- Truy xuất phần thưởng: Tùy chọn đưa thông tin phần thưởng của khối vào kết quả.
Tham số
-
slot (số, bắt buộc): Số slot của khối cần truy vấn (u64).
-
config (đối tượng, tùy chọn): Một đối tượng cấu hình có các trường sau:
commitment (chuỗi, tùy chọn): Chỉ định mức cam kết cần sử dụng. Phương thức này không hỗ trợ processed. Mặc định là finalized.
encoding (chuỗi, tùy chọn): Kiểu mã hóa cho dữ liệu giao dịch. Mặc định là json nếu transactionDetails là full hoặc accounts; nếu không, mặc định là base64.
json: Trả về dữ liệu giao dịch và tài khoản ở định dạng JSON (không còn được khuyến nghị, hãy dùng jsonParsed).
jsonParsed: Trả về dữ liệu giao dịch và tài khoản dưới dạng JSON đã phân tích. Đây là lựa chọn được khuyến nghị vì bao gồm tất cả khóa tài khoản của giao dịch (kể cả những khóa từ Bảng tra cứu địa chỉ).
base58 (chậm)
base64
base64+zstd
transactionDetails (chuỗi, tùy chọn): Chỉ định mức độ chi tiết của giao dịch cần trả về. Mặc định là full.
full: Trả về đầy đủ thông tin giao dịch, bao gồm siêu dữ liệu giao dịch.
accounts: Trả về danh sách tài khoản được nêu chi tiết trong mỗi giao dịch, nhưng không trả về toàn bộ dữ liệu hoặc siêu dữ liệu giao dịch.
signatures: Chỉ trả về chữ ký giao dịch.
none: Không trả về thông tin chi tiết giao dịch.
rewards (boolean, tùy chọn): Có đưa mảng phần thưởng vào phản hồi hay không. Mặc định là false.
maxSupportedTransactionVersion (số, tùy chọn): Phiên bản giao dịch tối đa cần trả về. Nếu khối chứa giao dịch có phiên bản cao hơn, yêu cầu sẽ thất bại với lỗi JSON-RPC -32015. Nếu bỏ qua, chỉ các giao dịch cũ được trả về và khối có bất kỳ giao dịch được đánh phiên bản nào cũng sẽ gây ra lỗi. Đặt thành 1 để bao gồm giao dịch cũ, v0 (Bảng tra cứu địa chỉ) và v1. Xem Hỗ trợ giao dịch v1.
Phản hồi
Nếu khối được chỉ định đã được xác nhận và tìm thấy, trường result sẽ là một đối tượng chứa thông tin về khối. Nếu không tìm thấy hoặc khối chưa được xác nhận, result sẽ là null.
Các trường chính trong đối tượng khối bao gồm:
blockhash (chuỗi): Mã băm khối được mã hóa bằng base-58 của khối này.
previousBlockhash (chuỗi): Mã băm khối được mã hóa bằng base-58 của khối trước đó. Nếu khối cha không khả dụng (do dọn dẹp sổ cái), giá trị này có thể là ID chương trình hệ thống.
parentSlot (số): Số slot của khối cha.
transactions (mảng): Một mảng các đối tượng giao dịch có trong khối. Cấu trúc của các đối tượng này phụ thuộc vào các tham số encoding và transactionDetails.
- Mỗi đối tượng giao dịch thường chứa
meta (siêu dữ liệu như phí, trạng thái, nhật ký và số dư trước/sau) và transaction (dữ liệu giao dịch thực tế, bao gồm thông điệp và chữ ký).
rewards (mảng, tùy chọn): Một mảng các đối tượng phần thưởng, xuất hiện nếu rewards: true được chỉ định. Mỗi đối tượng trình bày chi tiết pubkey, lamports, postBalance, rewardType và có thể cả commission.
blockTime (số | null): Thời gian tạo ước tính của khối dưới dạng dấu thời gian Unix (số giây kể từ epoch), hoặc null nếu không khả dụng.
blockHeight (số | null): Chiều cao của khối này (số khối đứng trước nó trong chuỗi bắt nguồn từ slot 0), hoặc null nếu không khả dụng.
Tham khảo tài liệu RPC chính thức của Solana để biết cấu trúc đầy đủ và chi tiết của các đối tượng giao dịch và siêu dữ liệu trong phản hồi.
Ví dụ: Truy xuất thông tin khối
Hãy thử truy xuất thông tin 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 số này bằng một slot gần đây đã được xác nhận mà bạn biết là 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ụ dưới đây.
Mẹo dành cho nhà phát triển
- Slot và chiều cao khối: Hãy nhớ rằng
getBlock nhận đầu vào là số slot, không nhất thiết là chiều cao khối. Dù các slot có thứ tự liên tiếp, một số slot có thể bị leader bỏ qua. Trường blockHeight trong phản hồi cho biết số khối thực tế đứng trước khối này.
maxSupportedTransactionVersion rất quan trọng: Để kiểm tra các khối có giao dịch được đánh phiên bản (hiện là tiêu chuẩn và sử dụng Bảng tra cứu địa chỉ), bạn phải đặt maxSupportedTransactionVersion: 1 (hoặc phiên bản cao hơn nếu có tiêu chuẩn mới). Nếu quên, hầu hết các khối hiện đại sẽ trả về lỗi.
- Chọn
transactionDetails:
full cần thiết cho hầu hết các phân tích chi tiết nhưng trả về nhiều dữ liệu nhất.
signatures hữu ích nếu bạn chỉ cần liệt kê các giao dịch trong một khối.
accounts có thể là lựa chọn trung gian nếu bạn cần xem những tài khoản nào có liên quan mà không truy xuất toàn bộ dữ liệu lệnh.
none hiếm khi được dùng nhưng có thể phù hợp nếu bạn chỉ quan tâm đến siêu dữ liệu cấp khối như blockhash hoặc rewards.
- Nên dùng
jsonParsed để mã hóa: Khi yêu cầu thông tin chi tiết về giao dịch, jsonParsed cung cấp đầu ra thân thiện nhất với nhà phát triển và phân giải chính xác các tài khoản từ Bảng tra cứu địa chỉ, điều mà json (không còn được khuyến nghị) không thực hiện được.
- Khối không khả dụng: Kết quả
null có nghĩa là không tìm thấy khối tại slot đó. Nguyên nhân có thể là slot đã bị bỏ qua, khối chưa được xác nhận đến mức do commitment chỉ định hoặc nút RPC đã loại bỏ khối lịch sử đó khỏi sổ cái (thường xảy ra với các slot cũ hơn).
- Thông tin phần thưởng: Cần đặt
rewards: true để xem việc phân phối phần thưởng khối cho trình xác thực (và có thể cả người stake, tùy thuộc vào loại phần thưởng). Việc này làm tăng kích thước phản hồi.
- Tìm hiểu cấu trúc khối: Để hiểu sâu hơn về cách các khối được tổ chức trong kiến trúc Solana, hãy xem Tìm hiểu về slot, khối và epoch trên Solana.