Pages:
Author

Topic: [Edukasi] Dari Private Key Sampai Ke Bitcoin Address (Untuk Pemula) - page 3. (Read 25312 times)

copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
<...>
Ya bisa dikatakan begitu. Ane sih tidak begitu suka ya dengan ibarat-ibarat... Kebetulan post history agan lumayan, tidak banyak shitposting. Coba ikut challenge ini https://bitcointalksearch.org/topic/m.45366624


Gan private key itu semacam apa sih Kalo boleh tau,
Ane belum sampe ke situ.
Cari di sini: https://www.google.com/search?q=apa+itu+private+key+bitcoin
Komeng agan ane hapus soalnya post history agan isinya shitpost (sampah).
newbie
Activity: 26
Merit: 1
kalo saya ibaratkan biar saya mudah nangkapnya gan, public key itu semacam alamat rumahnya, sedangkan privat key itu semacam kuncu pintu rumahnya. alamat rumah boleh diketahui oleh banyak orang, tetapi kalo kunci rumahnya yang tau ya cuma pemilik rumah. begitukah gan,?
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
== END ==
BIP-141/173: Segregated Witness (SegWit)

BIP-141 menjelaskan lapisan konsensus SegWit
BIP-173 menjelaskan format alamat Bech32

Prolog
Artikel ini merupakan artikel terakhir ane yang membahas alamat-alamat bitcoin. Sampai episode ini, mari kita renungkan kembali apa-apa saja yang sudah dibahas:

1. Format alamat
Pay to Public Key Hash (P2PKH) >> https://bitcointalksearch.org/topic/m.39933979
Pay to Script Hash (P2SH) >> https://bitcointalksearch.org/topic/m.42730207 (bonus sebenarnya tidak ingin ane bahas karena script & multisig sudah tidak sesuai dengan kata "untuk pemula" pada judul thread ini)

2. Mekanisme pembuatan privkey-pubkey
Random (nondeterministik) >> https://bitcointalksearch.org/topic/m.39933979
Deterministik >> https://bitcointalksearch.org/topic/m.41403564 & https://bitcointalksearch.org/topic/m.43552511

Pada artikel terakhir ini kita akan membahas update terbaru (sebenarnya sudah diimplementasikan tahun lalu), yaitu Segregated Witness (SegWit).

Latar Belakang SegWit
Bitcoin memiliki kapasitas blok hanya 1MB yang seringkali penuh pada pertengahan 2017. Terdapat dua cara untuk memperbaiki blok yang penuh ini, yaitu dengan (1) menambah kapasitas blok atau (2) membuat transaksi di dalam blok lebih efisien. Singkat cerita Bitcoin Cash (BCH) memilih menggunakan opsi 1 dan Bitcoin (BTC) memilih opsi 2.

Data transaksi di dalam blok berupa input, signature, dan output. Signature ini ternyata mengambil ruang data yang paling besar di antara data-data lainnya. Sehingga signature kemudian dipisahkan dari blok utama dan ditempatkan pada blok "tambahan." Akibatnya blok utama yang sebesar 1MB tersebut dapat menyimpan transaksi yang jauh lebih besar dari sebelumnya.

Seperti biasa artikel ini berfokus pada pembuatan alamat-alamat tersebut (bukan teorinya karena banyak di internet).

Format Alamat SegWit Pay to Witness Public Key Hash (P2WPKH): P2SH-P2WPKH, Bech32-P2WPKH
Alamat Segwit bitcoin selalu diawali dengan string "3" atau "bc1" yang menandakan format yang digunakan apakah P2SH ataukah Bech32. Bech32 sendiri hanyalah format yang mempermudah agar alamat bitcoin dapat dibaca dan ditulis oleh manusia.

Perhatikan alamat ini:
P2SH-P2WPKH: 3Aj3og72RnL8MMRwKFDKJNdrnZ4SPgYQD7
Bech32-P2WPKH: bc1qy76cjxcpmgkmwnx7z6y6j732e03r6ha3wqfasl
Kedua alamat di atas memiliki private key yang sama, hanya beda di encodingnya saja, menurut ane yang lebih enak dibaca memang yang Bech32 karena tidak ada huruf kapital.

#1 P2SH-P2WPKH
Alamat ini adalah alamat SegWit P2WPKH yang "dibungkus" dalam format P2SH. Alamat ini memakai public key hash yang mirip dengan penjelasan P2PKH yang digabungkan dengan P2SH (link pada prolog). Menggunakan pubkey yang dikompres pada pembahasan sebelumnya yaitu "025C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC" kita dapat membuat alamat SegWit P2SH-P2WPKH dengan cara:

1. HASH-160 (SHA-256 yang diikuti dengan RIPEMD-160) dari pubkey
SHA-256:
Code:
cf7262820b1bdc3e6401e082d0390346afc00ceba0baa37a90133950bc120424
RIPEMD-160:
Code:
27b5891b01da2db74cde1689a97a2acbe23d5fb1

2. Tambahkan kode 0x0014 yang menandakan P2WPKH
Code:
001427b5891b01da2db74cde1689a97a2acbe23d5fb1
Perhatikan bahwa pubkey hash kemudian diperlakukan seperti script hash pada langkah-langkah berikutnya.

3. HASH-160 dari script hash no 2
SHA-256:
Code:
861b2e6d0ab3548edd1334c3af000adf3d681890692de425e1c33b31e443133a
RIPEMD-160:
Code:
631b88dde960d66d7fa7ea2a3c1c084297143ba0

4. Tambahkan versi 0x05 (P2SH)
Code:
05631b88dde960d66d7fa7ea2a3c1c084297143ba0

5. Gunakan SHA-256 dua kali (SHA256D)
Code:
6bbc36c229c3ebbfa10f18dc33a9eb73f09fc479d8022f5d048b317df42bd171

6. Ambil 4 byte sebagai checksum dan tambahkan di akhir hasil nomor 4
Code:
05631b88dde960d66d7fa7ea2a3c1c084297143ba06bbc36c2

7. Ubah ke Base58
Code:
3Aj3og72RnL8MMRwKFDKJNdrnZ4SPgYQD7

#2 Bech32-P2WPKH
Alamat ini adalah alamat Native SegWit P2WPKH yang "dibungkus" dalam format Bech32. Alamat ini memakai public key hash yang mirip dengan penjelasan P2PKH akan tetapi alamat "bc1" ini diencode dengan cara yang berbeda dengan alamat "3". Menggunakan HASH-160 dari pubkey yang dikompres di atas "27b5891b01da2db74cde1689a97a2acbe23d5fb1" kita dapat membuat alamat Native SegWit Bech32 dengan menggunakan berbagai library (ane pakai library PHP). Fungsi dalam library tersebut membutuhkan 3 buah input, yaitu:
- Human-readable part (hrp): string "bc" untuk mainnet dan "tb" untuk testnet.
- Version: versi 0 untuk P2WPKH
- Data: adalah script hash atau pubkey hash

Code:
use function BitWasp\Bech32\encodeSegwit;

$hrp "bc";
$version 0;
$data pack("H*" "27b5891b01da2db74cde1689a97a2acbe23d5fb1");

$result encodeSegwit($hrp$version$data); 
echo 
$result;
?>

Hasilnya:
Code:
bc1qy76cjxcpmgkmwnx7z6y6j732e03r6ha3wqfasl


Bonus:
Terkait P2SH-P2WPKH apakah "001427b5891b01da2db74cde1689a97a2acbe23d5fb1" merupakan script yang valid karena kita tahu bahwa kode tsb adalah pubkey hash yang hanya ditambahkan 0x0014? Mari kita coba dengan perintah decodescript pada bitcoin core.

Code:
decodescript 001427b5891b01da2db74cde1689a97a2acbe23d5fb1

Hasilnya:
Code:
{
"result": {
"asm": "0 27b5891b01da2db74cde1689a97a2acbe23d5fb1",
"reqSigs": 1,
"type": "witness_v0_keyhash",
"addresses": [
"bc1qy76cjxcpmgkmwnx7z6y6j732e03r6ha3wqfasl"
],
"p2sh": "3Aj3og72RnL8MMRwKFDKJNdrnZ4SPgYQD7"
},
"error": null,
"id": null
}

Yak, ternyata valid dan semua alamat juga valid Smiley

Referensi:
https://en.bitcoin.it/wiki/Segregated_Witness
https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki

Library:
https://github.com/Bit-Wasp/bech32

Penutup
Ane kira edukasi untuk newbie cukup sampai di sini. Kalau lebih dari ini ane juga tidak mampu Grin
Thread ini tetap ane buka kalau-kalau ada newbie yang bertanya, entah bulan depan atau tahun depan atau 10 tahun ke depan. Ane yakin akan ada pertanyaan dari newbie yang stuck dan kepentok nyasar ke thread ini. Sekian dan terima kasih.
member
Activity: 135
Merit: 41
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 Key

Untuk dapat membuka loker tempat penyimpanan bitcoin, agan harus memiliki informasi letak loker tersebut. Informasi inilah yang disebut dengan private key. Bitcoin memiliki 2256 loker yang dapat digunakan untuk menyimpan bitcoin agan. Angka ini apabila didesimalkan akan menjadi sekitar 1077. Sebagai perbandingan, jumlah pasir di bumi ini diperkirakan sekitar 7.5 x 1018, 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:

Code:
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.html

Code:
Heksadesimal: 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.
Code:
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.htm
Code:
64899055A09AAB79C7A5CA1080806FAFAFF29C987A53C27FA007F1BB0B996FDF

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.
Code:
C609B82487C458EAA93FEEA16F8C6A98E0DA39CA683D6F917B6CDE2A7A5EEE18

4. Ambil 4 byte (8 karakter) pada hasil di atas sebagai checksum.
Code:
C609B824

5. Tambahkan checksum di akhir hasil nomor satu.
Code:
803ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6C609B824

6. Ubah menjadi format base58. Agan dapat menggunakan situs http://lenschulwitz.com/base58
Code:
5JG9hT3beGTJuUAmCQEmNaxAuMacCTfXuw1R3FCXig23RQHMr4K

Hasil ini sudah bisa diimport ke aplikasi dompet bitcoin.


#3 Public Key

Privkey 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:
Code:
045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176


#4 Bitcoin (Public) Address

Sebelumnya 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.
Code:
38FDDB9986CFF3B5CDC46FAD15F540091A22CA649750B55CB1A2094930BCC687

2. Gunakan RIPEMD-160 pada hasil SHA-256.
Code:
09C6E71118D8F12BEC6B5C61884B35677C0A0AE3

3. Tambahkan versi di depan hasil RIPEMD-160 (0x00 untuk mainnet)
Code:
0009C6E71118D8F12BEC6B5C61884B35677C0A0AE3

4. Gunakan SHA-256 kembali pada hasil RIPEMD-160 setelah ditambahkan versi.
Code:
6143CD81DE6C3F3C5C3B301AB6B5AF5377AEBCA14885D3364378E501B5F44E88

5. Gunakan SHA-256 sekali lagi (SHA-256D)
Code:
2A021F87FA371AE2A63DD44112BF3175039E9A96613734309CA87FDA7862A301

6. Ambil 4 byte (8 karakter) pada hasil di atas sebagai checksum.
Code:
2A021F87

7. Tambahkan checksum di akhir hasil nomor tiga.
Code:
0009C6E71118D8F12BEC6B5C61884B35677C0A0AE32A021F87

8. Ubah menjadi format base58.
Code:
1thMirt546nngXqyPEz532S8fLwbozud8


#5 Tambahan

Privkey 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
Code:
803ABA4162C7251C891207B747840551A71939B0DE081F85C4E44CF7C13E41DAA6C609B82401

Lakukan langkah yang sama seperti #2 untuk mengubah data di atas menjadi format WIF base58.
Code:
KyBsPXxTuVD82av65KZkrGrWi5qLMah5SdNq6uftawDbgKa2wv6S

Untuk melakukan kompresi pubkey menggunakan format (04 x y) = 02 x (apabila y genap) atau 03 x (apabila y ganjil)
Code:
045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176
Code:
04
x = 5C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC
y = 243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176
Karena y genap, maka:
Code:
025C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC

Lakukan langkah yang sama seperti #4 untuk mendapatkan alamat publik base58.
Code:
14cxpo3MBCYYWCgF74SWTdcmxipnGUsPw3

Apabila semua perhitungan benar, agan dapat menggunakan https://walletgenerator.net/ untuk mencocokkan semua informasi perhitungan:

apa yang disebutkan semuanya disini, sebenarnya maksudnya adalah proses generate key pair.

di dalam core bitcoin, ketika agan instal pertama bitcoin core, sebenarnya proses yang dilakukan pertama kali adalah generate key pair itu. key pair apa yang dimaksud? key pair itu adalah public dan private key.

yang tidak banyak diketahui adalah, bahwa ketika generate key pair, sebenarnya core juga akan generate hingga 100 key pair turunan yang kemudian di simpan di dalam file "wallet.dat" yang berada di lokasi folder mana instalasi itu ditempatkan.

sedangkan apa yang disebut dengan scriptPubKey, scriptSig, p2SH, multisig, dll, itu adalah bagaimana proses scripting transaksi dapat dilakukan di dalam bitcoin.

mengapa demikian? karena scripting bitcoin itu bisa dilakukan dengan berbagai macam cara itu. makanya jenis transaksi bitcoin itu bermacam macam, tidak hanya transaksi standar. alasannya, di tiap-tiap penyedia wallet, mungkin akan mengambil pendekatan berbeda dalam variasi penulisan scripting transaksi yang bisa dilakukan di wallet masing-masing tersebut.
lebih jauh tentang scripting transaksi itu bisa dibaca disin:
https://www.edukasibitcoin.com/script-bitcoin-dalam-cara-kerja-bitcoin/

atau kalau ingin belajar lagi bagaimana pemprograman bitcoin, penyusunan transaksi bisa dibaca disini:
https://www.edukasibitcoin.com/pemprograman-blockchain/
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
BIP-32/44: Heirarki Deterministik (HD)

BIP-32 menjelaskan cara menurunkan kunci parent -> kunci child
BIP-44 menjelaskan hierarki untuk aplikasi dompet "standar"

Kedua proposal pengembangan ini adalah satu rangkaian standar sehingga umumnya aplikasi yang mendukung BIP-32/44 yang kemudian ditambah dengan BIP-39 (BIP-32/39/44) dapat saling support. Misalnya kunci/backup yang dibuat mycelium dapat direstore menggunakan coinomi, trezor, dll., dan sebaliknya.

Latar belakang diciptakan dompet HD
Sebelum adanya dompet HD, pengguna kesulitan untuk bisa tetap anonim. Pada waktu itu, alamat bitcoin digunakan berulang kali karena setiap alamat membutuhkan satu privkey yang harus disimpan baik-baik oleh pengguna. Pengguna yang mencoba menggunakan alamat baru setiap kali transaksi pun kesulitan dalam mengelola alamat-alamat dan privkey-privkey pada alamat-alamat tersebut. Dengan adanya dompet HD, pengguna hanya perlu membackup master (root) privkey, dan pengguna sudah dapat menggunakan seluruh alamat child yang dihasilkan dari kunci parent tersebut.

Yang dijelaskan pada pembahasan ini
Ane ingin menjelaskan bagian yang jarang dijumpai pada tutorial-tutorial, yaitu bagaimana mekanisme perhitungan dompet HD tersebut untuk dapat menghasilkan privkey dan alamat bitcoin (silahkan dicoba sendiri dan tanyakan ke sini kalau stuck) menggunakan cara se-newbie mungkin!

Dari frasa BIP-39 dapat diturunkan:

Seed:
Code:
035ac5b79ff38a1df6add5dc03ac591cc774469826be79d859e21a4db56104cc77244445e5e31d85b982b6da86c783e39f597d9cd2b7b24c7d95550dd89fa0f7

Account Extended Privkey (m/44'/0'/0'):
Code:
xprv9xgKdgeSz3mxJGWGpTU7qtgD7x8H2ooVYxxawePdt7Dga3V2m28jLqwSawCXa6xAzK1oLioN2FXWD8uik8YnA37t15SyvCkFULYcopnM1ny

#1 Menghitung BIP-39 Seed

Pada pembahasan lalu kita tahu bahwa untuk menurunkan kunci-kunci kita membutuhkan titik awal yang disebut dengan seed. Untuk dapat mendapatkan seed dari frasa mnemonic kita perlu menggunakan Password-Based Key Derivation Function 2 (PBKDF2) yang bertujuan untuk memperkuat seed dari serangan brute force.

Perhatikan snippet berikut:
Code:
$password "symptom display melt eight where universe prison vacuum convince garbage glance fork";
$iterations 2048;
$salt "mnemonic";
$hash hash_pbkdf2("sha512"$password$salt$iterations);
echo 
$hash;
?>


Hasilnya:
Code:
035ac5b79ff38a1df6add5dc03ac591cc774469826be79d859e21a4db56104cc77244445e5e31d85b982b6da86c783e39f597d9cd2b7b24c7d95550dd89fa0f7

Agan dapat menggunakan bahasa pemrograman apapun untuk melakukan komputasi pbkdf2, ane menggunakan php karena kebetulan sering utak-atik wordpress.
Code:
$salt = "mnemonic" . $passphrase;
karena ane tidak memakai passphrase maka $salt hanya berisi string "mnemonic".


#2 Menghitung Root (Master) PrivKey

Root atau master privkey ini merupakan privkey pertama yang akan kita hitung. Privkey dengan kedalaman 0 (m) ini dapat kita turunkan sampai ke kedalaman 5 (m/44'/0'/0'/0/0) atau lebih. Kedalaman inilah yang disebut dengan hierarki. Sebagai contoh pada pembahasan ini kita akan menurunkan sampai kedalaman 3 (m/44'/0'/0') atau yang disebut dengan account extended key.

Hierarki:
Code:
m / purpose' / coin_type' / account' / change / address_index
purpose': 44' atau hex 0x8000002C karena BIP-44
coin_type': 0' atau hex 0x80000000 karena bitcoin
account': 0' atau hex 0x80000000 menandakan sebagai akun pertama
Tanda petik ' merupakan tanda hardened yang berarti angka 0 dimulai dari 0x80000000

Untuk menghitung master privkey, ada 3 tahap yaitu (1) HMAC-SHA512; (2) melengkapi data; (3) serialisasi
(1) HMAC-SHA512
Code:
$hashdata pack("H*" $hash);
$chaindata "Bitcoin seed";
$hash_m hash_hmac("sha512" $hashdata$chaindata);
$hash_m_l substr($hash_m064);
$hash_m_r substr($hash_m6464);
?>
Algoritma HMAC-SHA512 menggunakan input seed dan string "Bitcoin seed" untuk membuat 512 bit output. 512 bit output ini kita bagi dua menjadi 256bit hash kiri dan 256 bit hash kanan. Hash kiri merupakan hex privkey dan hash kanan adalah chain code.

(2) Melengkapi Data
Code:
$data_m = array(
            
'network' => '0488ade4',
            
'depth' => '00',
            
'fingerprint' => '00000000',
            
'i' => '00000000',
            
'chain_code' => $hash_m_r,
            
'key' => '00'.$hash_m_l,
          );
?>
Network "0488ade4" yang merupakan bitcoin private mainnet, depth "00" yang berarti kedalaman level 0 (pertama), dan 'fingerprint' serta 'i' kita kosongkan dahulu.

(3) Serialisasi
Code:
$xprivkey_m implode($data_m);
$checksum_m hash('sha256'pack("H*"hash('sha256'pack("H*"$xprivkey_m))));
$checksum_m substr($checksum_m08);
$xprivkey_m $xprivkey_m $checksum_m;
$base58 = new StephenHill\Base58();
echo 
$base58->encode(pack("H*"$xprivkey_m))."
"
;
?>
Setelah semua data diserialkan, lalu dihash SHA-256 dua kali, selanjutnya checksum 4 byte ditambahkan pada akhir data serial dan diubah ke dalam base58.

Hasilnya (m):
Code:
xprv9s21ZrQH143K25iSTiafu7Nby5AtknABvMMRm2WBAdhY4AW29V7CVs1BHgvF9snNy3oaWz4h5joCk8jcMJo4tjcwa57nq6v6usHwXxRo5QM


#3 Menurunkan Child Key atau Child key derivation (CKD)

Untuk menurunkan child key dari master key caranya hampir sama seperti #2, akan tetapi kita harus menghitung 'fingerprint' dan juga
Code:
parse256(IL) + kpar (mod n)
untuk diisikan pada 'key'.

(1) HMAC-SHA512
Code:
$hashdata pack("H*""00" $hash_m_l "8000002C");
$chaindata pack("H*"$hash_m_r);
$hash_m_44 hash_hmac("sha512" $hashdata$chaindata);
$hash_m_44_l substr($hash_m_44064);
$hash_m_44_r substr($hash_m_446464);
?>
Algoritma HMAC-SHA512 menggunakan input hash kiri, 'i', dan hash kanan parent untuk membuat 512 bit output. 512 bit output ini kita bagi dua menjadi 256bit hash kiri dan 256 bit hash kanan. Hash kiri merupakan data yang akan digunakan untuk perhitungan
Code:
parse256(IL) + kpar (mod n)
dan hash kanan adalah chain code.

(2) Melengkapi data
Code:
$bitcoinECDSA->setPrivateKey($hash_m_l);
$finger_m $bitcoinECDSA->getPubKey();
$finger_m hash('ripemd160'pack("H*"hash('sha256'pack("H*"$finger_m))));
$finger_m substr($finger_m08);

$math EccFactory::getAdapter();
$g EccFactory::getSecgCurves($math)->generator256k1();
$n $g->getOrder();
$Il_dec $math->hexDec($hash_m_44_l);
$private_key_dec $math->hexDec($hash_m_l);
$key_dec $math->mod($math->add($Il_dec$private_key_dec), $n);
$keym44 str_pad(BitcoinLib::hex_encode($key_dec), 64'0'STR_PAD_LEFT);

$data_m_44 = array(
            
'network' => '0488ade4',
            
'depth' => '01',
            
'fingerprint' => $finger_m,
            
'i' => '8000002C',
            
'chain_code' => $hash_m_44_r,
            
'key' => '00'.$keym44,
        );
?>
Pertama kita hitung 'fingerprint' dengan menggunakan HASH-160 dari pubkey parent, ekstrak hanya 4 byte pertama saja. Kemudian kita tidak dapat menggunakan hash kiri saja untuk diinput ke 'key', tapi harus ditambah dengan
Code:
+ kpar (mod n)
'depth' bertambah 01 karena kedalaman level bertambah, 'i' diisi dengan 0x8000002C sebagai penanda 44'

(3) Serialisasi
Code:
$xprivkey_m_44 implode($data_m_44);
$checksum_m_44 hash('sha256'pack("H*"hash('sha256'pack("H*"$xprivkey_m_44))));
$checksum_m_44 substr($checksum_m_4408);
$xprivkey_m_44 $xprivkey_m_44 $checksum_m_44;
$base58 = new StephenHill\Base58();
echo 
$base58->encode(pack("H*"$xprivkey_m_44))."
"
;
?>

Hasilnya (m/44'):
Code:
xprv9ve7i3PwihGn2M2iPMHQqGY9CKx4NdmAe3WtwirJ2bjQUu3yKMztYR6LA9FEC77JE38R6fh8uabGM5d2JxdTJ5bZuuRzKDiLLUxeorP4LMb

Unduh Script PHP ane di https://pastebin.com/TBCexuLF untuk menghitung sampai m/44'/0'/0'
Catatan: semua contoh pada script merupakan hardened key, untuk yang non-hardened metodenya akan sedikit berbeda.
Selamat mencoba!

Referensi:
https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch05.asciidoc

Online tools:
https://iancoleman.io/bip39/
http://bip32.org/

PHP library:
https://github.com/stephen-hill/base58php/
https://github.com/BitcoinPHP/BitcoinECDSA.php
https://github.com/phpecc/phpecc
https://github.com/Bit-Wasp/bitcoin-lib-php
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
<...>
maaf kalau salah tempat nanya , butuh bantuan ini kira" kenapa ya apakah wallet ini ga bisa di sign atau gimana ? soalnya rencana mau ganti wallet buat sign karena wallet lama aksesnya hilang kalau pakai electrum ga bisa terpaksa pakai wallet lain selain electrum

Hai agan valuater, terkait error:



Agan tidak bisa sign message menggunakan dompet yang 2FA karena merupakan alamat P2SH multisig dan salah satu privkey-nya dimiliki oleh TrustedCoin.
Lebih lanjut https://bitcointalksearch.org/topic/signing-messages-with-multisig-wallet-2826914

Namun agan masih bisa menggunakan alamat legacy P2PKH untuk sign message menggunakan electrum:



Agan juga bisa menggunakan alamat segwit Bech32 untuk sign message menggunakan electrum:



Saran ane sih ganti alamat saja pakai legacy (P2PKH) atau segwit Bech32, tidak perlu ganti aplikasi dompet.



<...>

Setuju, apabila agan punya banyak bitcoin lebih baik diukir pada lempengan agar lebih aman. Namun cara ini sulit dan menyita banyak waktu dan energi.



Terkait kegunaan pubkey, sudah ane jelaskan dalam hal sign-verify message di bawah:

<...>
-Sign-
1. Bambang memiliki privkey: 9901837270847348473017285714031893363411661085679723059096297424686444821124
2. Bambang mengetik pesan "Hello World!" lalu menandatangani dengan privkey di atas, hasilnya message signature: 3045022044625be894c1dbd2208460eb14602b0bb34ca5f53ae4095f120ca1f8e6f51e090221009 7545585324baf40c00b7b2947c4a1fb59f88949036358d83cf782a135e09d86
3. Bambang mempublikasikan pubkey-nya (misalnya pada blog-nya) sehingga semua orang tahu kalau pubkey Bambang adalah 04e1411fe6cf169761dd1371583c620e0b7ec34120a6ffd6fc905a906e6764a2f5fcbdad4d3c60b b6185c832075eae4ae2accdc9de0fbfb66c7e1564ee8954875e
4. Pesan dan message signature dikirimkan ke Susi

-Verify-
1. Susi ingin melakukan verifikasi apakah pesan yang diterima benar-benar valid dari Bambang. Susi kemudian mengambil pubkey Bambang dari Blog Bambang.
2. Menggunakan suatu prosedur -teknikal kriptografi yang tidak cocok dijelaskan di topik ini- Susi menggunakan pesan "Hello World!", message signature, dan pubkey Bambang untuk melakukan verifikasi.
3. Apabila hasilnya valid, maka Susi yakin bahwa pesan "Hello World!" dikirimkan oleh orang yang memiliki akses terhadap pubkey 04e1411fe6cf169761dd1371583c620e0b7ec34120a6ffd6fc905a906e6764a2f5fcbdad4d3c60b b6185c832075eae4ae2accdc9de0fbfb66c7e1564ee8954875e, yang tidak lain adalah Bambang. Dengan demikian Susi dapat yakin pesan tersebut valid dari Bambang tanpa harus mengetahui privkey Bambang 9901837270847348473017285714031893363411661085679723059096297424686444821124

https://anders.com/blockchain/public-private-keys/signatures.html
full member
Activity: 423
Merit: 118
saya baru tau kalau private key itu sangat penting bagi bitcoiners, tetapi saya masih bingung dengan publik key, apa ya fungsi utamanya? apakah sama dengan private key juga?

Kalau setahu saya public key itu biasanya digunakan sebagai penanda bahwa transaksi yg dilakukan dari alamat tertentu. Pada artikel yg saya baca biasanya kalau kita mengirim bitcoin dan sign message biasanya ada public key di dalam message nya . Jadi intinya public key itu sebagai identitas dari pemilik address tersebut. Kalau private key ibarat kunci rumah kalau public key ibarat nomer rumah. Mungkin bisa lebih jelas disini gan https://www.edukasibitcoin.com/public-key-sebagai-identitas/
member
Activity: 322
Merit: 22
Benar gan privetkey sangat bagus di tulis ke selembar kertas jd menjaga aset atau dokumen di butuhkan catatan penting ke tempat yg aman dari dunia digital supaya tidak terjadi keraguan...demikian gan.
sebaiknya private ke disarankan untuk ditulis diatas lempengan logam (biasanya ditukang cincin bisa bikin tulisan diatas logam) itu lebih aman, karena kalo ditulis di kertas ada resiko tulisan hilang karena luntur, kena air ato yang paling parah terbakar.
contohnya kaya gini


full member
Activity: 294
Merit: 107
Menaruh privkey di PC/laptop atau perangkat lain yang terhubung ke internet sangatlah tidak dianjurkan! Cara paling tepat dalam membackup privkey adalah dengan menuliskannya pada selembar kertas, lalu disimpan di tempat yang aman.

ini yang biasa disepelekan sama kebanyakan orang gan. mereka nganggap backup di notepad dan save di folder yg aman udah cukup.
jangankan nyimpen private key di kompter yg terhubung di internet, di komputer offline pun tetap berbahaya, karena sewaktu2 komputer kita bisa saja bermasalah. kalo bermasalah, trs harus sampe install ulang (hdd non partisi) atau hdd nya bad sector, hilang sudah.
ane biasanya kalau bikin wallet baru, private key nya ane tulis tangan dan simpan di tempat dokumen2 penting barengan sama ijazah, dan hal2 penting lainnya. yang penting2 harus ditempatkan seberkas sama yang penting juga. jadi nanti gampang ingat kalo kebetulan dibutuhkan.

Iya saya sepakat seperti agan katakan banyak memang menyepelekan untuk menyimpan private key atau pun data2 yang berhungan dengan aset kita padahal itu sangat penting. Teman saya kemarin jga begitu nyimpannya di note HH, tiba2 HH blank hangus lah semua asetnya ya biarpun sedikit tapi itu mnyakitkan. Kalau saya pribadi untuk mnyimpan data2 itu di email khusus gan.
sr. member
Activity: 1162
Merit: 252

maaf kalau salah tempat nanya , butuh bantuan ini kira" kenapa ya apakah wallet ini ga bisa di sign atau gimana ? soalnya rencana mau ganti wallet buat sign karena wallet lama aksesnya hilang kalau pakai electrum ga bisa terpaksa pakai wallet lain selain electrum
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
http://archive.is/S74Oj#selection-395.1-425.98
Nice info gan. Saya baru tau ternyata kriptografi digunakan juga pada keamanan intelijen. Tapi tiba-tiba ada yang menjadi pertanyaan saya gan. Apakah memang sejak dulu keamanan intel menggunakan teknik kriptografi yang menjadi andalan bitcoin ataukah karena inovasi bitcoin akhirnya intel ikutan menggunakan kriptografi?

SHA-2 dikembangkan oleh National Security Agency (NSA) >> https://en.wikipedia.org/wiki/Secure_Hash_Algorithms

http://archive.is/o9Q5s#selection-635.1-665.198
Quote from: Suryatampan
Wallet emang paling penting dlm dunia crypto yah gan, kalau saya lupa naro private key (kehilangan) terus saya sudah mengikuti bounty2 yg sudah menggunakan erc20 dr private key tersebut gmn yah gan?

Nah dompet agan penting tidak di dunia agan?
Kalo hilang ya sudah hilang, tidak ada "pak polisi atau customer service" di mata uang kripto.

Catatan: komentar ane hapus karena OOT dan terkesan kejar postingan.
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
<...>
By the way tools yang saya pakai ada di sini gan https://2coin.org/

Situs yang agan tulis mencantumkan alamat Pay to Public Script Hash (P2PSH) yang tidak dapat ane verifikasi validitasnya karena tidak ada sumber mengenai P2PSH kecuali salah singkatan --sebenarnya Pay to Script Hash (P2SH)-- sehingga sepertinya alamat P2PSH yang dihasilkan pada situs tsb tidak valid (CMIIW). Mengenai P2SH yang berupa HASH-160 (SHA-256 lalu RIPEMD-160) dari redeem script, bukan dari pubkey dijelaskan pada jawaban berikut:

Quote
Both P2SH and P2PKH addresses rely on HASH160. The difference is in the script.
Selengkapnya > https://bitcoin.stackexchange.com/questions/73288/differences-between-addresses-with-the-same-20b-hash-hash-160



Bonus
Lalu apa sebenarnya isi dari script tersebut?

Dengan pubkey yang tidak dikompres yang kita gunakan dalam thread ini:
Code:
045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176

Nah kita akan membuat 1-of-1 multisig menggunakan pubkey tersebut dengan menulis pada console bitcoin core:
Code:
createmultisig 1 "[\"045C0DE3B9C8AB18DD04E3511243EC2952002DBFADC864B9628910169D9B9B00EC243BCEFDD4347074D44BD7356D6A53C495737DD96295E2A9374BF5F02EBFC176\"]"

Hasilnya:
Code:
{
  "address": "3CPsfd5fz8L3Z7PjvDDrb7VBmKqwqLEDoj",
  "redeemScript": "5141045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc17651ae"
}



Redeem Script
Code:
5141045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc17651ae
inilah yang di HASH-160 dst.. #4 dengan versi 0x05 (mainnet) untuk menciptakan alamat
Code:
3CPsfd5fz8L3Z7PjvDDrb7VBmKqwqLEDoj



Mari kita decodekan redeem script tersebut untuk mengintip isinya dengan perintah:
Code:
decodescript 5141045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc17651ae

Hasilnya:
Code:
{
  "asm": "1 045c0de3b9c8ab18dd04e3511243ec2952002dbfadc864b9628910169d9b9b00ec243bcefdd4347074d44bd7356d6a53c495737dd96295e2a9374bf5f02ebfc176 1 OP_CHECKMULTISIG",
  "reqSigs": 1,
  "type": "multisig",
  "addresses": [
    "1thMirt546nngXqyPEz532S8fLwbozud8"
  ],
  "p2sh": "3CPsfd5fz8L3Z7PjvDDrb7VBmKqwqLEDoj"
}

Perhatikan alamat bitcoin dan pubkey pada redeem script tersebut sudah valid.
jr. member
Activity: 280
Merit: 1
AFAIK (mohon koreksi apabila salah)
1. Alamat dengan awalan angka 3 dikenal dengan Pay to Script Hash (P2SH), memang ada "turunan" dari alamat tersebut seperti P2SH-P2WPKH (segwit)
https://bitcoincore.org/en/segwit_wallet_dev/

2. P2SH tidak harus multisig, bisa juga 1-of-1 signature tergantung isi redeem scriptnya
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch07.asciidoc

3. Perbedaannya lebih tepat pada komponen yang dihash, kalau pada P2PKH yang dihash adalah public key, pada P2SH yang dihash adalah script.
4. Agan tidak dapat membuat alamat P2SH yang valid dengan menggunakan public key hash menggunakan contoh yang ane lakukan pada langkah 1 (bold). Untuk membuat P2SH yang valid maka yang dihash adalah script.
https://bitcoin.org/en/developer-guide#p2sh-scripts
IMO penjelasan di atas lebih tepat untuk multisig.
Dengan mengimpor compressed WIF private key kita dapat memeriksa benar atau salah alamat yang dihasilkan.
Hasilnya: 3Aj3og72RnL8MMRwKFDKJNdrnZ4SPgYQD7
https://segwitaddress.org/

Terima kasih agan mu_enrico atas koreksinya dan sangat memberikan pemahaman yang luar biasa khususnya bagi saya dalam memahami wallet address ini..
By the way tools yang saya pakai ada di sini gan https://2coin.org/
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
AFAIK (mohon koreksi apabila salah)

<...>
kita juga bisa membuat wallet address dengan angka 3 atau lebih dikenal dengan sitilah P2PSH (Pay to Public Script Hash) -1 atau juga MultiSign Address. -2
Perbadaannya hanya pada penggunaan versi desimal yang memakai versi 5 (0x05) pada RIPEMD-160 pada hasil SHA-256. -3
<...>

1. Alamat dengan awalan angka 3 dikenal dengan Pay to Script Hash (P2SH), memang ada "turunan" dari alamat tersebut seperti P2SH-P2WPKH (segwit)
https://bitcoincore.org/en/segwit_wallet_dev/

2. P2SH tidak harus multisig, bisa juga 1-of-1 signature tergantung isi redeem scriptnya
https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch07.asciidoc

3. Perbedaannya lebih tepat pada komponen yang dihash, kalau pada P2PKH yang dihash adalah public key, pada P2SH yang dihash adalah script.



<...>
#4 Bitcoin (Public) Address

Sebelumnya 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.
Code:
38FDDB9986CFF3B5CDC46FAD15F540091A22CA649750B55CB1A2094930BCC687

2. Gunakan RIPEMD-160 pada hasil SHA-256.
Code:
09C6E71118D8F12BEC6B5C61884B35677C0A0AE3
<...>

 dan selanjutnya..

3. Tambahkan versi desimal 5 di depan hasil RIPEMD-160 (0x05 mainnet)
0509C6E71118D8F12BEC6B5C61884B35677C0A0AE3

<...>

8. Ubah menjadi format base58.
32aiHGMKcxRAsrEH6UuaVfPNHBdfCfWYRM
-4

4. Agan tidak dapat membuat alamat P2SH yang valid dengan menggunakan public key hash menggunakan contoh yang ane lakukan pada langkah 1 (bold). Untuk membuat P2SH yang valid maka yang dihash adalah script.
https://bitcoin.org/en/developer-guide#p2sh-scripts



Akan tetapi untuk penggunaan wallet address P2PSH untuk transaksi peer to peer (P2P)-multisig sedikit rumit karena si penerima memerlukan signature beberapa orang untuk menerima bitcoin, atau kata sandi yang acak, atau persyaratan unik yang harus dimiliki.
Dalam pengertian sederhananya apabila Andi dan Bambang mengirim pesan ke Susi, Maka Susi harus memiliki tanda tangan atau Signature dari Andi dan Bambang,apabila hanya satu signature maka terjadi false, dan Susi pun tidak menerima pesan.
<...>

IMO penjelasan di atas lebih tepat untuk multisig.



<...>
Kira-kira seperti itu ya..
Mohon dikoreksi apabila saya salah dalam perhitungannya....

Dengan mengimpor compressed WIF private key kita dapat memeriksa benar atau salah alamat yang dihasilkan.
Hasilnya: 3Aj3og72RnL8MMRwKFDKJNdrnZ4SPgYQD7
https://segwitaddress.org/

jr. member
Activity: 280
Merit: 1
mohon ijin menambahkan sedikit untuk pembelajaran...
Selain mendapatkan wallet address dengan angka 1 pada kepala wallet address, kita juga bisa membuat wallet address dengan angka 3 atau lebih dikenal dengan sitilah P2PSH (Pay to Public Script Hash) atau juga MultiSign Address.
Perbadaannya hanya pada penggunaan versi desimal yang memakai versi 5 (0x05) pada RIPEMD-160 pada hasil SHA-256.
cara perhitungannya pun sama juga, Berikut ini:

<...>
#4 Bitcoin (Public) Address

Sebelumnya 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.
Code:
38FDDB9986CFF3B5CDC46FAD15F540091A22CA649750B55CB1A2094930BCC687

2. Gunakan RIPEMD-160 pada hasil SHA-256.
Code:
09C6E71118D8F12BEC6B5C61884B35677C0A0AE3
<...>

 dan selanjutnya..

3. Tambahkan versi desimal 5 di depan hasil RIPEMD-160 (0x05 mainnet)
Code:
0509C6E71118D8F12BEC6B5C61884B35677C0A0AE3

4. Gunakan SHA-256 kembali pada hasil RIPEMD-160 setelah ditambahkan versi.
Code:
c755761eff1baadec46f0e93017a5d4c15c95f6d3ab50334fc104a4c96f6afb7

5. Gunakan SHA-256 sekali lagi (SHA-256D)
Code:
92f587283756a2698f5d53624fc27df55a158efaaeb74743fbe52ccb04e2c204

6. Ambil 4 byte (8 karakter) pada hasil di atas sebagai checksum.
Code:
92f58728

7. Tambahkan checksum di akhir hasil nomor tiga.
Code:
0509C6E71118D8F12BEC6B5C61884B35677C0A0AE392f58728

8. Ubah menjadi format base58.
Code:
32aiHGMKcxRAsrEH6UuaVfPNHBdfCfWYRM

Akan tetapi untuk penggunaan wallet address P2PSH untuk transaksi peer to peer (P2P) sedikit rumit karena si penerima memerlukan signature beberapa orang untuk menerima bitcoin, atau kata sandi yang acak, atau persyaratan unik yang harus dimiliki.
Dalam pengertian sederhananya apabila Andi dan Bambang mengirim pesan ke Susi, Maka Susi harus memiliki tanda tangan atau Signature dari Andi dan Bambang,apabila hanya satu signature maka terjadi false, dan Susi pun tidak menerima pesan.

Kira-kira seperti itu ya..
Mohon dikoreksi apabila saya salah dalam perhitungannya....
member
Activity: 308
Merit: 11
Jika Private key di ketahui oleh orang lain, apakah kita bisa mengubah private terserbut...?
tanpa harus membuat dan memindah asset di dalam wallet

setahu ane gak bisa gan, coz satu wallet satu private key, jadi kalau privat key kita sudah ketahuan sama orang lain ya mendingan cari langkah amanya saja dengan segera memindahkan aset kita ke wallet yang lain sebelum semua aset kita amblas digondol maling
full member
Activity: 462
Merit: 100
Jika Private key di ketahui oleh orang lain, apakah kita bisa mengubah private terserbut...?
tanpa harus membuat dan memindah asset di dalam wallet
jr. member
Activity: 280
Merit: 1
Wah mantap nih agan agan mastah sangat detail penjelasannyannya..
ijin untuk menambahkan gan saya ada dapat site playground untuk pembelajaran siapa tahu orang Indonesia bisa berkontribusi untuk Blockchain..

http://royalforkblog.github.io/2014/08/11/graphical-address-generator/
copper member
Activity: 2324
Merit: 2142
Slots Enthusiast & Expert
kalo mau nyimpen private key dengan cara print qr codenya, bisa kan gan?

Bisa, tetapi tidak dianjurkan.
Berikut ini adalah alasan mengapa tidak dianjurkan menggunakan printer untuk mencetak privkey atau QR code:
1. Tinta inkjet printer terutama yang refill tidak tahan lama, tinta berkualitas buruk tersebut semakin lama bisa pudar dan hilang.
2. Driver printer dan/atau OS mungkin masih menyimpan duplikat dari dokumen privkey yang agan cetak dalam "service" atau "antrian."
3. Sebagaimana tidak dianjurkan menyimpan privkey dalam komputer, terkait keylogger dan malware lain yang ikut terinstall di OS.

Cara paling tepat dalam membackup privkey adalah dengan menuliskannya pada selembar kertas, lalu disimpan di tempat yang aman.

<...>
ini yang biasa disepelekan sama kebanyakan orang gan. mereka nganggap backup di notepad dan save di folder yg aman udah cukup.
jangankan nyimpen private key di kompter yg terhubung di internet, di komputer offline pun tetap berbahaya, karena sewaktu2 komputer kita bisa saja bermasalah. kalo bermasalah, trs harus sampe install ulang (hdd non partisi) atau hdd nya bad sector, hilang sudah.
ane biasanya kalau bikin wallet baru, private key nya ane tulis tangan dan simpan di tempat dokumen2 penting barengan sama ijazah, dan hal2 penting lainnya. yang penting2 harus ditempatkan seberkas sama yang penting juga. jadi nanti gampang ingat kalo kebetulan dibutuhkan.

Referensi:
https://www.reddit.com/r/Bitcoin/comments/670zhy/summary_pitfalls_of_paper_wallets/
newbie
Activity: 29
Merit: 0
kalo mau nyimpen private key dengan cara print qr codenya, bisa kan gan?
Pages:
Jump to: