- Pertama-tama tambahkan library dan modules yang dibutuhkan ke dalam Python
import hashlib
import base58
import codecs
import ecdsa
- Diketahui Private Key (HEX) pada Breakdown Challenge adalah 0xD70C60AEE73DD97576F42953AE2F9766250397F8BECCCF19C179D5E5F67B9A95
- Menurunkan Private Key (HEX) ke Public Key (Uncompressed)
private_key = "D70C60AEE73DD97576F42953AE2F9766250397F8BECCCF19C179D5E5F67B9A95"
private_key_bytes = codecs.decode(private_key, 'hex')
public_key_raw = ecdsa.SigningKey.from_string(private_key_bytes, curve=ecdsa.SECP256k1).verifying_key
public_key_bytes = public_key_raw.to_string()
public_key_hex = codecs.encode(public_key_bytes, 'hex')
public_key_uncompressed = (b'04' + public_key_hex).decode("utf-8")
print(public_key_uncompressed)
- Didapatkan Uncompressed Public Key
04b1ef814ce5ebe130cd1ef8c75ffd5e20af6b30b10a19b2dcb6c51844050c204777308d4176208 29cea2ce5cd50f85c548b3d5a1bbea7774444db5d6c1c8f6e01
- Merubah Uncompressed Public Key menjadi Compressed Public Key
if (ord(bytearray.fromhex(public_key_uncompressed[-2:])) % 2 == 0):
public_key_compressed = '02'
else:
public_key_compressed = '03'
lalu lanjutkan dengan perintah sebagai berikut
public_key_compressed += public_key_uncompressed[2:66]
public_key_compressed
- Didapatkan Compressed Public Key
03b1ef814ce5ebe130cd1ef8c75ffd5e20af6b30b10a19b2dcb6c51844050c2047
Setelah didapatkan Compressed Public Key, maka untuk menurunkannya menjadi Address, langkah-langkahnya seperti yang telah saya uraikan di Breakdown Challenge Custom Address
Jika yang diketahui adalah Private Key WIF, maka perlu di convert terlebih dahulu ke bentuk Private Key (HEX)
- Diketahui Private Key WIF L4RjgktgBJFHXu9wThe8JZk3MagAnJr5udqgUGbtCri6mfSZb7Bh
- Tambahkan library dan modules yang dibutuhkan
import hashlib
import base58
import binascii
- Convert Private Key WIF ke Private Key (HEX)
private_key_WIF = "L4RjgktgBJFHXu9wThe8JZk3MagAnJr5udqgUGbtCri6mfSZb7Bh"
privkey_decode = base58.b58decode(private_key_WIF)
private_key_checksum = binascii.hexlify(privkey_decode)
private_key_hex = private_key_checksum[2:-10]
print(private_key_hex)
- Didapatkan Private Key (HEX)
d70c60aee73dd97576f42953ae2f9766250397f8becccf19c179d5e5f67b9a95
- Selanjutnya tinggal meneruskan prosesnya menggunakan langkah-langkah Menurunkan Private Key (HEX) ke Public Key (Uncompressed)