Latar Belakang:Agan pastinya sering menggunakan alamat bitcoin untuk melakukan transaksi, nah thread ini bertujuan untuk menjelaskan bagaimana mekanisme dompet-dompet bitcoin dalam menghasilkan alamat tersebut dari awal. Agan bahkan dapat membuat private key sendiri dari sebuah uang logam! (+pensil dan kertas)
Peringatan:- Ane bukan bitcoin expert, thread ini dibuat sebagai salah satu cara ane untuk
terpaksa mau belajar. - Cara ini hanya untuk pembelajaran saja. Jangan gunakan situs-situs "bitcoin tools" untuk merubah kode-kode apabila memang hendak menggunakan alamat-alamat tersebut untuk transaksi sungguhan.
- Jangan gunakan alamat dan private key yang tercantum pada halaman ini untuk kirim/terima bitcoin!
Peraturan:Karena thread ini adalah thread self-mod maka saya hanya akan menampilkan komentar/pertanyaan/saran/kritik yang bermakna. Thanks!
Arsip postingan yang ane hapus (mulai 19-7-2018)
https://pastebin.com/6t7E0fGv#1 Private KeyUntuk dapat membuka loker tempat penyimpanan bitcoin, agan harus memiliki informasi letak loker tersebut. Informasi inilah yang disebut dengan private key. Bitcoin memiliki 2
256 loker yang dapat digunakan untuk menyimpan bitcoin agan. Angka ini apabila didesimalkan akan menjadi sekitar 10
77. Sebagai perbandingan, jumlah pasir di bumi ini diperkirakan sekitar 7.5 x 10
18, sangat jauh lebih kecil dari jumlah alamat bitcoin yang bisa agan gunakan.
Agan dapat membuat private key dengan melakukan pelemparan uang logam sebanyak 256 kali, tulis 1 apabila muncul angka dan 0 apabila muncul gambar, misalnya:
Biner: 0011 1010 1011 1010 0100 0001 0110 0010 1100 0111 0010 0101 0001 1100 1000 1001 0001 0010 0000 0111 1011 0111 0100 0111 1000 0100 0000 0101 0101 0001 1010 0111 0001 1001 0011 1001 1011 0000 1101 1110 0000 1000 0001 1111 1000 0101 1100 0100 1110 0100 0100 1100 1111 0111 1100 0001 0011 1110 0100 0001 1101 1010 1010 0110
Lalu ubah dari format biner ke heksadesimal (gunakan kalkulator) atau menggunakan situs
https://www.rapidtables.com/convert/number/binary-to-hex.htmlHeksadesimal: 3ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6
Kedua angka di atas merupakan privkey yang jarang ditampilkan ketika agan mengakses aplikasi dompet karena umumnya sudah menggunakan format WIF (Wallet Import Format).
#2 Wallet Import Format (WIF)WIF adalah sebuah cara untuk membuat privkey lebih mudah diketik/dicopas dari atau ke dalam dompet bitcoin. Cara merubah privkey heksadesimal ke heksadesimal-WIF:
1. Tambahkan 0x80 di depan privkey.
803ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6
2. Gunakan SHA-256 hash pada privkey yang sudah ditambahkan 0x80. Agan dapat menggunakan binary hash pada situs
http://www.fileformat.info/tool/hash.htm64899055A09AAB79C7A5CA1080806FAFAFF29C987A53C27FA007F1BB0B996FDF
3. Gunakan SHA-256 hash kembali pada hasil SHA-256 hash di atas. Karena dua kali hash dilakukan, maka bitcoin disebut menggunakan SHA-256D pada inti komputasinya.
C609B82487C458EAA93FEEA16F8C6A98E0DA39CA683D6F917B6CDE2A7A5EEE18
4. Ambil 4 byte (8 karakter) pada hasil di atas sebagai checksum.
C609B824
5. Tambahkan checksum di akhir hasil nomor satu.
803ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6C609B824
6. Ubah menjadi format base58. Agan dapat menggunakan situs
http://lenschulwitz.com/base585JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K
Hasil ini sudah bisa diimport ke aplikasi dompet bitcoin.
#3 Public KeyPrivkey dan Pubkey adalah pasangan kunci yang merupakan pondasi dari keamanan komputer. Pubkey diturunkan dari Privkey. Pubkey digunakan untuk menerima bitcoin (diibaratkan seperti kotak surat) dan privkey digunakan untuk menandai kepemilikan dan isi di dalam kotak surat tersebut (diibaratkan seperti kunci kotak surat).
Untuk menurunkan pubkey dari privkey, bitcoin menggunakan kurva eliptik dan konstanta-konstanta matematis dengan standar
secp256k1. Sayangnya ane belum menemukan online tools yang berguna hanya untuk menurunkan privkey menggunakan secp256k1. Setelah ane "hitung," berikut ini adalah pubkey-nya:
045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176
#4 Bitcoin (Public) AddressSebelumnya disebutkan bahwa pubkey digunakan untuk menerima bitcoin (diibaratkan seperti kotak surat), maka alamat bitcoin merupakan hasil "turunan" dari pubkey. Cara merubah pubkey ke alamat bitcoin:
1. Gunakan SHA-256 pada pubkey.
38FDDB9986CFF3B5CDC46FAD15F540091A22CA649750B55CB1A2094930BCC687
2. Gunakan RIPEMD-160 pada hasil SHA-256.
09C6E71118D8F12BEC6B5C61884B35677C0A0AE3
3. Tambahkan versi di depan hasil RIPEMD-160 (0x00 untuk mainnet)
0009C6E71118D8F12BEC6B5C61884B35677C0A0AE3
4. Gunakan SHA-256 kembali pada hasil RIPEMD-160 setelah ditambahkan versi.
6143CD81DE6C3F3C5C3B301AB6B5AF5377AEBCA14885D3364378E501B5F44E88
5. Gunakan SHA-256 sekali lagi (SHA-256D)
2A021F87FA371AE2A63DD44112BF3175039E9A96613734309CA87FDA7862A301
6. Ambil 4 byte (8 karakter) pada hasil di atas sebagai checksum.
2A021F87
7. Tambahkan checksum di akhir hasil nomor tiga.
0009C6E71118D8F12BEC6B5C61884B35677C0A0AE32A021F87
8. Ubah menjadi format base58.
1thMirt546nngXqyPEz532S8fLwbozud8
#5 TambahanPrivkey WIF dan Alamat publik bitcoin hasil di atas merupakan versi tidak dikompres. Kompresi digunakan untuk membuat lebih irit penggunaan ruang hdd pada node-node bitcoin. Sebenarnya kompresi hanya "berlaku" pada alamat publik, bukan privkey karena "kompresi" pada privkey malah menambah panjang privkey sebesar satu byte.
Untuk melakukan "kompresi" privkey cukup menambahkan "01" pada akhir privkey
803ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6C609B82401
Lakukan langkah yang sama seperti
#2 untuk mengubah data di atas menjadi format WIF base58.
KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S
Untuk melakukan kompresi pubkey menggunakan format (04 x y) = 02 x (apabila y genap) atau 03 x (apabila y ganjil)
045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176
04
x = 5C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC
y = 243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176
Karena y genap, maka:
025C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC
Lakukan langkah yang sama seperti
#4 untuk mendapatkan alamat publik base58.
14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3
Apabila semua perhitungan benar, agan dapat menggunakan
https://walletgenerator.net/ (diubah karena ada celah keamanan) https://www.bitaddress.org/ untuk mencocokkan semua informasi perhitungan:
Program yang digunakan:https://www.rapidtables.com/convert/number/binary-to-hex.htmlhttp://www.fileformat.info/tool/hash.htmhttp://lenschulwitz.com/base58https://walletgenerator.net/ (diubah karena ada celah keamanan) https://www.bitaddress.org/ -> Wallet Details
Referensi:https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch04.asciidochttps://en.bitcoin.it/wiki/Wallet_import_formathttps://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addressesUpdateBIP-39: Frasa Mnemonic
https://bitcointalksearch.org/topic/m.41403564BIP-32/44: Dompet Hierarki Deterministik
https://bitcointalksearch.org/topic/m.43552511SegWit: P2SH-P2WPKH & Bech32-P2WPKH
https://bitcointalksearch.org/topic/m.44398942Q&A1. Apabila privkey/pubkey hilang >
https://bitcointalksearch.org/topic/m.399503792. Tentang hack BTC >
https://bitcointalksearch.org/topic/m.401102063. Tentang bruteforce BTC >
https://bitcointalksearch.org/topic/m.401953974. Penjelasan biner, heksadesimal, desimal >
https://bitcointalksearch.org/topic/m.403514355. Pasangan privkey-pubkey untuk sign-verify pesan >
https://bitcointalksearch.org/topic/m.410317726. Menyimpan privkey dengan cara mencetak QR Code >
https://bitcointalksearch.org/topic/m.419622277. Membuat alamat P2SH dari P2PKH ? >
https://bitcointalksearch.org/topic/m.423242778. P2SH script >
https://bitcointalksearch.org/topic/m.427302079. Dompet 2FA electrum tidak bisa untuk sign message >
https://bitcointalksearch.org/topic/m.43326525