Topik Asli : Bitcoin Message Tool - command-line signer & verifier
Penulis Asli : witcher_sense
Pendahuluan
Sebuah tool CLI open-source yang ringan untuk menandatangani dan memverifikasi bitcoin message. Bitcoin message adalah cara yang paling mudah dan natural untuk membuktikan kepemilikan atas sebuah address tanpa mengungkapkan informasi rahasia.
Tool ini mengikuti spesifikasi yang dijelaskan dalam BIP137:
"...Meskipun tidak ada BIP yang ditulis untuk cara menandatangani pesan (message) secara digital dengan private key Bitcoin dengan alamat P2PKH, proses ini cukup dipahami dengan baik, namun dengan diperkenalkannya alamat Segwit (baik dalam bentuk P2SH maupun bech32), tidak jelas bagaimana membedakan alamat P2PKH, P2SH, atau bech32 satu dengan yang lainnya. BIP ini mengusulkan format tanda tangan standar yang akan memungkinkan klien untuk membedakan antara format alamat yang berbeda."
Harap dicatat bahwa:
"karena format ini menyertakan kunci P2PKH, format ini kompatibel dengan format sebelumnya, tetapi perlu diingat bahwa beberapa software memiliki pemeriksaan untuk rentang header dan akan melaporkan jenis header segwit yang lebih baru sebagai error."
Info lebih lanjut: https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki
Wallet yang sepenuhnya men-support jenis tanda tangan (signature) BIP137:
1) Trezor
2) Sparrow Wallet
3) Coldcard?
4) ...
Tool ini pada dasarnya adalah sebuah upaya untuk memperluas penggunaan standar ini.
Instalasi
1)Untuk menginstal dengan pip, jalankan:
Anda bisa membuat sebuah virtual environment untuk aplikasi ini dan menjalankannya dari sana, contohnya dengan menggunakan Poetry.
Buat sebuah folder baru (bmt adalah kependekan dari Bitcoin Message Tool atau Anda bisa memilih nama yang Anda inginkan):
Buat sebuah virtual environment baru:
Download aplikasi dari PyPi melalui command berikut ini:
Untuk menjalankannya dari terminal, gunakan command berikut ini:
Ketika Anda menjalankan aplikasi tanpa argumen, Anda akan melihat help message.
2) Atau, Anda dapat mengunduh source code langsung dari GitHub melalui command berikut ini:
atau Anda dapat melakukan fork pada repo dan mengkloning versi fork tersebut
Instal requirement melalui command berikut:
Untuk menjalankan aplikasi dari repo yang di-fork atau dikloning, Anda cukup menggunakan yang berikut ini:
Cara menggunakan Bitcoin Message Tool
Doctest berikut ini akan memberikan gambaran yang jelas mengenai cara menandatangani dan memverifikasi pesan dengan tool CLI ini:
Penggunaan dasar:
or
python bmt.py -h
usage: python3 bmt.py [-h] {sign,verify} ...
Bitcoin message signing/verification tool
positional arguments:
{sign,verify}
options:
-h, --help show this help message and exit
Penandatanganan pesan:
usage: python3 bmt.py sign [-h] -p -a {p2pkh,p2wpkh-p2sh,p2wpkh} -m [MESSAGE ...] [-d] [-v]
options:
-h, --help show this help message and exit
Sign messsage:
-p, --privkey private key in wallet import format (WIF)
-a {p2pkh,p2wpkh-p2sh,p2wpkh}, --addr_type {p2pkh,p2wpkh-p2sh,p2wpkh}
type of bitcoin address
-m [MESSAGE ...], --message [MESSAGE ...]
Message to sign
-d, --deterministic sign deterministtically (RFC6979)
-v, --verbose print prettified message
Contoh: Tanda tangan non-deterministik untuk private key terkompresi dan alamat p2pkh
PrivateKey(WIF):
Output:
Message: ECDSA is the most fun I have ever experienced
Signature: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
Output yang sama dengan -v/--verbose flag:
ECDSA is the most fun I have ever experienced
-----BEGIN BITCOIN SIGNATURE-----
175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-----END BITCOIN SIGNATURE-----
Verifikasi pesan:
usage: python3 bmt.py verify [-h] -a ADDRESS -m [MESSAGE ...] -s SIGNATURE [-v] [-r]
options:
-h, --help show this help message and exit
Verify messsage:
-a ADDRESS, --address ADDRESS
specify bitcoin address
-m [MESSAGE ...], --message [MESSAGE ...]
Message to verify
-s SIGNATURE, --signature SIGNATURE
bitcoin signature in base64 format
-v, --verbose print full message
-r, --recpub recover public key
Contoh: Verifikasi pesan dalam mode verbose
> -m ECDSA is the most fun I have ever experienced \
> -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \
> -v
Output:
Message verified to be from 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
Contoh dan source code lebih lanjut dapat ditemukan di sini: https://github.com/shadowy-pycoder/bitcoin_message_tool
Test dengan wallet Sparrow
Mari kita verifikasi tanda tangan SegWit yang dibuat dengan wallet sungguhan:
Hasil:
Mari kita verifikasi tanda tangan SegWit yang dibuat oleh tool ini:
Hasil:
Terjemahan ini diinisiasi oleh Tim AoBT (The Alliance of Bitcointalk Translators).