Skip to main content
Phương thức RPC 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).
Để lọc, sắp xếp nâng cao và xem lịch sử tài khoản token, hãy sử dụng getTransactionsForAddress. Lưu ý rằng getSignaturesForAddress không bao gồm các giao dịch liên quan đến tài khoản token liên kết.

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

  1. 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.
  2. 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à finalized hoặc confirmed. Mức cam kết processed khô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.
Không hỗ trợ xử lý theo lôPhương thức lưu trữ này không hỗ trợ xử lý theo lô. Chỉ gửi từng yêu cầu riêng lẻ.

Cấu trúc phản hồi

Trường result 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ặc null nế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à null nế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à null nế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ố before với chữ ký cuối cùng nhận được trong lô trước và một limit.
  • 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ố limit có 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 getTransaction vớ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 getTransactionsForAddress với bộ lọc tokenAccounts.
Bằng cách sử dụng 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ý