>> (p.1)
    Author Topic: Bitcoin Message Tool - command-line signer & verifier  (Read 63 times)
    Husna QA (OP)
    Legendary
    *
    Offline Offline

    Activity: 2814
    Merit: 3144


    View Profile WWW
    September 15, 2024, 11:39:18 PM
    Last edit: September 15, 2024, 11:57:11 PM by Husna QA
    Merited by witcher_sense (12), dansus021 (1), Porfirii (1), GazetaBitcoin (1)
     #1


    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 -rpath/to/requirements.txt

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

    Code:
    python3path/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): <insert private key here>
    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).

    ▄▄███████████████████▄▄
    ▄█████████▀█████████████▄
    ███████████▄▐▀▄██████████
    ███████▀▀███████▀▀███████
    ██████▀███▄▄████████████
    █████████▐█████████▐█████
    █████████▐█████████▐█████
    ██████████▀███▀███▄██████
    ████████████████▄▄███████
    ███████████▄▄▄███████████
    █████████████████████████
    ▀█████▄▄████████████████▀
    ▀▀███████████████████▀▀
    Peach
    BTC bitcoin
    Buy and Sell
    Bitcoin P2P
    .
    .
    ▄▄███████▄▄
    ▄████████
    ██████▄
    ▄██
    █████████████████▄
    ▄███████
    ██████████████▄
    ███████████████████████
    █████████████████████████
    ████████████████████████
    █████████████████████████
    ▀███████████████████████▀
    ▀█████████████████████▀
    ▀██████████████████▀
    ▀███████████████▀
    ▀▀███████▀▀

    ▀▀▀▀███▀▀▀▀
    EUROPE | AFRICA
    LATIN AMERICA
    ▄▀▀▀











    ▀▄▄▄


    ███████▄█
    ███████▀
    ██▄▄▄▄▄░▄▄▄▄▄
    ████████████▀
    ▐███████████▌
    ▐███████████▌
    ████████████▄
    ██████████████
    ███▀███▀▀███▀
    .
    Download on the
    App Store
    ▀▀▀▄











    ▄▄▄▀
    ▄▀▀▀











    ▀▄▄▄


    ▄██▄
    ██████▄
    █████████▄
    ████████████▄
    ███████████████
    ████████████▀
    █████████▀
    ██████▀
    ▀██▀
    .
    GET IT ON
    Google Play
    ▀▀▀▄











    ▄▄▄▀
    Pages: [1]
      Print  
Page 1
Viewing Page: 1