Skip to main content
Phương thức RPC getTokenAccountBalance trả về số dư token của một tài khoản SPL Token cụ thể. Phương thức này rất cần thiết cho các ứng dụng cần hiển thị hoặc xác minh số lượng của một token cụ thể do tài khoản token nắm giữ.

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

  • Hiển thị số dư token của người dùng: Cho người dùng biết họ sở hữu bao nhiêu token cụ thể trong ví (các tài khoản token liên kết).
  • Xác minh token khả dụng: Kiểm tra xem tài khoản token có đủ số dư trước khi thực hiện chuyển token hoặc thao tác khác hay không.
  • Theo dõi danh mục đầu tư: Tổng hợp số dư token của người dùng trên nhiều tài khoản token khác nhau.
  • Tương tác với hợp đồng thông minh: Hợp đồng thông minh có thể truy vấn số dư token như một phần trong logic của chúng (mặc dù các chương trình on-chain thường truy cập trực tiếp dữ liệu này từ thông tin tài khoản).

Tham số yêu cầu

  1. Khóa công khai của tài khoản token (chuỗi, bắt buộc): Khóa công khai được mã hóa base-58 của tài khoản SPL Token mà bạn muốn truy vấn.
  2. Đối tượng cấu hình (đối tượng, không bắt buộc): Một đối tượng không bắt buộc có thể chứa trường sau:
    • commitment (chuỗi, không bắt buộc): Chỉ định mức cam kết cho truy vấn. Nếu bỏ qua, hệ thống sẽ sử dụng mức cam kết mặc định của nút RPC (thường là finalized).

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

Trường result trong phản hồi JSON-RPC chứa một đối tượng có trường context và trường value. Đối tượng value chứa thông tin số dư:
  • amount (chuỗi): Số dư thô của tài khoản token ở dạng chuỗi. Đây là một số nguyên biểu thị đơn vị nhỏ nhất của token (ví dụ: nếu token có 6 chữ số thập phân thì giá trị “1000000” tương ứng với 1 token).
  • decimals (u8): Số chữ số thập phân được xác định cho loại token này (bởi mint của token).
  • uiAmount (số | null): Số dư được định dạng dưới dạng số dấu phẩy động, có tính đến decimals. Trong một số trường hợp, trường này có thể là null hoặc không còn được khuyến nghị sử dụng và được thay thế bằng uiAmountString.
  • uiAmountString (chuỗi): Số dư được định dạng dưới dạng chuỗi, có tính đến decimals. Định dạng này thường được ưu tiên khi hiển thị để tránh sai số tiềm ẩn của số dấu phẩy động.
Phản hồi mẫu:

Ví dụ mã

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

  • Tài khoản token, tài khoản mint và tài khoản chủ sở hữu: Hãy đảm bảo bạn cung cấp khóa công khai của tài khoản SPL Token, không phải địa chỉ mint của token hoặc địa chỉ ví của chủ sở hữu. Thông thường, bạn có thể lấy các tài khoản token của một chủ sở hữu bằng getTokenAccountsByOwner.
  • Số chữ số thập phân: Luôn sử dụng trường decimals để diễn giải chính xác amount. Khi hiển thị, uiAmountString thường an toàn hơn uiAmount vì tránh được các vấn đề về độ chính xác của số dấu phẩy động.
  • Tài khoản không tồn tại: Nếu khóa công khai được cung cấp không tương ứng với một tài khoản token hiện có, hành vi có thể khác đôi chút tùy theo nhà cung cấp RPC hoặc thư viện. Tuy nhiên, value trong phản hồi thường sẽ là null hoặc hệ thống sẽ báo lỗi. Ví dụ JavaScript có một bước kiểm tra cơ bản cho balance.value.
  • Mức cam kết: Việc sử dụng các mức cam kết khác nhau có thể ảnh hưởng đến tốc độ bạn thấy các thay đổi về số dư, đặc biệt là với các giao dịch mới diễn ra. finalized an toàn nhất nhưng có độ trễ cao nhất.
Hướng dẫn này giúp bạn truy xuất và diễn giải chính xác số dư SPL Token bằng phương thức getTokenAccountBalance.

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

getTokenAccountsByOwner

Lấy tất cả tài khoản token của một chủ sở hữu

getTokenSupply

Lấy tổng nguồn cung của một mint token