Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Dipublikasikan: 11 Desember 2025
Terakhir diperbarui: 11 Desember 2025
Raymond Kelvin Nando — Base58Check merupakan varian dari Base58 yang menambahkan mekanisme checksum kriptografis untuk memastikan integritas data selama proses penulisan, transmisi, atau pemindaian. Base58Check digunakan secara luas di ekosistem Bitcoin dan berbagai blockchain lain untuk mengenkode alamat publik, kunci pribadi, extended keys (BIP32), dan berbagai jenis payload yang membutuhkan pemeriksaan kesalahan otomatis. Kombinasi antara encoding yang ringkas, mudah dibaca manusia, dan verifikasi checksum membuat Base58Check menjadi salah satu metode encoding paling berpengaruh dalam industri kripto global.
Daftar Isi
Base58Check adalah metode encoding yang menggabungkan dua konsep utama:
Fungsi utamanya adalah memastikan bahwa data yang dienkode (misalnya alamat Bitcoin) tidak hanya mudah digunakan oleh manusia, tetapi juga aman terhadap salah ketik. Jika satu huruf pada string Base58Check salah, checksum akan gagal, dan sistem otomatis menolak data tersebut.
Base58Check terdiri dari:
Checksum itulah yang membedakan Base58Check dari Base58 biasa.
Base58Check berasal dari desain awal Bitcoin yang dibuat oleh Satoshi Nakamoto pada tahun 2008–2009. Pada masa itu, kebutuhan utama adalah membuat format alamat yang:
Sebelum Base58Check, encoding umum seperti Base64 dianggap terlalu rawan karena adanya simbol +, /, serta tanda = untuk padding yang sering menimbulkan masalah pada URL dan antarmuka teks. Dengan Base58Check, Satoshi menciptakan format yang aman, efisien, dan mudah digunakan untuk identitas keuangan digital.
Setelah Bitcoin, banyak proyek lain seperti Litecoin, Dogecoin, Zcash, DASH, dan beberapa protokol DLT mengadopsi Base58Check untuk alamat dan kunci mereka. Menjadi encoding de facto untuk sistem blockchain generasi awal, Base58Check sekarang dianggap salah satu inovasi penting dalam usability kriptografi publik.
Set karakter Base58 yang digunakan sama seperti Base58 biasa:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Karakter 0, O, I, dan l dihilangkan untuk menghindari kebingungan.
Sebelum encoding, data disusun dalam format:
version (1 byte) + payload + checksum (4 byte)
Contoh umum:
Checksum Base58Check dihitung sebagai:
checksum = SHA256(SHA256(version + payload))
Ambil 4 byte pertama hasil hash tersebut.
Double-SHA256 memberikan tingkat keamanan integritas tinggi terhadap modifikasi tidak sengaja.
Jika terdapat byte 0x00 di awal data, encoding Base58Check mewakilinya sebagai karakter ‘1’.
Ini menghasilkan alamat Bitcoin yang umumnya dimulai dengan “1”.
Contoh:
versi 0x00 + payload = awal “1” pada output Base58Check.
Setelah seluruh data (termasuk checksum) digabung, hasilnya diperlakukan sebagai bilangan besar yang dikonversi ke dalam basis 58 melalui pembagian berulang.
Proses decode:
Tidak seperti Base64, Base58Check tidak memakai karakter “=”.
Checksum bukanlah enkripsi atau proteksi dari serangan jahat; hanya deteksi error.
Keamanan kriptografis datang dari kunci publik/privat, bukan encoding.
Input:
version: 00
payload: hash160(pubkey)
Contoh payload (representatif):
62E907B15CBF27D5425399EBF6F0FB50EBB88F18
Checksum: hasil SHA256 ganda (ambil 4 byte).
Output Base58Check:
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
Contoh ini adalah alamat Bitcoin pertama yang pernah dibuat.
Input:
version: 80
payload: private key 32-byte
Jika memakai compression flag, tambahkan 0x01 sebelum hashing.
Checksum dihitung dan digabungkan.
Output contoh pola:
5HueCGU8rMjxEXxiPuD…
(Polanya khas Base58Check)
Version = 0x05
Payload = hash160(script)
Output Base58Check dimulai dengan angka ‘3’.
Contoh:
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
Prefix 4-byte = 0x0488B21E
Payload = berbagai field (depth, parent fingerprint, child index, chain code, key)
Checksum 4-byte
Output contoh:
xpub661MyMwAqRbcF…
Input Base58Check:
1BoatSLRHtKNngkdXEeobR76b53LETtpyT
Decode → data biner
Pisahkan: version + payload + checksum
Hitung kembali checksum → harus cocok
Jika tidak cocok, output dianggap invalid.
Data yang dimulai dengan byte 00 → string dengan awalan ‘1’.
00 00 AB C3 → “11Kq…”
bytes: 01 02 03 04
Data + checksum → Base58Check:
7bWpC (contoh pola)
Kelebihan:
Kekurangan: