getSignaturesForAddress cho phép bạn truy xuất danh sách chữ ký giao dịch đã được xác nhận có liên quan đến một địa chỉ tài khoản cụ thể. Phương thức này hữu ích khi truy xuất lịch sử giao dịch của một tài khoản. Các chữ ký được trả về theo thứ tự thời gian đảo ngược (mới nhất trước).
Các trường hợp sử dụng phổ biến
- Lịch sử giao dịch của tài khoản: Hiển thị các giao dịch trước đây trong ví của người dùng. Để phân tích cú pháp lịch sử giao dịch nâng cao hơn, hãy cân nhắc sử dụng Enhanced Transactions API của Helius.
- Kiểm tra hoạt động: Xem xét tất cả giao dịch liên quan đến một hợp đồng thông minh hoặc tài khoản cụ thể.
- Tra cứu giao dịch cụ thể: Tìm một giao dịch cụ thể bằng cách duyệt qua lịch sử của tài khoản khi chỉ biết địa chỉ có liên quan.
- Lập chỉ mục dữ liệu: Xây dựng chỉ mục giao dịch cục bộ để truy vấn và phân tích nhanh hơn.
Tham số yêu cầu
address(string): (Bắt buộc) Khóa công khai được mã hóa base-58 của tài khoản cần truy xuất chữ ký giao dịch.options(object, không bắt buộc): Một đối tượng cấu hình không bắt buộc có các trường sau:limit(number, không bắt buộc): Số lượng chữ ký tối đa cần trả về. Giá trị mặc định là 1000 và giá trị tối đa được phép là 1000.before(string, không bắt buộc): Một chữ ký giao dịch được mã hóa base-58. Nếu được cung cấp, truy vấn sẽ bắt đầu tìm kiếm các giao dịch trước chữ ký này.until(string, không bắt buộc): Một chữ ký giao dịch được mã hóa base-58. Nếu được cung cấp, truy vấn sẽ tìm kiếm các giao dịch cho đến khi gặp chữ ký này (không bao gồm chữ ký đó).commitment(string, không bắt buộc): Chỉ định mức cam kết sẽ dùng cho truy vấn. Các giá trị được hỗ trợ làfinalizedhoặcconfirmed. Mức cam kếtprocessedkhông được hỗ trợ. Nếu bỏ qua, mức cam kết mặc định của nút RPC sẽ được sử dụng (thường làfinalized).minContextSlot(number, không bắt buộc): Slot tối thiểu mà tại đó yêu cầu có thể được đánh giá. Đây không phải là bộ lọc cho các giao dịch lịch sử mà đặt slot tối thiểu cho ngữ cảnh của nút.
Cấu trúc phản hồi
Trườngresult của phản hồi JSON-RPC là một mảng gồm các đối tượng thông tin chữ ký. Mỗi đối tượng có cấu trúc sau:
signature(string): Chữ ký giao dịch được mã hóa base-58.slot(u64): Slot nơi giao dịch được xử lý.err(object|null): Một đối tượng lỗi nếu giao dịch thất bại, hoặcnullnếu giao dịch thành công.memo(string|null): Bản ghi nhớ liên kết với giao dịch, nếu có.blockTime(i64|null): Thời gian tạo ước tính của khối chứa giao dịch, dưới dạng dấu thời gian Unix (số giây kể từ epoch). Lànullnếu không có dữ liệu.confirmationStatus(string|null): Trạng thái xác nhận của giao dịch (ví dụ:processed,confirmed,finalized). Lànullnếu không có dữ liệu (ví dụ: đối với các phản hồi Helius cũ hơn).
Ví dụ
1. Lấy các chữ ký mới nhất cho một địa chỉ
Ví dụ này truy xuất các chữ ký giao dịch gần đây nhất (tối đa 1000) cho một địa chỉ nhất định.2. Lấy chữ ký với giới hạn
Ví dụ này truy xuất một số lượng chữ ký giao dịch gần đây theo chỉ định cho một địa chỉ.3. Phân trang lịch sử giao dịch
Ví dụ này minh họa cách truy xuất lịch sử giao dịch theo lô bằng tham sốbefore.
Mẹo dành cho nhà phát triển
- Phân trang: Để lấy toàn bộ lịch sử giao dịch của một tài khoản đang hoạt động, bạn có thể cần gửi nhiều yêu cầu, sử dụng tham số
beforevới chữ ký cuối cùng nhận được trong lô trước và mộtlimit. - Giới hạn tốc độ: Hãy lưu ý giới hạn tốc độ của nút RPC khi truy xuất lịch sử giao dịch lớn.
- Thứ tự: Các chữ ký luôn được trả về theo thứ tự từ mới nhất đến cũ nhất.
- Tham số
limit: Tham sốlimitcó thể nằm trong khoảng từ 1 đến 1000. Nếu không được chỉ định, giá trị mặc định là 1000. - Tham số
until: Có thể dùng tham số này để dừng truy xuất chữ ký khi gặp một chữ ký cũ đã biết. Điều này hữu ích nếu bạn chỉ cần các giao dịch đến một thời điểm nhất định. minContextSlot: Tham số này không lọc các giao dịch lịch sử. Nó chỉ định slot tối thiểu mà nút RPC cần sử dụng cho ngữ cảnh khi đánh giá yêu cầu. Nếu trạng thái của nút cũ hơn slot này, nút có thể trả về lỗi.- Chi tiết giao dịch: Phương thức này chỉ trả về chữ ký và thông tin cơ bản. Để lấy đầy đủ chi tiết giao dịch, hãy sử dụng phương thức
getTransactionvới từng chữ ký. - Giới hạn về tài khoản token: Phương thức này chỉ trả về các giao dịch tham chiếu trực tiếp đến địa chỉ được cung cấp. Nó không bao gồm các giao dịch liên quan đến tài khoản token thuộc sở hữu của địa chỉ đó. Để xem toàn bộ lịch sử token, bao gồm cả các tài khoản token liên kết, hãy sử dụng
getTransactionsForAddressvới bộ lọctokenAccounts.
getSignaturesForAddress cùng các tùy chọn phân trang, bạn có thể truy xuất và quản lý hiệu quả lịch sử giao dịch cho bất kỳ địa chỉ Solana nào.
Các phương thức liên quan
getTransactionsForAddress
Lọc và sắp xếp nâng cao cùng lịch sử tài khoản token
getTransaction
Lấy đầy đủ chi tiết giao dịch từ một chữ ký