Cara Memvalidasi Alamat Kripto Sebelum Mengirim Dana
Daftar Isi
Transaksi kripto tidak dapat dibalik. Jika Anda mengirim dana ke alamat yang salah format, alamat jaringan yang salah, atau alamat dengan satu karakter tertukar, tidak ada bank untuk dihubungi dan tidak ada chargeback untuk diajukan. Koin hilang selamanya. Validasi alamat adalah garis pertahanan terakhir antara dana Anda dan kerugian permanen, tetapi kebanyakan orang melewatkannya sama sekali.
Panduan ini menjelaskan cara validasi alamat bekerja di tingkat teknis --- pemeriksaan format, verifikasi checksum, dan deteksi kebingungan cross-chain --- dan menunjukkan cara membangun validasi ke dalam alur kerja Anda sehingga setiap transfer keluar diperiksa sebelum meninggalkan dompet.
Mengapa Validasi Menyelamatkan Kripto Anda¶
Cara paling umum orang kehilangan kripto bukanlah melalui peretasan canggih. Melainkan kesalahan manusia sederhana: menyalin alamat salah, menempel alamat dari chain yang salah, atau terkena malware clipboard yang diam-diam mengganti alamat di clipboard dengan alamat milik penyerang.
Pertimbangkan mekanismenya. Alamat Bitcoin seperti bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 panjangnya 42 karakter. Alamat Ethereum panjangnya 42 karakter termasuk awalan 0x. Alamat Solana bisa hingga 44 karakter. Ini bukan string yang ramah manusia. Menyalin manual hampir pasti mengundang kesalahan, dan bahkan salin-tempel bisa salah jika malware terlibat.
Validasi menangkap masalah-masalah ini sebelum menjadi bencana. Pemeriksaan validasi yang tepat akan memberi tahu Anda:
- Apakah formatnya benar? Apakah string cocok dengan pola yang diharapkan untuk blockchain target?
- Apakah checksum lolos? Apakah ada karakter yang berubah sejak alamat dibuat?
- Apakah ini jaringan yang benar? Apakah Anda akan mengirim Bitcoin ke alamat Bitcoin Cash, atau ETH ke alamat BNB Chain yang kebetulan terlihat identik?
Setiap pemeriksaan beroperasi di lapisan berbeda. Bersama-sama, mereka membentuk strategi pertahanan berlapis yang menangkap sebagian besar kesalahan terkait alamat.
Validasi Format: Regular Expression¶
Lapisan validasi pertama adalah struktural. Setiap blockchain mendefinisikan format spesifik untuk alamatnya, dan pemeriksaan pola sederhana dapat langsung menolak string yang tidak sesuai.
Format Alamat Bitcoin¶
Bitcoin memiliki tiga format alamat aktif, masing-masing dengan awalan berbeda:
- Legacy (P2PKH): Dimulai dengan
1, 25--34 karakter. Contoh:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2. Menggunakan encoding Base58Check. - Script (P2SH): Dimulai dengan
3, 25--34 karakter. Contoh:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy. Juga Base58Check. - Native SegWit (Bech32): Dimulai dengan
bc1q(v0) ataubc1p(v1/Taproot), 42--62 karakter. Contoh:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4. Menggunakan encoding Bech32 atau Bech32m.
Regex yang cocok dengan ketiga format akan terlihat seperti:
^(1[1-9A-HJ-NP-Za-km-z]{25,34})|(3[1-9A-HJ-NP-Za-km-z]{25,34})|(bc1[a-zA-HJ-NP-Z0-9]{25,90})$
Ini menangkap string non-Bitcoin yang jelas, tetapi tidak memverifikasi checksum. String bisa cocok dengan pola sempurna tetapi tetap mengandung typo. Di situlah lapisan berikutnya berperan.
Alamat Ethereum dan EVM¶
Alamat Ethereum lebih sederhana formatnya: 0x diikuti 40 karakter heksadesimal. Format yang sama berlaku untuk semua chain kompatibel EVM --- Polygon, Arbitrum, Optimism, Base, dan BNB Chain.
^0x[0-9a-fA-F]{40}$
Kesederhanaan ini merupakan kekuatan sekaligus kelemahan. Mudah memvalidasi format, tetapi tidak mungkin mengetahui dari alamat saja chain EVM mana yang dimaksud. Kita akan membahas masalah ini di bagian cross-chain di bawah.
Alamat Solana¶
Alamat Solana adalah public key ed25519 yang di-encode Base58, biasanya 32--44 karakter, tanpa awalan tetap. Alfabet Base58 mengecualikan karakter yang mudah membingungkan (0, O, I, l), yang mengurangi kesalahan transkripsi:
^[1-9A-HJ-NP-Za-km-z]{32,44}$
Alamat XRP¶
XRP menggunakan varian Base58 sendiri. Alamat dimulai dengan r dan panjangnya 25--35 karakter.
Alamat TRON¶
Alamat TRON dimulai dengan T dan panjangnya 34 karakter, menggunakan encoding Base58Check serupa dengan format legacy Bitcoin.
Pemeriksaan format cepat dan murah --- bisa berjalan di setiap penekanan tombol dalam field form. Tetapi ini adalah lapisan validasi terlemah. Alamat yang valid formatnya masih bisa rusak. Anda butuh checksum untuk menangkap itu.
Verifikasi Checksum: Mendeteksi Typo¶
Checksum adalah sepotong kecil data redundan yang tertanam dalam alamat yang memungkinkan Anda memverifikasi integritasnya. Jika ada karakter yang berubah, checksum tidak akan cocok, dan alamat harus ditolak.
Base58Check (Bitcoin Legacy, TRON, XRP)¶
Encoding Base58Check menambahkan checksum 4 byte yang diturunkan dari hash SHA-256 ganda. Proses verifikasi:
- Decode string Base58 ke byte.
- Pisahkan payload dari 4 byte terakhir (checksum).
- Hitung SHA-256(SHA-256(payload)).
- Bandingkan 4 byte pertama dari hash dengan checksum.
Jika cocok, alamat utuh. Jika tidak, setidaknya satu karakter telah berubah. Probabilitas kesalahan acak lolos pemeriksaan ini adalah sekitar 1 berbanding 4,3 miliar (2^32).
Bech32 dan Bech32m (Bitcoin SegWit)¶
Bech32 menggunakan skema deteksi kesalahan berbeda berdasarkan kode BCH. Dapat mendeteksi kesalahan satu karakter manapun dan sebagian besar kesalahan multi-karakter umum. Bech32m (digunakan untuk alamat Taproot yang dimulai dengan bc1p) adalah revisi ringan yang memperbaiki kelemahan yang diketahui dalam encoding Bech32 asli untuk kasus mutasi tertentu.
EIP-55 Mixed-Case Checksum (Ethereum)¶
Alamat Ethereum adalah heksadesimal, jadi tidak ada ruang untuk checksum tradisional dalam encoding. EIP-55 memecahkan ini secara cerdas: menggunakan kapitalisasi huruf hex sebagai checksum. Setiap karakter dikapitalisasi atau ditulis kecil berdasarkan nibble yang sesuai dari hash Keccak-256 alamat lowercase.
Misalnya, 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed memiliki huruf besar dan kecil spesifik. Jika Anda mengubah kapitalisasi karakter manapun, checksum gagal. Alamat semua huruf kecil (0x5aaeb6...) diperlakukan sebagai tanpa checksum dan secara teknis valid tetapi tidak memberikan perlindungan kesalahan.
Inilah mengapa alat seperti Ethereum Address Validator memeriksa baik format maupun kapitalisasi EIP-55. Alamat yang lolos kedua pemeriksaan hampir pasti disalin dengan benar.
Solana: Tanpa Checksum Bawaan¶
Alamat Solana adalah public key yang di-encode Base58 mentah tanpa checksum tertanam. Ini berarti typo bisa menghasilkan alamat yang terlihat valid tetapi tidak dimiliki siapa pun --- atau lebih buruk, milik orang lain. Validasi untuk alamat Solana hanya bisa mengkonfirmasi format dan validitas Base58, bukan integritas. Ini membuat salin-tempel yang hati-hati dan penggunaan kode QR sangat penting untuk transaksi Solana. Anda tetap bisa memverifikasi format dengan Solana Address Validator.
Kebingungan Cross-Chain: Kesalahan Umum¶
Validasi format dan checksum melindungi Anda dari typo. Validasi cross-chain melindungi Anda dari mengirim dana ke alamat yang benar di jaringan yang salah.
Tumpang Tindih Chain EVM¶
Kebingungan cross-chain paling berbahaya terjadi pada jaringan kompatibel EVM. Alamat Ethereum juga merupakan alamat Polygon yang valid, alamat Arbitrum, alamat Optimism, alamat Base, dan alamat BNB Chain. Jika Anda mengirim ETH ke alamat di Polygon, ETH tidak sampai di Polygon --- ia pergi ke alamat itu di Ethereum mainnet (atau hilang jika Anda memilih jaringan salah di dompet).
Tidak ada cara membedakan alamat EVM hanya dari format. Satu-satunya pertahanan adalah memverifikasi pemilihan jaringan di perangkat lunak dompet dan memeriksa ulang chain ID sebelum mengkonfirmasi. Untuk melihat lebih dalam keamanan alamat EVM, lihat Keamanan Alamat EVM.
Bitcoin vs. Bitcoin Cash¶
Alamat Bitcoin legacy (dimulai dengan 1 atau 3) secara sintaksis identik dengan alamat Bitcoin Cash. Bitcoin Cash memperkenalkan format CashAddr (dimulai dengan bitcoincash:q...) untuk mengurangi kebingungan, tetapi banyak layanan masih menampilkan format legacy. Mengirim BTC ke alamat BCH (atau sebaliknya) tidak selalu mengakibatkan kerugian --- dana mungkin bisa dipulihkan dengan private key --- tetapi ini kesalahan yang menegangkan dan sepenuhnya bisa dihindari.
TRON vs. Bitcoin Legacy¶
Alamat TRON dimulai dengan T dan menggunakan Base58Check, secara permukaan menyerupai beberapa pola alamat Bitcoin. Manusia yang melihat sekilas keduanya mungkin tidak langsung menyadari mereka milik jaringan berbeda. Alat validasi otomatis menangkap ini secara instan dengan memeriksa version byte dalam payload Base58Check.
Solana vs. Semua Lainnya¶
Alamat Base58 Solana tidak memiliki awalan khas, yang berarti bisa secara permukaan menyerupai alamat Base58 lainnya. Perlindungan terbaik adalah selalu memvalidasi alamat dengan alat khusus chain sebelum mengirim.
SafeSeed Address Validator¶
SafeSeed menyediakan validator alamat gratis yang berjalan client-side untuk beberapa blockchain. Setiap validator melakukan pemeriksaan format dan, jika berlaku, verifikasi checksum sepenuhnya di browser Anda --- tidak ada data yang dikirim ke server manapun.
- Bitcoin Address Validator --- Memvalidasi format Legacy, P2SH, Bech32, dan Bech32m dengan verifikasi checksum penuh.
- Ethereum Address Validator --- Memvalidasi format hex dan checksum mixed-case EIP-55.
- Solana Address Validator --- Memvalidasi format Base58 dan set karakter.
Validator memberi tahu Anda tidak hanya apakah alamat valid, tetapi format spesifik yang digunakan. Ini sangat berguna untuk Bitcoin, di mana membedakan antara alamat Legacy, SegWit, dan Taproot penting untuk estimasi biaya dan kompatibilitas.
Karena alat-alat ini berjalan sepenuhnya di browser menggunakan Web Crypto API, Anda dapat menggunakannya di mesin air-gapped untuk keamanan maksimum. Untuk panduan membuat alamat di lingkungan offline, lihat Membuat Seed Bitcoin Offline dan Membuat Dompet Ethereum Offline.
Mengintegrasikan Validasi ke Alur Kerja Anda¶
Mengetahui cara validasi bekerja hanya setengah pertempuran. Setengahnya lagi adalah menjadikannya kebiasaan.
Sebelum Setiap Transaksi¶
- Salin alamat dari sumber tepercaya. Gunakan aplikasi dompet langsung, bukan pesan, email, atau situs web. Malware clipboard nyata dan tersebar luas.
- Tempel ke validator. Jalankan alamat melalui validator khusus chain untuk mengkonfirmasi format dan checksum. Ini memakan dua detik dan bisa menyelamatkan ribuan dolar.
- Bandingkan beberapa karakter pertama dan terakhir secara visual. Bahkan setelah validasi, bandingkan 6 karakter pertama dan 6 karakter terakhir alamat yang ditempel dengan aslinya. Ini menangkap serangan penggantian clipboard yang menukar bagian tengah alamat.
- Kirim transaksi percobaan kecil terlebih dahulu. Untuk transfer besar, kirim jumlah kecil dulu dan konfirmasi diterima sebelum mengirim sisanya. Biaya transaksi adalah asuransi.
Untuk Pengembang¶
Jika Anda membangun dompet, exchange, atau dApp, validasi alamat harus wajib di lapisan input. Jangan mengandalkan pengguna untuk memvalidasi alamat sendiri. Implementasikan pemeriksaan format saat mengetik, jalankan verifikasi checksum saat blur, dan tampilkan pesan kesalahan yang jelas saat validasi gagal.
Untuk Bitcoin, gunakan library yang menangani Legacy, P2SH, Bech32, dan Bech32m. Untuk Ethereum, implementasikan verifikasi checksum EIP-55 dan peringatkan pada alamat semua huruf kecil. Untuk Solana, validasi set karakter Base58 dan panjang.
Untuk Pengguna Biasa¶
Bookmark alat validator dan gunakan setiap kali. Tidak ada transaksi yang terlalu kecil atau terlalu rutin sehingga tidak layak mendapat pemeriksaan validasi. Beberapa detik yang diperlukan tidak ada apa-apanya dibandingkan kerugian permanen dari bahkan satu transaksi yang salah kirim.
Validasi alamat tidak glamor. Bukan fitur yang membuat berita utama atau mendorong adopsi. Tetapi ini adalah satu hal paling praktis yang bisa Anda lakukan untuk melindungi kripto Anda. Setiap alamat, setiap kali --- tanpa pengecualian.