Skip to main content
POST
getProgramAccountsV2

Tổng quan

getProgramAccountsV2 là phiên bản nâng cao của phương thức getProgramAccounts tiêu chuẩn, được thiết kế cho các ứng dụng cần truy vấn hiệu quả những tập hợp lớn gồm các tài khoản thuộc sở hữu của các chương trình Solana cụ thể. Phương thức này bổ sung khả năng phân trang dựa trên con trỏ và cập nhật tăng dần.
Các tính năng mới trong V2:
  • Phân trang dựa trên con trỏ: Định cấu hình giới hạn từ 1 đến 10.000 tài khoản cho mỗi yêu cầu
  • Cập nhật tăng dần: Sử dụng changedSinceSlot để chỉ truy xuất các tài khoản được sửa đổi gần đây
  • Hiệu suất tốt hơn: Ngăn lỗi hết thời gian chờ và giảm mức sử dụng bộ nhớ đối với các tập dữ liệu lớn
  • Khả năng tương thích ngược: Hỗ trợ tất cả tham số getProgramAccounts hiện có
  • withContext tùy chọn: true thêm slot và apiVersion trong result.context; nếu bỏ qua hoặc đặt là false thì các trường này sẽ không được đưa vào

Lợi ích chính

Scalable Queries

Xử lý các chương trình có hàng triệu tài khoản bằng cách phân trang kết quả hiệu quả

Real-time Sync

Sử dụng changedSinceSlot để cập nhật tăng dần và đồng bộ hóa dữ liệu theo thời gian thực

Prevent Timeouts

Các truy vấn lớn từng bị hết thời gian chờ giờ đây hoạt động ổn định nhờ tính năng phân trang

Memory Efficient

Xử lý dữ liệu theo từng phần thay vì tải toàn bộ dữ liệu vào bộ nhớ cùng lúc

Các phương pháp hay nhất về phân trang

Hành vi phân trang quan trọng: Điểm kết thúc phân trang chỉ được biểu thị khi không có tài khoản nào được trả về. API có thể trả về ít tài khoản hơn giới hạn do quá trình lọc — hãy luôn tiếp tục phân trang cho đến khi paginationKey là null.

Mẫu phân trang cơ bản

Cập nhật tăng dần

Mẹo cải thiện hiệu suất

Kích thước giới hạn tối ưu: Trong hầu hết trường hợp sử dụng, giới hạn từ 1.000 đến 5.000 tài khoản cho mỗi yêu cầu mang lại sự cân bằng tốt nhất giữa hiệu suất và độ ổn định.
  • Bắt đầu với giới hạn nhỏ hơn (1000) rồi tăng lên dựa trên hiệu suất mạng
  • Sử dụng kiểu mã hóa phù hợp: jsonParsed để thuận tiện, base64 để tối ưu hiệu suất
  • Áp dụng bộ lọc để giảm kích thước tập dữ liệu trước khi phân trang
  • Lưu paginationKey để tiếp tục truy vấn nếu bị gián đoạn
  • Theo dõi thời gian phản hồi và điều chỉnh giới hạn cho phù hợp

withContext (tùy chọn)

Giá trị Boolean trong đối tượng cấu hình chương trình (params[1]). Chỉ cấu trúc của result thay đổi, còn bộ lọc, giới hạn và cách phân trang không thay đổi.

Di chuyển từ getProgramAccounts

Việc di chuyển từ phương thức ban đầu rất đơn giản — chỉ cần thay thế tên phương thức và thêm các tham số phân trang:

Các phương thức liên quan

getProgramAccounts

Phương thức ban đầu không hỗ trợ phân trang

getTokenAccountsByOwnerV2

Phương thức V2 dành cho các truy vấn tài khoản token

Tham số yêu cầu

string
bắt buộc
Khóa công khai (địa chỉ) của chương trình Solana cần truy vấn tài khoản, dưới dạng chuỗi được mã hóa base-58.
string
Mức cam kết cho yêu cầu.
  • confirmed
  • finalized
  • processed
number
Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá.
boolean
Khi là true, trả về result.context (siêu dữ liệu ảnh chụp nhanh: slot, apiVersion) và lồng accounts cùng paginationKey trong result.value. Khi là false hoặc bị bỏ qua, các trường đó xuất hiện trực tiếp trên result (ví dụ: result.accounts). Áp dụng cùng bộ lọc và giới hạn.
string
Định dạng mã hóa cho dữ liệu tài khoản được trả về.
  • jsonParsed
  • base58
  • base64
  • base64+zstd
object
Yêu cầu một phần dữ liệu của tài khoản.
number
Số byte cần trả về.
number
Độ lệch byte để bắt đầu đọc.
number
Số lượng tài khoản tối đa trả về trong mỗi yêu cầu (1–10.000).
string
Con trỏ phân trang được mã hóa base-58 để truy xuất các trang tiếp theo. Sử dụng paginationKey từ phản hồi trước đó.
number
Chỉ trả về các tài khoản đã được sửa đổi tại hoặc sau số slot này. Hữu ích cho các bản cập nhật tăng dần.
array
Hệ thống lọc mạnh mẽ để truy vấn hiệu quả các mẫu dữ liệu tài khoản Solana cụ thể.

Ủy quyền

api-key
string
query
bắt buộc

Khóa API Helius của bạn. Bạn có thể nhận khóa miễn phí trong bảng điều khiển.

Nội dung

application/json
jsonrpc
enum<string>
mặc định:2.0
bắt buộc

Phiên bản giao thức JSON-RPC.

Tùy chọn có sẵn:
2.0
Ví dụ:

"2.0"

id
string
mặc định:1
bắt buộc

Mã định danh duy nhất cho yêu cầu.

Ví dụ:

"1"

method
enum<string>
mặc định:getProgramAccountsV2
bắt buộc

Tên của phương thức RPC cần gọi.

Tùy chọn có sẵn:
getProgramAccountsV2
Ví dụ:

"getProgramAccountsV2"

params
(string | object)[]
bắt buộc

Các tham số cho phương thức phân trang nâng cao.

Khóa công khai (địa chỉ) của chương trình Solana cần truy vấn tài khoản, dưới dạng chuỗi được mã hóa base-58.

Ví dụ:

"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"

Phản hồi

Đã truy xuất thành công các tài khoản chương trình được phân trang.

jsonrpc
enum<string>

Phiên bản giao thức JSON-RPC.

Tùy chọn có sẵn:
2.0
Ví dụ:

"2.0"

id
string

Mã định danh khớp với yêu cầu.

Ví dụ:

"1"

result
không có withContext · object

Các tài khoản chương trình đã phân trang. Các trường tương tự xuất hiện trong result khi withContext là false hoặc bị bỏ qua, hoặc trong result.value khi withContext là true.