Lompat ke konten

Mengapa dompet dapat menampilkan saldo token yang salah?

Penyebab perbedaan saldo dan cara aman memverifikasi status on-chain.

Diperbarui

Hanya untuk tujuan edukasi; bukan saran investasi. Aset digital dan transaksi on-chain dapat menyebabkan kerugian permanen.

Jawaban langsung

Saldo dompet adalah tampilan turunan, bukan sumber kebenaran terakhir tentang kepemilikan token. Dompet biasanya menggabungkan pembacaan status RPC, indeks peristiwa, metadata token, harga, filter spam, dan cache lokal. Setiap lapisan dapat usang, menunjuk jaringan atau kontrak yang salah, atau keliru menafsirkan token. Token yang tidak tampil belum tentu hilang, dan angka yang terlihat tidak membuktikan token dapat ditransfer, ditebus, atau bernilai.

Untuk ERC-20 biasa, titik awal terkuat adalah hasil balanceOf untuk akun yang tepat, pada blok tertentu di jaringan yang benar. Hasil itu tetap hanya menyatakan unit berdasarkan aturan kontrak. Token rebase, saham vault, aset wrapped, dan posisi protokol mungkin memerlukan konversi tambahan untuk menentukan hak ekonomi atau jumlah yang kini dapat ditebus.

Cara kerja

  • Status kontrak: node RPC menjalankan balanceOf lewat eth_call terhadap status blok yang dipilih.
  • Indeks peristiwa: layanan memindai log Transfer untuk menemukan token, menyusun riwayat, dan memperbarui kepemilikan dalam cache.
  • Metadata dan valuasi: decimals, simbol, daftar token, kurs, dan feed harga mengubah bilangan mentah menjadi jumlah tampilan dan nilai fiat.
  • Kebijakan antarmuka: dompet dapat menyembunyikan aset yang belum diverifikasi atau spam, menggabungkan akun, tertinggal dari head chain, atau mempertahankan cache lama.

ERC-20 mendefinisikan pembacaan saldo dan mewajibkan Transfer untuk transfer standar. Namun, basis data berbasis peristiwa dapat melewatkan atau menggandakan log, mulai mengindeks setelah blok penting, salah menangani reorganisasi, atau keliru memahami akuntansi khusus implementasi. Peristiwa adalah bukti perubahan status, bukan pengganti pembacaan status saat ini. Karena itu, cocokkan log dengan balanceOf; nilai decimals yang salah juga membuat bilangan mentah yang benar terlihat keliru.

Pemilihan blok juga penting. JSON-RPC menerima latest, safe, dan finalized, sementara tiap penyedia dapat berada pada head chain yang berbeda. EIP-1898 mengikat bacaan terkait pada satu hash blok dan, bila diminta, mengharuskan blok tersebut kanonis. Tanpa referensi blok yang sama, dua bacaan valid dapat menggambarkan status berbeda saat sinkronisasi atau reorganisasi.

  1. Pastikan jaringan dan chainId; saldo asal dan tujuan bridge berada pada buku besar yang berbeda.
  2. Ambil alamat kontrak dari sumber proyek tepercaya atau registri terverifikasi. Jangan mengenali token dari simbol saja.
  3. Pastikan alamat akun, standar token, dan apakah asetnya token dasar, wrapped, saham vault, atau receipt protokol.
  4. Tanyakan balanceOf ke dua penyedia RPC independen pada nomor atau hash blok yang sama; catat bilangan mentah dan decimals yang dilaporkan kontrak secara terpisah.
  5. Periksa receipt, status, alamat kontrak, log, dan blok kanonis. Bandingkan status sebelum dan sesudah pada blok eksplisit, bukan hanya notifikasi dompet.
  6. Untuk aset rebase atau berbasis saham, gunakan metode konversi dan penebusan dalam dokumentasi. Pada ERC-4626, balanceOf melaporkan saham dan convertToAssets hanya memperkirakan aset dasar, bukan selalu harga penebusan yang tepat.

Contoh

Explorer menunjukkan transfer ke Lina berhasil, tetapi dompetnya tetap menampilkan nol. Ia memeriksa chain, kontrak, dan penerima, lalu meminta dua RPC independen membaca blok final yang sama. Jika keduanya memberi balanceOf positif yang sama, receipt kanonis, dan log berasal dari kontrak yang diharapkan, indeks, filter, atau cache terlambat. Mengimpor kontrak terverifikasi atau menunggu pembaruan pengindeks lebih tepat daripada mengirim transaksi lain.

Jika balanceOf kontrak terverifikasi nol, bandingkan balanceOf pada jaringan antarmuka; entri tersebut mungkin memakai kontrak lain dengan simbol sama atau data lama jaringan lain. Pada vault, saldo saham dapat benar tetapi nilai aset berbeda karena dompet belum menerapkan konversi protokol terkini.

Risiko dan kontrol

  • Jaringan atau alamat salah: periksa chainId, akun lengkap, dan kontrak lengkap sebelum transaksi koreksi.
  • Data RPC usang atau tidak konsisten: bandingkan penyedia independen pada satu blok eksplisit; jangan campur pembacaan latest dari waktu berbeda.
  • Reorganisasi: perlakukan blok baru sebagai sementara sesuai model finalitas chain dan periksa kembali receipt kanonis.
  • Celah indeks: pindai ulang dari blok yang diketahui dan cocokkan log dengan status; pengindeks harus membatalkan blok yatim, bukan hanya menambah peristiwa.
  • Akuntansi khusus: jangan bangun ulang saldo rebase, vault, atau receipt dari jumlah Transfer tanpa dokumentasi protokol.
  • Kesalahan metadata atau harga: pisahkan unit mentah, jumlah token, dan nilai fiat; harga tidak mengubah saldo on-chain, sedangkan decimals mengubah tampilannya.
  • Token atau antarmuka jahat: melihat saldo tidak memerlukan persetujuan atau tanda tangan. Tolak tautan pemulihan, izin, atau transaksi tak diminta yang mengaku menyegarkan saldo.

Jika masih berbeda, hentikan transfer dan simpan jaringan, akun, kontrak, nomor serta hash blok, respons RPC mentah, dan hash transaksi. Periksa apakah penyedia mendukung blok yang diminta dan apakah upgrade proxy, pause, rebase, migrasi, atau finalisasi bridge mengubah akuntansi yang diharapkan. Eskalasikan melalui kanal dukungan publik tanpa membagikan seed phrase atau kunci privat.

Saldo benar tidak menjamin jalan keluar. Sebelum bertindak atas aset asing, periksa secara terpisah batas transfer, kemampuan penebusan, likuiditas, biaya, dan izin kontrak. Lakukan simulasi atau uji kecil hanya setelah kontrak terverifikasi; menaikkan Gas atau slippage berulang kali tidak memperbaiki kesalahan indeks.

Kesalahpahaman umum

  • “Layar adalah blockchain.” Itu tampilan gabungan.
  • “Jumlah Transfer selalu sama dengan saldo.” Indeks atau model token dapat berbeda.
  • “Konfirmasi memperbarui dompet.” Konfirmasi tidak memaksa cache.
  • “Saldo positif pasti dapat dijual.” Batasan atau likuiditas dapat mencegahnya.
  • “Saldo perlu tanda tangan.” Bacaan publik tidak memerlukannya.

Topik terkait

Sumber

Navigasi

Cari di wiki...