Pembuatan Dompet Solana: Kunci ed25519 dan Alamat
Daftar Isi
Solana adalah salah satu blockchain yang paling banyak digunakan untuk DeFi dan aplikasi konsumen, tetapi proses pembuatan dompetnya berbeda secara signifikan dari Bitcoin dan Ethereum. Kurva eliptik berbeda, derivation path berbeda, encoding alamat berbeda, dan asumsi tentang manajemen kunci berbeda. Jika Anda berasal dari dunia Bitcoin atau Ethereum, perbedaan ini penting --- dan salah memahaminya dapat menyebabkan kehilangan dana atau keamanan yang terkompromi.
Panduan ini mencakup seluruh proses pembuatan dompet Solana: kurva eliptik ed25519, derivation path spesifik Solana, encoding alamat Base58, dan pertimbangan keamanan yang unik untuk ekosistem Solana.
Bagaimana Solana Berbeda dari Bitcoin dan Ethereum¶
Pada level tertinggi, perbedaannya adalah kurva eliptik. Bitcoin dan Ethereum keduanya menggunakan secp256k1, kurva dari Standards for Efficient Cryptography Group (SECG). Solana menggunakan ed25519, kurva bentuk Edwards yang dirancang oleh Daniel J. Bernstein dan rekan. Pilihan kurva berpengaruh ke setiap lapisan stack.
| Properti | Bitcoin / Ethereum | Solana |
|---|---|---|
| Kurva eliptik | secp256k1 | ed25519 |
| Skema tanda tangan | ECDSA | EdDSA (Ed25519) |
| Ukuran private key | 32 byte | 64 byte (diperluas) |
| Ukuran public key | 33 byte (terkompresi) | 32 byte |
| Encoding alamat | Bech32 / Hex | Base58 |
| Derivation path | m/44'/0'/0' atau m/44'/60'/0'/0 | m/44'/501'/0'/0' |
Pilihan desain Solana mencerminkan prioritasnya: throughput tinggi dan verifikasi tanda tangan cepat. Tanda tangan Ed25519 kira-kira dua kali lebih cepat diverifikasi daripada tanda tangan ECDSA pada secp256k1, yang penting saat memproses ribuan transaksi per detik. Untuk perbandingan teknis lebih dalam tentang dua kurva tersebut, lihat secp256k1 vs ed25519.
Kurva ed25519¶
Ed25519 adalah instance spesifik dari Edwards-curve Digital Signature Algorithm (EdDSA), beroperasi pada Curve25519. Kurva didefinisikan pada field prima 2^255 - 19 (karenanya namanya) dan menggunakan bentuk Edwards terpuntir:
-x^2 + y^2 = 1 + d*x^2*y^2
di mana d adalah konstanta tertentu. Level keamanan sekitar 128 bit --- sebanding dengan secp256k1 --- tetapi karakteristik implementasi berbeda secara signifikan.
Pembuatan Kunci¶
Private key Solana dimulai sebagai skalar acak 32 byte, sering disebut "seed" dalam terminologi ed25519 (jangan bingung dengan seed phrase BIP39). Nilai 32 byte ini di-hash dengan SHA-512 untuk menghasilkan kunci yang diperluas 64 byte. 32 byte bawah (setelah bit clamping) menjadi skalar yang digunakan untuk penandatanganan. 32 byte atas digunakan sebagai keacakan tambahan dalam proses tanda tangan.
Public key diturunkan dengan mengalikan titik basis B kurva dengan skalar yang sudah di-clamp. Hasilnya adalah titik 32 byte dalam bentuk Edwards terkompresi. Public key 32 byte ini juga merupakan alamat Solana --- tidak ada langkah hashing tambahan seperti Keccak-256 Ethereum.
32 byte acak → SHA-512 → Kunci diperluas 64 byte
→ 32 byte bawah (di-clamp) × Titik basis B → Public key 32 byte = Alamat Solana
Tanda Tangan Deterministik¶
Salah satu keunggulan ed25519 dibanding ECDSA adalah tanda tangan yang deterministik. ECDSA memerlukan nonce acak untuk setiap tanda tangan, dan generator angka acak yang cacat dapat membocorkan private key secara fatal (ini telah terjadi beberapa kali dalam sejarah Bitcoin dan Ethereum). Ed25519 menurunkan nonce dari pesan dan private key, mengeliminasi seluruh kelas kerentanan ini.
Performa¶
Verifikasi tanda tangan Ed25519 cepat --- sekitar 70.000 verifikasi per detik pada satu core CPU modern. Ini kira-kira dua kali kecepatan verifikasi ECDSA pada secp256k1. Untuk arsitektur Solana yang menargetkan waktu blok 400 milidetik dan throughput transaksi tinggi, keunggulan kecepatan ini signifikan.
Derivation Path Solana¶
Seperti Bitcoin dan Ethereum, dompet Solana menggunakan derivasi HD wallet untuk menghasilkan banyak kunci dari satu seed phrase. Standarnya tetap BIP39 untuk pembuatan mnemonic dan BIP32 untuk derivasi hierarkis, tetapi dengan path khusus Solana.
Path Standar: m/44'/501'/0'/0'¶
Derivation path kanonik Solana adalah:
m/44'/501'/0'/0'
Menguraikan menurut BIP44:
44'--- Tujuan: hierarki multi-akun BIP44.501'--- Tipe koin: 501 adalah indeks terdaftar SLIP44 untuk Solana.0'--- Akun: akun pertama.0'--- Level "change", tetapi dalam konvensi Solana ini adalah indeks alamat.
Perhatikan bahwa keempat level menggunakan derivasi hardened (ditandai apostrof). Ini berbeda dari m/44'/60'/0'/0/0 Ethereum yang menggunakan derivasi non-hardened untuk dua level terakhir. Pilihan Solana untuk path all-hardened memberikan isolasi lebih kuat antar kunci turunan: mengompromikan satu kunci turunan tidak dapat menyebabkan kompromi kunci saudara.
Banyak Akun¶
Untuk akun tambahan, naikkan indeks akun:
- Akun pertama:
m/44'/501'/0'/0' - Akun kedua:
m/44'/501'/1'/0' - Akun ketiga:
m/44'/501'/2'/0'
Beberapa dompet (seperti Phantom) juga mendukung penambahan indeks terakhir:
m/44'/501'/0'/0'm/44'/501'/0'/1'm/44'/501'/0'/2'
Pertimbangan Kompatibilitas¶
Tidak semua dompet Solana menggunakan derivation path yang persis sama. Secara historis, Solana CLI menggunakan m/44'/501' (hanya dua level), sementara kebanyakan dompet GUI menggunakan m/44'/501'/0'/0'. Perbedaan ini berarti seed phrase yang sama dapat menghasilkan alamat berbeda di dompet berbeda. Saat memulihkan dompet, selalu konfirmasi derivation path mana yang diharapkan dompet.
Solana Seed Phrase Generator SafeSeed menampilkan derivation path yang tepat yang digunakan, sehingga Anda tahu persis path mana yang dipetakan ke alamat mana.
Pembuatan Dompet Langkah Demi Langkah¶
Berikut proses lengkap untuk membuat dompet Solana dari seed phrase BIP39, dipecah menjadi langkah-langkah diskrit.
Langkah 1: Hasilkan Entropy¶
Gunakan generator angka acak yang aman secara kriptografis untuk menghasilkan 128 bit (untuk frasa 12 kata) atau 256 bit (untuk frasa 24 kata) entropy. Di SafeSeed, ini menggunakan Web Crypto API browser melalui crypto.getRandomValues().
Langkah 2: Buat Mnemonic¶
Tambahkan bit checksum SHA-256 ke entropy, bagi menjadi segmen 11 bit, dan petakan setiap segmen ke kata dalam daftar kata BIP39. Hasilnya adalah 12 atau 24 kata bahasa Inggris. Proses ini identik dengan Bitcoin dan Ethereum --- BIP39 agnostik terhadap blockchain. Untuk penjelasan lengkap, lihat BIP39 Dijelaskan.
Langkah 3: Turunkan Master Seed¶
Terapkan PBKDF2-HMAC-SHA512 dengan 2.048 iterasi pada string mnemonic (dengan salt passphrase opsional), menghasilkan master seed 512 bit.
Langkah 4: Turunkan Kunci Solana¶
Telusuri derivation path m/44'/501'/0'/0', lakukan derivasi child key HMAC-SHA512 di setiap level. Karena Solana menggunakan ed25519 bukan secp256k1, derivasi child key menggunakan standar SLIP-0010 (bukan BIP32 langsung), yang menentukan cara menurunkan kunci ed25519 secara hierarkis.
Output di akhir path adalah seed ed25519 32 byte.
Langkah 5: Hasilkan Keypair¶
Masukkan seed 32 byte ke pembuatan kunci ed25519:
- Hitung SHA-512 dari seed untuk mendapatkan 64 byte.
- Terapkan bit clamping pada 32 byte bawah (hapus 3 bit terendah, hapus bit tertinggi, set bit tertinggi kedua).
- Kalikan titik basis B dengan skalar yang sudah di-clamp untuk mendapatkan public key 32 byte.
Keypair terdiri dari private key yang diperluas 64 byte (seed + public key) dan public key 32 byte.
Langkah 6: Encode Alamat¶
Public key 32 byte diencode menggunakan Base58 untuk menghasilkan alamat Solana yang dapat dibaca manusia. Tidak ada hashing tambahan, tidak ada byte prefix --- hanya encoding Base58 mentah dari byte public key.
Anda dapat menghasilkan dan memeriksa seluruh alur ini menggunakan Solana Private Key Generator SafeSeed, yang menampilkan seed phrase, derivation path, private key, public key, dan alamat akhir.
Format Alamat Base58¶
Alamat Solana menggunakan encoding Base58 --- alfabet Base58 yang sama yang digunakan alamat legacy Bitcoin, yang mengecualikan karakter yang membingungkan secara visual: 0 (nol), O (huruf O besar), I (huruf I besar), dan l (huruf L kecil).
Alamat Solana tipikal terlihat seperti:
7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV
Properti¶
- Panjang: 32--44 karakter (paling umum 43--44). Panjang bervariasi karena encoding Base58 tidak memiliki lebar tetap; byte nol di depan menghasilkan karakter
1di depan. - Set karakter:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz - Tanpa prefix: Berbeda dengan Bitcoin (dimulai dengan
1,3, ataubc1) atau Ethereum (dimulai dengan0x), alamat Solana tidak memiliki prefix tetap. Ini membuat identifikasi visual lebih sulit tetapi menjaga alamat tetap pendek. - Tanpa checksum tertanam: Berbeda dengan Base58Check (digunakan alamat legacy Bitcoin), encoding Base58 Solana tidak menyertakan checksum. Kesalahan transkripsi bisa menghasilkan alamat yang terlihat valid tetapi milik orang lain atau bukan milik siapapun.
Ketiadaan checksum membuat penanganan hati-hati sangat penting. Selalu gunakan copy-paste daripada transkripsi manual. Jika memungkinkan, gunakan kode QR. Dan validasi format alamat menggunakan Solana Address Validator sebelum mengirim dana apapun. Untuk perbandingan lebih luas tentang format alamat lintas blockchain, lihat Format Alamat Kripto Dijelaskan.
Pertimbangan Keamanan untuk Solana¶
Prinsip umum keamanan kunci berlaku untuk Solana sama seperti blockchain lainnya, tetapi beberapa faktor khusus Solana layak diperhatikan.
Pembuatan Offline Sangat Penting¶
Karena alamat Solana tidak memiliki checksum tertanam, kesalahan selama pembuatan lebih sulit dideteksi. Membuat dompet secara offline --- di mesin tanpa koneksi jaringan --- mengeliminasi risiko eksfiltrasi dan memberi Anda lingkungan terkontrol untuk memverifikasi output dengan cermat. Alat SafeSeed dirancang untuk ini: muat halaman, putuskan koneksi, buat, dan catat. Untuk prinsip umum pembuatan offline, lihat Apakah Generator Seed Online Aman?.
File Keypair¶
Solana CLI menyimpan private key sebagai array JSON 64 byte (keypair ed25519) dalam file biasanya bernama id.json. Jika Anda mengekspor dompet dari GUI dan mengimpornya ke CLI (atau sebaliknya), Anda mungkin menemui format ini. Lindungi file keypair dengan ketelitian yang sama seperti seed phrase: enkripsi, simpan di media air-gapped, dan jangan pernah tinggalkan di mesin yang terhubung jaringan.
Akun Token¶
Berbeda dengan Ethereum di mana token ERC-20 disimpan di alamat yang sama dengan ETH, Solana menggunakan associated token account (ATA) --- akun on-chain terpisah untuk setiap jenis token. Ini adalah detail implementasi, bukan masalah keamanan kunci, tetapi berarti alamat Solana Anda saja tidak menceritakan seluruh kisah kepemilikan Anda. Semua ATA yang diturunkan dari alamat dompet tertentu dikendalikan oleh private key yang sama, jadi cadangan seed phrase Anda tetap memadai.
Program Derived Address (PDA)¶
Model pemrograman Solana menggunakan Program Derived Address --- alamat yang dihasilkan secara deterministik dari program ID dan sekumpulan seed, dan sengaja tidak memiliki private key yang sesuai. PDA digunakan oleh smart contract (program) untuk mengelola state on-chain. Anda tidak perlu membuat atau mencadangkan PDA; mereka bukan dompet yang dikendalikan pengguna.
Durable Nonce dan Penandatanganan Transaksi¶
Transaksi Solana menyertakan blockhash terbaru untuk perlindungan replay, yang berarti transaksi kedaluwarsa setelah sekitar 60--90 detik. Ini relevan untuk alur kerja penandatanganan offline: Anda perlu mengambil blockhash terbaru (atau menggunakan durable nonce) di mesin online, mentransfernya ke mesin offline untuk ditandatangani, kemudian menyiarkan transaksi yang sudah ditandatangani sebelum blockhash kedaluwarsa. Hardware wallet menangani ini secara otomatis, tetapi jika Anda membangun pipeline penandatanganan offline kustom, batasan waktu adalah pertimbangan desain penting.
Praktik Terbaik Keamanan Private Key¶
Fundamental tetap sama terlepas dari chain: jangan pernah bagikan seed phrase, jangan pernah simpan secara digital di perangkat yang terhubung jaringan, dan gunakan cold storage untuk kepemilikan signifikan. Untuk pembahasan komprehensif, lihat Praktik Terbaik Keamanan Private Key.
Proses pembuatan dompet Solana secara konseptual mirip dengan Bitcoin dan Ethereum --- entropy menjadi seed phrase, seed phrase menjadi master key, dan derivation path menghasilkan akun individual. Tetapi kurva yang mendasari (ed25519), standar derivasi (SLIP-0010), dan format alamat (Base58 mentah tanpa checksum) menciptakan rangkaian detail implementasi yang berbeda yang penting untuk interoperabilitas, pemulihan, dan keamanan. Memahami perbedaan ini bukan akademis; ini adalah fondasi melindungi kepemilikan Solana Anda.