Author

Topic: Bitcoin Message Tool - command-line signer & verifier (Read 46 times)

legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited

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:

Code:
pip install bitcoin-message-tool

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):

Code:
poetry new bmt

Code:
cd ./bmt

Buat sebuah virtual environment baru:

Code:
poetry install
Code:
poetry shell

Download aplikasi dari PyPi melalui command berikut ini:

Code:
poetry add bitcoin-message-tool

Untuk menjalankannya dari terminal, gunakan command berikut ini:

Code:
python3 -m bitcoin_message_tool

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:

Code:
git clone https://github.com/shadowy-pycoder/bitcoin_message_tool.git

atau Anda dapat melakukan fork pada repo dan mengkloning versi fork tersebut

Instal requirement melalui command berikut:

Code:
pip install -r /path/to/requirements.txt

Untuk menjalankan aplikasi dari repo yang di-fork atau dikloning, Anda cukup menggunakan yang berikut ini:

Code:
python3 /path/to/bmt.py -h

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:

Code:
python -m bitcoin_message_tool -h

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:

Code:
python bmt.py sign -h
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

Code:
$python bmt.py sign -p -a p2pkh -m ECDSA is the most fun I have ever experienced

PrivateKey(WIF):
Harap dicatat bahwa private key tidak akan muncul pada terminal.

Output:

Code:
Bitcoin address: 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
Message: ECDSA is the most fun I have ever experienced
Signature: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=

Output yang sama dengan -v/--verbose flag:

Code:
-----BEGIN BITCOIN SIGNED MESSAGE-----
ECDSA is the most fun I have ever experienced
-----BEGIN BITCOIN SIGNATURE-----
175A5YsPUdM71mnNCC3i8faxxYJgBonjWL

IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-----END BITCOIN SIGNATURE-----

Verifikasi pesan:

Code:
python bmt.py verify -h
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

Code:
python bmt.py verify -a 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL \
> -m ECDSA is the most fun I have ever experienced \
> -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \
> -v

Output:

Code:
True
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).
Jump to: