Akun TRON belum aktif: apa yang terhalang dan bagaimana membereskannya
Sebuah alamat hanyalah sepasang kunci sampai jaringan punya akun untuknya. Itulah seluruh isi frasa “TRON account not activated” — akun TRON belum aktif — dan itulah jawaban yang mengagetkan orang: alamatnya berbentuk benar, dompetnya menampilkannya, kode QR-nya terbaca, dan rantainya belum pernah mendengar tentangnya. Bagi tim pembayaran, keadaan ini muncul di dua tempat berbeda — dompet yang mengirim dan alamat yang dibayar — dan hanya satu di antaranya yang berupa penolakan.
Apa sebenarnya aktivasi itu
Alamat TRON diturunkan dari sepasang kunci secara luring. Tidak ada yang didaftarkan ke mana pun ketika ia dibuat, dan jaringan baru mengetahuinya ketika sebuah transaksi membuatkan catatan akun untuknya. Pemeriksaan kami sendiri harfiah soal itu: kami menanyakan kepada sebuah node akun di balik alamat tersebut, dan jawaban kosong itulah arti activated: false. Bukan “kami tidak menemukannya” dan bukan “kelihatannya baru” — memang tidak ada akun di sana.
Cara biasa sebuah akun muncul adalah transfer TRX yang masuk: kirim TRX ke alamat itu dan jaringan membuat akunnya sambil menjalankan transfer tersebut. Membuat akun tidak gratis. Berapa biayanya adalah parameter chain, bukan angka yang layak dicetak di sebuah halaman, jadi bacalah dari jaringan alih-alih dari tempat mana pun yang bisa saja tertinggal setahun. Yang penting di sini adalah bahwa itu satu transaksi biasa, dan sesudahnya alamat tersebut adalah akun seperti akun mana pun.
Apa yang terhalang: dompet yang akan mengirim
Energi didelegasikan kepada sebuah akun, dan tidak ada apa pun untuk menerima delegasi ketika akunnya tidak ada. Itulah seluruh isi penolakannya. Pesanan di mode A atau mode C yang menyebut dompet semacam itu sebagai from kembali sebagai 422 invalid_address dengan details.reason bernilai inactive_wallet, disertai details.index — transfer keberapa dalam kiriman itu — dan details.address. Ia salah satu dari empat kegagalan yang ditemui tim pembayaran berulang-ulang, dan salah satu dari dua yang ditolak mentah-mentah oleh sebuah pesanan alih-alih dipatok harganya.
Tiga sifat penolakan itu penting sebelum penanganannya ditulis.
Ia tidak menghabiskan Idempotency-Key. Tidak satu pun penolakan dalam keluarga ini menghabiskannya: permintaannya berbentuk benar dan kami sekadar tidak bisa menerimanya pada alamat-alamat itu. Begitu dompetnya ada, kunci yang sama dengan body yang identik byte demi byte adalah pengulangan yang sah, bukan konflik, jadi tidak ada yang perlu diturunkan ulang di sisi Anda.
Ia tidak dijawab dari cache. Keadaan alamat memang di-cache di sini, tetapi aktivasi dibaca ulang melewati cache sebelum sebuah pesanan ditolak karenanya — dompet yang diaktifkan beberapa detik lalu langsung diterima, bukan menunggu ada entri yang kedaluwarsa. Ulangi seketika; tidak ada apa pun yang perlu ditunggu.
Ia tidak ada di mode B. Di sana transaksinya datang sudah ditandatangani oleh pemilik alamat pengirim, jadi akunnya ada dengan sendirinya dan pemeriksaan itu akan menjadi pertanyaan yang sudah menjawab dirinya sendiri.
Belum aktif bukan berarti salah bentuk
Dua jawaban membawa kode error yang sama dan berarti hal yang berlawanan. 400 invalid_address, tanpa details.reason sama sekali, adalah soal bentuk string-nya: ia bukan alamat TRON, dan tidak ada yang terjadi di rantai yang akan menjadikannya alamat TRON. 422 invalid_address dengan sebuah details.reason adalah soal keadaan sebuah alamat yang sebenarnya baik-baik saja, dan satu transaksi saja membereskannya. Alur kerja yang memperlakukan keduanya sama akan mengulang yang pertama selamanya dan meninggalkan yang kedua, jadi kehadiran details.reason-lah yang layak dijadikan percabangan, bukan kode error-nya, yang dipakai bersama oleh keduanya.
Berapa harganya: alamat yang dibayar
Di sisi penerima tidak ada yang ditolak; penerima yang belum aktif adalah sebuah harga. Transfer ke alamat tanpa saldo USDT harus membuka akun token milik penerima selain memindahkan tokennya, dan itu memakan sekitar 131,000 unit energi berbanding sekitar 65,000 untuk alamat yang sudah memegang USDT (kenapa keduanya berbeda). Pada tarif protokol itu berarti pembakaran 13.1 TRX alih-alih 6.5 TRX, dan dalam satu putaran pembayaran ke pelanggan baru sebagian besar kirimannya bisa berada dalam keadaan itu sekaligus — berapa biaya menyewa energi tersebut bergerak mengikuti pasar, pembakarannya tidak.
Di sinilah kedua pertanyaan itu berpisah, dan namanya mengundang orang mencampuradukkannya, jadi bersikaplah tepat. activated menanyakan apakah jaringan punya akun untuk alamat itu. holds_usdt menanyakan apakah saldo USDT-nya di atas nol. Harganya mengikuti yang kedua: kind bernilai double kapan pun alamat itu tidak memegang USDT, aktif atau tidak. Peringatan inactive_recipient mengikuti yang pertama. Jadi alamat yang diaktifkan bertahun-tahun lalu tetapi sekadar belum pernah dibayar dalam USDT tidak membawa peringatan apa pun dan tetap dipatok harga double; dan alamat yang belum pernah diaktifkan tetap bisa memegang USDT — saldo TRC-20 tinggal di penyimpanan kontrak tokennya sendiri, jadi transfer yang masuk membuat saldo dan bukan akun — sehingga ia dipatok harga single dan diberi peringatan inactive_recipient sekaligus. Keduanya tampak seperti satu pertanyaan sampai ada alamat yang menjawabnya secara berbeda.
Memeriksa satu alamat, dan memeriksa lima ratus
Untuk satu alamat, GET /v1/address-check menjawab kedua pertanyaan itu dan dua lagi dalam satu panggilan: activated, holds_usdt, blacklisted, is_contract, dan expected_kind yang mengikuti dari semuanya.
Untuk satu kiriman massal, POST /v1/estimate menerima sampai 500 transfer dan tidak menolak apa pun — semua yang diperhatikannya kembali sebagai warnings pada posisi itu, termasuk temuan yang akan menghentikan sebuah pesanan. Penerima selalu diperiksa. Pengirim hanya diperiksa kalau Anda menyebutnya: from bersifat opsional pada sebuah posisi estimasi dan tidak mengubah harga, dan satu-satunya yang dibelinya adalah jawaban itu. inactive_sender di situ adalah temuan yang sama yang dilaporkan sebuah pesanan sebagai 422, hanya saja datang ketika belum ada yang dipertaruhkan.
POST /v1/estimate
{"transfers":[{"from":"TN3W…","to":"TMu1…"}]}
# warnings yang bisa dibawa sebuah posisi: blacklisted, inactive_recipient,
# contract_recipient, inactive_sender, blacklisted_sender
Tidak satu pun dari kedua panggilan itu mencadangkan atau menagih apa pun, jadi sebuah daftar bisa disaring sesering yang diizinkan batas lajunya. Yang tidak dilatih oleh keduanya adalah pesanannya sendiri, yang menghabiskan uang sungguhan di mode mana pun.
Perbaikannya
Kirimkan sedikit TRX ke alamat itu, tunggu transaksinya terkonfirmasi, lalu ulangi pesanannya dengan kunci yang sama dan byte yang sama. Tidak ada langkah pendaftaran, tidak ada pengajuan, dan tidak ada panggilan kedua ke kami. Satu aturan urutan yang layak dicatat adalah bahwa dompetnya harus sudah ada sebelum pesanannya, bukan sebelum transfernya: energi diantar ke sebuah akun, jadi akunnya harus ada untuk menerimanya.
Syarat yang sama berlaku untuk dompet yang ingin Anda jaga tetap terisi. Aturan Auto-refill ditolak pada alamat yang belum aktif dengan kata alasan yang sama, dan pada alamat kontrak dengan contract_wallet — konsumsi energi sebuah kontrak bekerja lain dan aturannya tidak punya apa pun untuk diukur. Aktifkan dulu, baru pasang aturannya.