লেখক : witcher_senseঅরিজিনাল টপিক : Bitcoin Message Tool - command-line signer & verifier
পরিচয়সম্পূর্ণ ওপেন সোর্স লাইটওয়েট একটি CLI (কমান্ড লাইন ইন্টারফেস) টুল, যা বিটকয়েন মেসেজ সাইনিং এবং ভেরিফিকেশনের জন্য ডিজাইন করা হয়েছে। কোনো রকম গোপনীয় তথ্য প্রকাশ না করে কোনো এড্রেসের মালিকানা প্রমান করার সবথেকে সহজ উপায় হচ্ছে বিটকয়েন মেসেজ সাইনিং।
এই টুলটি একান্তভাবে BIP137-এ উল্লেখ করা স্পেসিফিকেশন অনুসরণ করে:
"...এটি এমন এক সময় গৃহীত হয় যখন P2PKH এড্রেসের জন্য ডিজিট্যালি বিটকয়েন মেসেজ সাইনিং এর কোনো BIP লেখা হয় নি, যাইহোক পরবর্তীতে SegWit (P2SH এবং bech32) এড্রেসগুলোর প্রবর্তনের সাথে, কোনটা P2PKH, কোনটা P2SH বা কোনটা bech32 তা একে অপরের থেকে আলাদা করা কঠিন হয়ে পড়ে। এই সমস্যার সমাধানের জন্য মূলত একটি স্ট্যান্ডার্ড BIP ফরম্যাটের প্রস্তাব করা হয় যার মাধ্যমে ক্লায়েন্টরা এইসব ভিন্ন ভিন্ন এড্রেস ফরম্যাটকে আলাদা করতে পারবে।"
দয়া করে এটি মনে রাখবেন:
"যেহেতু এই ফরম্যাটটিতে P2PKH কী অন্তর্ভুক্ত, সেজন্য এটি পূববর্তী ভার্সনগুলোর সাথেও কম্প্যাটিবল, তবে এটি মনে রাখবেন যে কিছু কিছু সফটওয়্যার হেডার টাইপ চেক করে থাকে এবং নতুন SegWit হেডারগুলোকে ক্রটি হিসেবে চিন্তিত করতে পারে।"আরো তথ্য:
https://github.com/bitcoin/bips/blob/master/bip-0137.mediawikiযেসব ওয়ালেট সম্পূর্ণরূপে BIP137 সিগ্নেচার টাইপ সাপোর্ট করে:
1) Trezor
2) Sparrow ওয়ালেট
3) Coldcard?
4) ...
এই টুলটি মূলত এই স্ট্যান্ডার্ডের ব্যবহার বাড়ানোর একটি প্রচেষ্টা।
ইনস্টলেশন1)pip এর মাধ্যমে ইনস্টল করার ক্ষেত্রে, নিচের কমান্ডটি রান করুন:
pip install bitcoin-message-tool
আপনি এই আপ্লিকেশনটির জন্য একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করে নিতে পারবেন এবং চাইলে সেখান থেকে এটি রান করা যাবে, উদাহরণস্বরূপ Poetry ব্যবহার করে এটি করা যায়।
নতুন একটি ফোল্ডার তৈরি করুন (বিটকয়েন মেসেজ টুল সংক্ষেপে bmt অথবা আপনার যা মনে চায় বেছে নিন):
poetry new bmt
cd ./bmt
নতুন একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন:
poetry install
poetry shell
PyPi কমান্ডটি ব্যবহার করে এপ্লিকেশনটি ডাউনলোড করে নিন:
poetry add bitcoin-message-tool
টার্মিনালে এপ্লিকেশনটি রান করার জন্য নিচের কমান্ডটি দিন:
python3 -m bitcoin_message_tool
আপনি যদি কোনো রকম আর্গুমেন্ট ছাড়াই এপস্ টি রান করেন, সেক্ষেত্রে আপনি একটি হেল্প মেসেজ দেখতে পাবেন।
2) বিকল্পভাবে, আপনি এই কমান্ডটির মাধ্যমে সরাসরি গিটহাব থেকে সোর্স কোডটি ডাউনলোড করে নিতে পারবেন।:
git clone https://github.com/shadowy-pycoder/bitcoin_message_tool.git
আথবা আপনি রিপোজিট্যারি ফোর্ক করুন এবং তারপর সেই ফোর্ক করা ভার্সনটি ক্লন করে নিন
নিচের কমান্ডটি দিয়ে requirements.txt ইনস্টল করে নিন:
pip install -r /path/to/requirements.txt
ফোর্কড বা ক্লোন করা রিপোজিট্যারি থেকে এপ্লিকেশনটি রান করার জন্য, নিচের কমান্ডটি দিন:
python3 /path/to/bmt.py -h
কিভাবে বিটকয়েন মেসেজ টুল ব্যবহার করবেননিম্নলিখিত পরীক্ষাটির মাধ্যমে এই CLI টুলটি ব্যবহার কিভাবে একটি বিটকয়েন মেসেজ সাইন এবং ভেরিফাই করা যাবে তার স্পষ্ট ধারণা দিবে:
সাধারণ ব্যবহার:
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
মেসেজ সাইনিং:
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
উদাহরণ: কমপ্রেস্ট প্রাইভেট কী এবং p2pkh এড্রেসের জন্য নন-ডিটারমিনিস্টিক (ইনপুটের উপর ভিত্তি করে আউটপুট নির্ধারণ করা যায় না) সিগ্নেচার
$python bmt.py sign -p -a p2pkh -m ECDSA is the most fun I have ever experienced
PrivateKey(WIF):
দয়া করে মনে রাখবেন যে প্রাইভেট কী কিন্তু টার্মিনালে দেখা যাবে না।
আউটপুট:
Bitcoin address: 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
Message: ECDSA is the most fun I have ever experienced
Signature: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-v/--verbose flag ব্যবহার করে একই আউটপুট:
-----BEGIN BITCOIN SIGNED MESSAGE-----
ECDSA is the most fun I have ever experienced
-----BEGIN BITCOIN SIGNATURE-----
175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A=
-----END BITCOIN SIGNATURE-----
মেসেজ ভেরিফিকেশন:
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
উদাহরণ: verbose mode এ মেসেজ ভেরিফিকেশন
python bmt.py verify -a 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL \
> -m ECDSA is the most fun I have ever experienced \
> -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \
> -v
আউটপুট:
True
Message verified to be from 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL
আরো উদাহরণ এবং সোর্স কোড এখানে পাওয়া যাবে:
https://github.com/shadowy-pycoder/bitcoin_message_toolSparrow ওয়ালেট দিয়ে করা পরীক্ষাআসুন এবার আমরা আসল একটি ওয়ালেট দিয়ে তৈরি করা SegWit সিগ্নেচার ভেরিফাই করে দেখি::
ফলাফল:
এবার আসুন এই টুল দিয়ে তৈরি করা একটি SegWit সিগ্নেচার ভেরিফাই করে দেখি:
ফলাফল:
অনুবাদ টি যাদের উদ্যোগে করা হয়েছে: