Wallet API masih dalam versi Beta. Endpoint dan format respons dapat berubah.
Gambaran umum
Endpoint Saldo Historis menjawab pertanyaan: berapa saldo token tertentu (atau SOL native) yang dimiliki dompet ini pada titik waktu tertentu di masa lalu? Sementara endpoint Saldo melaporkan kepemilikan saat ini,balance-at melaporkan kepemilikan pada timestamp, waktu-tanggal, atau slot mana pun.
Endpoint ini menemukan satu transaksi terbaru pada atau sebelum titik waktu yang diminta yang melibatkan dompet dan token tersebut, lalu membaca saldo pascatransaksi dompet dari transaksi itu. Saldo pascatransaksi adalah saldo yang berlaku sejak transaksi tersebut hingga transaksi berikutnya. Jadi, “saldo pada waktu T” adalah saldo pascatransaksi dari transaksi relevan terakhir dengan waktu blok (atau slot) pada atau sebelum T. Untuk dompet pada umumnya, nilai ini tepat, bukan perkiraan.
- Token (SPL / Token-2022): dibaca dari saldo token pascatransaksi, yang dijumlahkan dari seluruh akun token dompet untuk mint tersebut.
- SOL native: dibaca dari saldo lamport pascatransaksi. Gunakan pseudo-mint
So11111111111111111111111111111111111111111untuk menyatakan SOL native.
Kapan fitur ini digunakan
Gunakan API Saldo Historis untuk:- Penghitungan PnL: menentukan kepemilikan pada awal dan akhir periode.
- Basis biaya dan lot pajak: merekonstruksi saldo pada peristiwa akuisisi atau pelepasan.
- Penyelesaian sengketa: membuktikan kepemilikan dompet pada waktu tertentu.
- Verifikasi snapshot: memeriksa saldo dompet saat snapshot airdrop atau tata kelola.
- Akuntansi dan audit: merekonstruksi status dompet pada batas periode.
Mulai cepat
Saldo token pada timestamp
Dapatkan saldo USDC dompet pada timestamp Unix:- JavaScript
- Python
- cURL
Saldo token pada waktu-tanggal
Berikan waktu-tanggal yang mudah dibaca manusia sebagai pengganti timestamp. Ingatlah untuk mengenkode spasi dalam URL sebagai%20:
Saldo SOL native pada slot
Untuk SOL native, gunakan pseudo-mintSo11111111111111111111111111111111111111111. Kueri berbasis slot bersifat tepat dan deterministik:
Parameter kueri
Anda harus memberikan tepat satu dari
time, datetime, atau slot. Jika Anda tidak memberikannya atau memberikan lebih dari satu, API akan menampilkan kesalahan 400.
Format waktu-tanggal
Format yang diterima:- Tanggal saja:
2025-01-10→ tengah malam UTC - Tanggal + waktu:
2025-01-10 19:20:00atau2025-01-10T19:20:00(detik bersifat opsional) → UTC - Dengan zona waktu eksplisit:
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ digunakan sebagaimana diberikan
01/10/2025, 2025-13-10, 2025-02-30) akan menampilkan kesalahan 400.
Format respons
Catatan kolom
wallet: salinan alamat dompet yang dikueri.mint: salinan mint yang dikueri (pseudo-mint SOL untuk SOL native).isNative:truejika hasilnya adalah SOL native.balance: jumlah yang mudah dibaca manusia sebagai string desimal — berupa string, bukan angka, agar saldo besar tidak kehilangan presisi. Angka nol di bagian akhir dihapus ("1.5", bukan"1.500000").balanceRaw: jumlah tepat dalam unit terkecil (lamport untuk SOL), sebagai string.decimals: jumlah desimal token (9 untuk SOL).requested: salinan kueri. Saatdatetimedigunakan,timejuga diisi dengan detik epoch yang telah ditentukan sehingga penafsiran UTC dapat terlihat.asOf: transaksi yang menjadi sumber pembacaan saldo (slot,blockTime,signature).
asOf: null berarti nol, bukan kesalahan. Jika dompet tidak memiliki transaksi yang cocok pada atau sebelum titik waktu yang diminta, endpoint akan menampilkan 200 dengan balance: "0" dan asOf: null — dompet tersebut memang belum memiliki token itu pada saat tersebut.
Kasus penggunaan
Perubahan saldo selama suatu periode
Bandingkan kepemilikan pada dua titik waktu:Pemeriksaan kelayakan snapshot
Verifikasi bahwa dompet memiliki token pada slot snapshot:Praktik terbaik
- Gunakan
slotuntuk hasil yang deterministik.timedandatetimeditentukan melalui waktu blok yang dilaporkan validator, yang dapat melenceng beberapa detik. Jika reproduksibilitas yang tepat diperlukan (snapshot, audit), lakukan kueri berdasarkanslot. - Uraikan saldo sebagai string.
balancedanbalanceRawberupa string untuk mempertahankan presisi. GunakanBigInt(balanceRaw)(atau bilangan bulat presisi arbitrer dalam bahasa Anda) untuk operasi aritmetika — jangan konversikan menjadi float. - Perlakukan
asOf: nullsebagai nol.nullasOfadalah respons berhasil yang berarti dompet tidak memiliki aktivitas untuk token tersebut hingga titik waktu yang diminta. Jangan menanganinya sebagai kesalahan. - Cache hasil historis. Saldo pada titik waktu sebelumnya tidak akan berubah. Cache hasil secara permanen untuk menghindari panggilan API berulang.
Kesalahan umum
Batasan
- Saldo dompet dengan beberapa akun token dapat terhitung kurang. Saldo dibaca dari satu transaksi terbaru yang cocok. Kasus umum — satu akun token terkait per mint — menghasilkan nilai yang tepat. Jika dompet menyimpan mint yang sama di beberapa akun token dan transaksi terbaru hanya menyentuh sebagian akun tersebut, saldo dapat terhitung kurang.
- Presisi SOL native untuk saldo yang sangat besar. Untuk saldo SOL di atas ~9.007.199 SOL (2⁵³ lamport), presisi mungkin hilang di layanan hulu. Jumlah token tidak terpengaruh.
- Presisi
time/datetimebergantung pada waktu blok yang dilaporkan validator, yang dapat melenceng beberapa detik. Gunakanslotuntuk hasil yang tepat dan deterministik. - Satu token per permintaan. Tidak ada format batch untuk beberapa mint atau “semua saldo pada waktu T”.
Langkah berikutnya
Wallet Balances
Dapatkan kepemilikan token dan NFT dompet saat ini beserta nilainya dalam USD.
Wallet API Overview
Semua endpoint Wallet API dan konvensi bersama.
API Reference
Skema permintaan dan respons untuk saldo historis.