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
- 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.
- Đố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, mức cam kết mặc định của node RPC sẽ được sử dụng (thường làfinalized).
Cấu trúc phản hồi
Trườngresult 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ưới 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 một token có 6 chữ số thập phân, số lượng “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 đếndecimals. Trong một số trường hợp, trường này có thể lànullhoặc không còn được khuyến nghị sử dụng và được thay bằnguiAmountString.uiAmountString(chuỗi): Số dư được định dạng dưới dạng chuỗi, có tính đếndecimals. Định dạng này thường được ưu tiên để hiển thị nhằm tránh sai số tiềm ẩn của số dấu phẩy động.
Ví dụ mã
Mẹo dành cho nhà phát triển
- Tài khoản token so với 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. - Chữ số thập phân: Luôn sử dụng trường
decimalsđể diễn giải chính xácamount. Nhìn chung,uiAmountStringan toàn hơnuiAmountkhi hiển thị 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 nhau đôi chút tùy theo nhà cung cấp RPC hoặc thư viện. Tuy nhiên,
valuetrong phản hồi thường sẽ lànullhoặc hệ thống sẽ phát sinh lỗi. Ví dụ JavaScript có bước kiểm tra cơ bản đối vớibalance.value. - Mức cam kết:
processedcó thể cho thấy một thay đổi số dư mà sau đó bị hoàn tác. Trong Alpenglow,confirmedvàfinalizedcó cùng độ trễ và cùng đảm bảo về tính chung cuộc vĩnh viễn; nên ưu tiênfinalizedcho mã mới.
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