Autor:
witcher_senseTopic original:
Bitcoin Message Tool - command-line signer & verifier
IntroducereO 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.mediawikiPortofele 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.
Instalare1)Pentru instalearea cu ajutorul pip, rulăm:
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):
Creați un nou mediu virtual:
Descărcați aplicația de pe PyPi cu ajutorul comenzii:
poetry add bitcoin-message-tool
Pentru a o rula din terminal folosiți această comandă:
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:
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:
pip install -r /path/to/requirements.txt
Pentru a rula o aplicație din pachetul bifurcat sau clonat, puteți folosi comanda următoare:
python3 /path/to/bmt.py -h
Cum se folosește Bitcoin Message ToolUrmă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ă:
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:
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
$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:
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:
-----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:
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
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:
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_toolTeste cu portofelul with Sparrow WalletSă 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: