Yazar: witcher_sense
Ana Konu: Bitcoin Message Tool - command-line signer & verifier
Bitcoin mesajlarının imzalanması ve doğrulanması için hafif, tamamen açık kaynak kodlu bir CLI aracı. Bitcoin mesajları, herhangi bir gizli birimi ifşa etmeden belirli bir adres üzerindeki mülkiyeti kanıtlamanın en basit ve doğal olarak iletilir.
Bu araç, BIP137'de anlatılan özellikleri detaylı takip eder:
"...Bitcoin özel anahtarlarıyla yani private keylerle, P2PKH adresleri kullanarak mesajları dijital olarak imzalamaya yönelik yazılmış bir BIP olmasa da bu süreç oldukça iyi anlaşılmıştır. Ancak, Segwit'in (hem P2SH hem de bech32 formunda) adreslerle tanıtılmasıyla birlikte, bir P2PKH, P2SH veya bech32 adresini birbirinden ayırt etmenin nasıl yapılacağı belirsiz hale gelmiştir. Bu BIP, müşterilerin farklı adres formatlarını ayırt etmesine olanak tanıyacak standart bir imza formatı önermektedir.."
Lütfen şunu da unutmayın:
"bu format P2PKH anahtarlarını içerdiği için geriye dönük uyumludur, ancak bazı yazılımların başlık aralıklarını kontrol ettiğini ve daha yeni segwit başlık türlerini hata olarak bildireceğini de göz ardı etmeyin."
Daha fazla bilgi için: https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki
BIP137 imza türünü tam olarak destekleyen cüzdanlar:
1) Trezor
2) Sparrow Cüzdan
3) Coldcard?
4) ...
Bu araç temel olarak bu standardın kullanımını genişletme girişimidir.
Kurulum
1) Pip ile kurmak için aşağıdaki kodları çalıştırın:
pip install bitcoin-message-tool
Bu uygulama için sanal bir ortam oluşturabilir ve oradan çalıştırabilirsiniz, örneğin Poetry'yi kullanarak.
Yeni bir klasör oluşturun (bmt, Bitcoin Message Tool'un kısaltmasıdır veya istediğinizi seçebilirsiniz):
poetry new bmt
cd ./bmt
Yeni bir sanal ortam oluşturun:
poetry install
poetry shell
Uygulamayı PyPi'den şu komutla indirin:
poetry add bitcoin-message-tool
Terminalden çalıştırmak için aşağıdaki komutu kullanın:
python3 -m bitcoin_message_tool
Uygulamayı argümanlar olmadan çalıştırdığınızda bir yardım mesajı göreceksiniz.
2) Alternatif olarak, kaynak kodunu doğrudan GitHub'dan şu komutla indirebilirsiniz:
git clone https://github.com/shadowy-pycoder/bitcoin_message_tool.git
veya depoyu çatallandırabilir ve ardından çatallanmış sürümü klonlayabilirsiniz.
Gereksinimleri şu komutla yükleyin:
pip install -r /path/to/requirements.txt
Forked(çatallanmış) veya klonlanmış depodan bir uygulama çalıştırmak için, basitçe aşağıdakileri kullanabilirsiniz:
python3 /path/to/bmt.py -h
Bitcoin Mesaj Aracı Nasıl Kullanılır
Aşağıdaki doctest, bu CLI aracıyla mesajların nasıl imzalanacağı ve doğrulanacağı hakkında net bir tablo sunmalıdır:
Temel kullanım:
python -m bitcoin_message_tool -h
veya
python bmt.py -h
kullanım: python3 bmt.py [-h] {sign,verify} ...
Bitcoin mesaj imzalama/doğrulama aracı
konumsal argümanlar:
{sign,verify}
seçenekler:
-h, --help bu yardım mesajını göster ve çık
Mesaj imzalama:
python bmt.py sign -h
kullanım: python3 bmt.py sign [-h] -p -a {p2pkh,p2wpkh-p2sh,p2wpkh} -m [MESAJ ...] [-d] [-v]
seçenekler:
-h, --help bu yardım mesajını göster ve çık
İmza mesajı:
-p, --privkey cüzdan içe aktarma biçiminde (WIF) özel anahtar
-a {p2pkh,p2wpkh-p2sh,p2wpkh}, --addr_type {p2pkh,p2wpkh-p2sh,p2wpkh}
bitcoin adresi türü
-m [MESAJ ...], --mesaj [MESAJ ...]
İmzalanacak mesaj
-d, --deterministic deterministik olarak imzala (RFC6979)
-v, --verbose güzelleştirilmiş mesajı yazdır
Örnek: Sıkıştırılmış özel anahtar ve p2pkh adresi için kesin olmayan imza
$python bmt.py sign -p -a p2pkh -m ECDSA şimdiye kadar deneyimlediğim en eğlenceli şey
PrivateKey(WIF):
Çıktı:
Bitcoin adresi: 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
Mesaj: ECDSA şimdiye kadar deneyimlediğim en eğlenceli şey
İmza: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-v/--verbose bayrağıyla aynı çıktı:
-----BITCOIN İMZALI MESAJIN BAŞLANGICI-----
ECDSA şimdiye kadar deneyimlediğim en eğlenceli şey
-----BITCOIN İMZASI BAŞLANGICI-----
175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-----BITCOIN İMZASI BİTİŞİ-----
Mesaj doğrulama:
python bmt.py verify -h
kullanım: python3 bmt.py verify [-h] -a ADRES -m [MESAJ ...] -s İMZA [-v] [-r]
seçenekler:
-h, --help bu yardım mesajını göster ve çık
Mesajı doğrula:
-a ADRES, --adres ADRES
bitcoin adresini belirt
-m [MESAJ ...], --mesaj [MESAJ ...]
Doğrulanacak mesaj
-s İMZA, --imza İMZA
bitcoin imzası base64 biçimi
-v, --verbose tam mesajı yazdır
-r, --recpub genel anahtarı kurtar
Örnek: Ayrıntılı modda mesaj doğrulaması
python bmt.py verify -a 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL \
> -m ECDSA şimdiye kadar deneyimlediğim en eğlenceli şey \
> -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \
> -v
Çıktı:
Doğru
Mesajın 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL'den olduğu doğrulandı
Daha fazla örnek ve kaynak kodu yandaki linkten bulunabilir: https://github.com/shadowy-pycoder/bitcoin_message_tool
Sparrow Cüzdanı ile Testler
Gerçek cüzdanla oluşturulan bir SegWit imzasını doğrulayalım:
Sonuç:
Bu cüzdanla oluşturulan bir SegWit imzasını doğrulayalım araç:
Sonuç:
Bu çeviri AOBT instiyatifi ile yapılmıştır.