Bitcoin Forum
March 16, 2026, 07:53:50 PM *
News: Latest Bitcoin Core release: 30.2 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Ferramenta de mensagens Bitcoin — assine e verifique por linha de comando  (Read 36 times)
r_victory (OP)
Hero Member
*****
Offline Offline

Activity: 2604
Merit: 855


english<->pt-BR Translator (TG: @cryptoheart)


View Profile WWW
March 15, 2026, 08:52:23 PM
Merited by joker_josue (2)
 #1

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


Introdução

Uma ferramenta CLI leve e totalmente de código aberto para assinatura e verificação de mensagens Bitcoin. A mensagem Bitcoin é a maneira mais simples e natural de comprovar a propriedade de um determinado endereço sem revelar informações confidenciais.

Esta ferramenta segue rigorosamente a especificação descrita no BIP137:

"...Embora não exista um BIP (Proposta de Melhoria de Bitcoin) escrito sobre como assinar digitalmente mensagens com chaves privadas Bitcoin usando endereços P2PKH, trata-se de um processo relativamente bem compreendido; no entanto, com a introdução do Segwit (tanto na forma de endereços P2SH quanto bech32), não está claro como distinguir um endereço P2PKH, P2SH ou bech32 um do outro. Este BIP propõe um formato de assinatura padrão que permitirá aos clientes distinguir entre os diferentes formatos de endereço".

Observe que:

"Como esse formato inclui chaves P2PKH, ele é compatível com versões anteriores, mas lembre-se de que alguns softwares verificam intervalos de cabeçalhos e podem reportar os tipos de cabeçalho SegWit mais recentes como erros."

Mais informações: https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki

Carteiras que oferecem suporte completo ao tipo de assinatura BIP137:

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

Essa ferramenta é basicamente uma tentativa de expandir o uso desse padrão.

Instalação

1)Para instalar com o pip, execute:

Code:
pip install bitcoin-message-tool

Você pode criar um ambiente virtual para este aplicativo e executá-lo a partir daí, por exemplo, usando o Poetry.

Crie uma nova pasta (bmt é a abreviação de Bitcoin Message Tool, ou você pode escolher o nome que preferir):

Code:
poetry new bmt

Code:
cd ./bmt

Criar um novo ambiente virtual:

Code:
poetry install
Code:
poetry shell

Baixe o aplicativo do PyPi usando este comando:
Code:
poetry add bitcoin-message-tool

Para executá-lo a partir do terminal, use este comando:

Code:
python3 -m bitcoin_message_tool

Ao executar o aplicativo sem argumentos, você verá uma mensagem de ajuda.

2) Alternativamente, você pode baixar o código-fonte diretamente do GitHub por meio deste comando:

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

Ou você pode criar um fork do repositório e depois clonar a versão "forcada".

Instale os requisitos usando este comando:

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

Para executar um aplicativo a partir do repositório "forcado" ou clonado, você pode simplesmente usar o seguinte comando:

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

Como usar a ferramenta de mensagens Bitcoin

O seguinte doctest deve fornecer uma visão clara de como assinar e verificar mensagens com esta ferramenta de linha de comando:

Uso básico

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


Assinatura de mensagem:

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

Exemplo: Assinatura não determinística para chave privada comprimida e endereço 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>
Observe que a chave privada não será exibida no terminal.

Saída:

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

A mesma saída com a flag -v/--verbose:

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

Verificação de mensagem:

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

Exemplo: Verificação de mensagens no modo detalhado

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

Saída:

Code:
True
Message verified to be from 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL

Mais exemplos e o código-fonte podem ser encontrados aqui: https://github.com/shadowy-pycoder/bitcoin_message_tool

Testes com a carteira Sparrow

Vamos verificar uma assinatura SegWit criada com uma carteira real:



Resultado:



Vamos verificar uma assinatura SegWit criada por esta ferramenta:



Resultado:




Tradução


 
.Winna.com..

░░░░░░░▄▀▀▀
░░


▐▌▐▌
▄▄▄▒▒▒▄▄▄
████████████
█████████████
███▀▀███▀

▄▄

██████████████
████████████▄
█████████████
███▄███▄█████▌
███▀▀█▀▀█████
████▀▀▀█████▌
████████████
█████████████
█████
▀▀▀██████

▄▄
THE ULTIMATE CRYPTO
...CASINO & SPORTSBOOK...
─────  ♦  ─────

▄▄██▄▄
▄▄████████▄▄
██████████████
████████████████
███████████████
████████████████
▀██████████████▀
▀██████████▀
▀████▀

▄▄▄▄

▄▄▀███▀▄▄
▄██████████▄
███████████
███▄▄
▄███▄▄▄███
████▀█████▀███
█████████████████
█████████████
▀███████████
▀▀█████▀▀

▄▄▄▄


.....INSTANT.....
WITHDRAWALS
 
...UP TO 30%...
LOSSBACK
 
 

   PLAY NOW   
joker_josue
Legendary
*
Online Online

Activity: 2324
Merit: 6716


**In BTC since 2013**


View Profile WWW
Today at 07:24:07 AM
 #2

Sei que existem "fãs" de fazer tudo em linha de comando.
Mas, continuou achar pouco pratico. Principalmente para algo com tantos caracteres e comandos.

Entendo o valor da ferramenta. Mas, no dia a dia, qual é a utilidade desta ferramenta face a outras?

 
 b1exch.to 
  ETH      DAI   
  BTC      LTC   
  USDT     XMR    
.███████████▄▀▄▀
█████████▄█▄▀
███████████
███████▄█▀
█▀█
▄▄▀░░██▄▄
▄▀██▄▀█████▄
██▄▀░▄██████
███████░█████
█░████░█████████
█░█░█░████░█████
█░█░█░██░█████
▀▀▀▄█▄████▀▀▀
Forsyth Jones
Legendary
*
Offline Offline

Activity: 1834
Merit: 1994


I love Bitcoin!


View Profile WWW
Today at 02:59:03 PM
 #3

Sei que existem "fãs" de fazer tudo em linha de comando.
Mas, continuou achar pouco pratico. Principalmente para algo com tantos caracteres e comandos.

Entendo o valor da ferramenta. Mas, no dia a dia, qual é a utilidade desta ferramenta face a outras?
Acho ser questão de gosto mesmo, eu mesmo costumava fazer tudo via terminal bitcoin-cli, é bom que tem opções para todos os gostos e experiência.

Sobre essa confusão do formato de endereços bitcoin aceitos em assinaturas, isso já foi uma realidade no começo, mas hoje as carteiras já adaptaram. Pra evitar confusão, basta assinar usando um endereço legacy.

Ótimo tutorial, seria bom trazer mais coisas relacionadas a linha de comando.

███████████████████████████
███████▄████████████▄██████
████████▄████████▄████████
███▀█████▀▄███▄▀█████▀███
█████▀█▀▄██▀▀▀██▄▀█▀█████
███████▄███████████▄███████
███████████████████████████
███████▀███████████▀███████
████▄██▄▀██▄▄▄██▀▄██▄████
████▄████▄▀███▀▄████▄████
██▄███▀▀█▀██████▀█▀███▄███
██▀█▀████████████████▀█▀███
███████████████████████████
.
.Duelbits PREDICT..
█████████████████████████
█████████████████████████
███████████▀▀░░░░▀▀██████
██████████░░▄████▄░░████
█████████░░████████░░████
█████████░░████████░░████
█████████▄▀██████▀▄████
████████▀▀░░░▀▀▀▀░░▄█████
██████▀░░░░██▄▄▄▄████████
████▀░░░░▄███████████████
█████▄▄█████████████████
█████████████████████████
█████████████████████████
.
.WHERE EVERYTHING IS A MARKET..
█████
██
██







██
██
██████
Will Bitcoin hit $200,000
before January 1st 2027?

    No @1.15         Yes @6.00    
█████
██
██







██
██
██████

  CHECK MORE > 
joker_josue
Legendary
*
Online Online

Activity: 2324
Merit: 6716


**In BTC since 2013**


View Profile WWW
Today at 06:28:29 PM
 #4

Era o que suspeitava.
É útil apenas para quem é fã de linha do comando.

Confesso que já não gosto muito. Já lá vai o tempo em que eu fazia muita coisa da linha de comando. Atualmente já não tenho tempo, ou paciência, para isso.

Mas, gabo a paciência de quem usa.

 
 b1exch.to 
  ETH      DAI   
  BTC      LTC   
  USDT     XMR    
.███████████▄▀▄▀
█████████▄█▄▀
███████████
███████▄█▀
█▀█
▄▄▀░░██▄▄
▄▀██▄▀█████▄
██▄▀░▄██████
███████░█████
█░████░█████████
█░█░█░████░█████
█░█░█░██░█████
▀▀▀▄█▄████▀▀▀
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!