Bitcoin Forum
October 19, 2024, 01:12:10 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin Message Tool – semnare și verificare în mod comandă  (Read 63 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
GazetaBitcoin (OP)
Legendary
*
pizza
Offline Offline

Activity: 1862
Merit: 7430


Fully-fledged Merit Cycler|Spambuster'23|Pie Baker


View Profile
September 07, 2024, 10:52:59 AM
Merited by witcher_sense (12), Porfirii (1)
 #1

Autor: witcher_sense
Topic original: Bitcoin Message Tool - command-line signer & verifier





Introducere

O unleată CLI (n.b.: Command Line Interface) ușoară și cu cod sursă complet deschis, menită să semneze și verifice mesaje Bitcoin. Mesajele Bitcoin sunt calea cea mai directă și naturală pentru a dovedi posesia unei anumite adrese, fără a dezvălui informații confidențiale.

Această unealtă urmărește îndeaproape specificațiile descrise în BIP137:

"... Era de la sine înțeles în timpul în care nu fusese scris niciun BIP pentru semnarea digitală a mesajelor cu chei private Bitcoin având adrese P2PKH; totuși, după introducerea adreselor SegWit (în ambele forme P2SH și bech32), nu este clar cum se pot distinge între ele adresele P2PKH, P2SH sau bech32. Acest BIP propune un format standard de semnătură care va permite clienților să poate distinge formatele diferite ale adreselor."

De reținut:

"întrucât acest format include chei P2PKH, este compatibil cu versiunile anterioare, dar țineți minte ca unele software verifică antetele și vor raporta noile antete SegWit ca fiind erori."

Mai multe informații: https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki

Portofele care suportă complet tipul de semnătură BIP137:

1) Trezor
2) Sparrow Wallet
3) Coldcard?
4) ...

Această unealtă este, în principiu, o încercare de a extinde modul de utilizare al acestui standard.

Instalare

1)Pentru instalearea cu ajutorul pip, rulăm:

Code:
pip install bitcoin-message-tool

Puteți crea un mediu virtual pentru această aplicație, apoi o puteți rula de acolo, de pildă, folosind Poetry.

Creați un director nou (bmt este prescurtarea pentru Bitcoin Message Tool sau puteți folosi ce nume doriți):

Code:
poetry new bmt

Code:
cd ./bmt

Creați un nou mediu virtual:

Code:
poetry install
Code:
poetry shell

Descărcați aplicația de pe PyPi cu ajutorul comenzii:
Code:
poetry add bitcoin-message-tool

Pentru a o rula din terminal folosiți această comandă:

Code:
python3 -m bitcoin_message_tool

Când rulați aplicația fără argumente, veți vedea un mesaj de ajutor.

2) Alternativ, puteți descărca codul sursă direct de pe GitHub cu ajutorul acestei comenzi:

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

sau puteți bifurca pachetul și apoi puteți clona varianta bifurcată

Instalați cele necesare cu ajutorul acestei comenzi:

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

Pentru a rula o aplicație din pachetul bifurcat sau clonat, puteți folosi comanda următoare:

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

Cum se folosește Bitcoin Message Tool

Următorul modul doctest ar trebui să ofere o imagine clară asupra modului de semnare și verificare a mesajelor prin intermediul acestei unelte CLI:

Utilizare simplă:

Code:
python -m bitcoin_message_tool -h

sau

python bmt.py -h
utilizare: python3 bmt.py [-h] {sign,verify} ...

unealtă de semnare / verificare a mesajelor Bitcoin

argumente poziționale:
{sign,verify}

opțiuni:
-h, --help     show this help message and exit

Semnarea mesajelor:

Code:
python bmt.py sign -h
utilizare: python3 bmt.py sign [-h] -p -a {p2pkh,p2wpkh-p2sh,p2wpkh} -m [MESSAGE ...] [-d] [-v]

opțiuni:
-h, --help            afișează acest mesaj de ajutor și închide

Semnarea mesajelor:
-p, --privkey         private key in wallet import format (WIF)
-a {p2pkh,p2wpkh-p2sh,p2wpkh}, --addr_type {p2pkh,p2wpkh-p2sh,p2wpkh}
                        Tipul de adresă Bitcoin
-m [MESSAGE ...], --message [MESSAGE ...]
                        Tipul de mesaj care va fi semnat
-d, --deterministic   semnare în mod determinist (RFC6979)
-v, --verbose         tipărire estetică a mesajelor

Exemplu: semnătura non-deterministă pentru cheie privată comprimată și pentru adresă p2pkh

Code:
$python bmt.py sign -p -a p2pkh -m ECDSA ([i]n.b.: algoritm de criptare[/i]) este cel mai atractiv pe care l-am încercat

PrivateKey(WIF): <scrie aici cheia privată>
De reținut, cheia privată nu va fi afișată pe terminal.

Se va afișa:

Code:
Bitcoin address: 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
Messaj: ECDSA este cel mai atractiv pe care l-am încercat
Semnătură: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=

Afișarea aceluiași mesaj cu ajutorul argumentului -v/--verbose:

Code:
-----BEGIN BITCOIN SIGNED MESSAGE-----
ECDSA este cel mai atractiv pe care l-am încercat
-----BEGIN BITCOIN SIGNATURE-----
175A5YsPUdM71mnNCC3i8faxxYJgBonjWL

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

Verificarea mesajelor:

Code:
python bmt.py verify -h
utilizare: python3 bmt.py verify [-h] -a ADDRESS -m [MESSAGE ...] -s SIGNATURE [-v] [-r]

opțiuni:
-h, --help            afișează acest mesaj de ajutor și închidet

Verificarea messajelor:
-a ADDRESS, --address ADDRESS
                        Specifică adresa Bitcoin
-m [MESSAGE ...], --message [MESSAGE ...]
                        Mesajul care va fi verificat
-s SIGNATURE, --signature SIGNATURE
                        Semnătură Bitcoin în baza 64
-v, --verbose         Tipărirea completă a mesajului
-r, --recpub          recuperează cheia publică

Exemplu: verificarea mesajului în mod verbose

Code:
python bmt.py verify -a 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL \
> -m ECDSA este cel mai atractiv pe care l-am încercat \
> -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \
> -v

Se va afișa:

Code:
True
Message verified to be from 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL

Mai multe exemple și coduri sursă pot fi găsite aici: https://github.com/shadowy-pycoder/bitcoin_message_tool

Teste cu portofelul  with Sparrow Wallet

Să verificăm o semnătură SegWit prin crearea unui portofel real:



Rezultat:



Să verificăm o semnătură creată cu această unealtă:



Rezultat:





Traducere realizată la inițiativa:


█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!