آموزش نوشتن پیام‌ بر روی بلاک چین بیت کوین

امتیاز 4.00 ( 1 رای )

آیا امکان نوشتن مطلب یا گذاشتن پیامی در “بلاک چین بیت کوین” وجود دارد ؟  باید پاسخ داد بله . این امکان وجود دارد که با بهره‌گیری از آپ‌کد (op code) ویژه که OP_RETURN نام دارد ، اقدام به گذاشتن یک پیام در بلاک‌ چین بیت کوین کرد .

به کارگیری این کد عملیاتی ، موجب می شود که خروجی خرج نشده تراکنش شما (UTXO) دیگر قابل خرج‌کردن نباشد . شما برای پیام خود قادر به استفاده‌ی حداکثر ۸۰ بایت هستید که شامل ۱۶۰ کاراکتر می‌گردد .

به این اقدام “قرار دادن برچسب زمانی اطلاعات نوشتاری” گفته می شود ؛ چراکه پیام تبدیل به قسمتی از بلاک دارای برچسب زمانی می شود .

چگونه می توان پیام را در بلاک چین بیت کوین نوشت ؟

نخست لازم به دریافت آدرس سگویت (SegWit) از نود شبکه آزمایشی می باشد .

$ bitcoin-cli getnewaddress “” “bech32”

tb1qrggdlvezgd4uy9mntz50mpmwd6l4vk9rm4ft3d

بعد از آن نیازمند بیت کوین هستیم . می بایست سرویس فاست مانند https://bitcoinfaucet.uo1.net/send.php را مورد استفاده قرار دهیم .

بعد امکان بررسی استخر حافظه و همچنین دستیابی به آیدی تراکنش را داریم .

$ bitcoin-cli getrawmempool | grep c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a

عبارتc5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a تراکنش فاست می باشد .

چه هنگامی امکان استفاده از UTXO را داریم ؟

امکان استفاده از UTXO بعد از پروسه‌ی استخراج‌ وجود دارد .

لطفاً اقدام به بازیابی UTXO خود با listunspent نمایید .

$ bitcoin-cli listunspent 1 101 ‘[“tb1qrggdlvezgd4uy9mntz50mpmwd6l4vk9rm4ft3d”]’ | jq

[

{

“txid”: “c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a”,

“vout”: 1,

“address”: “tb1qrggdlvezgd4uy9mntz50mpmwd6l4vk9rm4ft3d”,

“label”: “”,

“scriptPubKey”: “00141a10dfb322436bc2177358a8fd876e6ebf5658a3”,

“amount”: 0.00100000,

“confirmations”: 6,

“spendable”: true,

“solvable”: true,

“desc”: “wpkh([3a46ecca/0’/0’/4′]020d12775323bbdaf0cb6e9a2b44ae7a591ef5872364e80e363a93d283c10b9e4f)#kxjva7dw”,

“safe”: true

}

]

لازم است که کلید خصوصی را بدانیم ، چراکه به منظور امضای تراکنش در بلاک چین بیت کوین به آن احتیاج داریم .

$ bitcoin-cli dumpprivkey tb1qrggdlvezgd4uy9mntz50mpmwd6l4vk9rm4ft3d

cPHTHs7ERe6jDYiitj9eLVswsX3RpeKMB19eXYjpLb4CkEHd7drq

حالا قادر به ایجاد پیام هستیم . به طور مثال http://corsocompleto.bitcoininaction.com

حالا هر آنچه را که برای به وجود آوردن تراکنش نیاز است ، در اختیار داریم . 

$ printf “corsocompleto.bitcoininaction.com” | xxd -ps

636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d

برای به دست آوردن اطلاعات بیشتر در خصوص این شیوه ، می توانیم از help استفاده کنیم . حالا آن را بر روی createrawtransaction به کار می گیریم .

$ bitcoin-cli help createrawtransaction

دریافت‌کننده ، آدرس فاست محسوب می شود . آدرس به صورت زیر خواهد بود :

2NGZrVvZG92qGYqzTLjCAewvPZ7JE8S8VxE

در نهایت ، امکان ایجاد تراکنش‌ خود را داریم و می توانیم در قسمت اطلاعات ، اقدام به وارد نمودن پیام خود نماییم . دقت کنید که این اقدام ، موجب ایجاد کد عملیاتی OP_RETURN خواهد شد .

$ bitcoin-cli createrawtransaction
‘[{“txid”:”c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a”,”vout”:1}]’
‘[{“2NGZrVvZG92qGYqzTLjCAewvPZ7JE8S8VxE”:0.00099000}
,{“data”:”636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d”}]’

02000000019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec
50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b4
84a2c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974
636f696e696e616374696f6e2e636f6d00000000

همانگونه که ملاحظه می کنید تنها دارای یک ورودی هستیم ، به همین خاطر احتیاجی نیست که آدرس تغییر کند . 

همچنین ، اقدام به خرج نمودن کل خروجی نمی کنیم ؛ چراکه مستلزم پرداخت کارمزد بلاک چین بیت کوین هستیم .

خب ، اطلاعات تراکنش را به وجود آوردیم .

وارد مرحله‌ی بعد یعنی امضا و ارسال تراکنش می شویم .

می بایست روش signrawtransactionwithkey را مورد استفاده قرار دهیم .

$ bitcoin-cli signrawtransactionwithkey
02000000019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec
50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2c
1bb47da42870000000000000000236
a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d00000000
‘[“cPHTHs7ERe6jDYiitj9eLVswsX3RpeKMB19eXYjpLb4CkEHd7drq”]’ ‘[{“txid”:”c5ce66d638f1b8ca
702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a”,
“vout”:1,”scriptPubKey”:”00141a10dfb322436bc2177358a8fd876e6ebf5658a3″
,”amount”:0.00100000}]’

{

“hex”: “020000000001019a8bb2699fc92968c62d2197649c7d70a6a71
d7d8ffb2d70cab8f138d666cec
50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2
c1bb47da42870000000000000000236
a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6
e2e636f6d0247304402205688399cb5a230f050330e2bc6d04d9864d459f85fec48
a0118ca31be9239d530220228d7c04fe9e6eea3690033c01ed222284efaa01b28a9a
7cae809bdb32d7ce7a0121020d12775323bbdaf0cb6e9a2b44ae7a591ef5872364e
80e363a93d283c10b9e4f00000000”,

“complete”: true

}

امضا دارای اعتبار است و حالا لازم است اقدام به ارسال تراکنش با روش sendrawtransaction نماییم .

$ bitcoin-cli sendrawtransaction
020000000001019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666
cec50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2
c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974636f
696e696e616374696f6e2e636f6d0247304402205688399cb5a230f050330e2bc6d0
4d9864d459f85fec48a0118ca31be9239d530220228d7c04fe9e6eea3690033c01ed222284e
faa01b28a9a7cae809bdb32d7ce7a0121020d12775323bbdaf0cb6e9a2b44ae7a591e
f5872364e80e363a93d283c10b9e4f00000000

edee419f93521f43259b763ffb42e4b882504534494381b7e18057015a27c548

ما به آیدی تراکنش در بلاک چین بیت کوین دست ‌پیدا کرده‌ایم . این امکان وجود دارد که به منظور مورد بررسی قرار دادن ساختار آن ، مرورگر بلاک و آیدی تراکنش را مورد استفاده قرار دهیم .

ارسال تراکنش به صورت درست انجام شد و الان در انتظار استخراج می باشد . این تراکنش در بلاک چین بیت کوین دو خروجی دارد . یکی از خروجی‌ها برای آدرس فاست و دیگری یک UTXO است که قابل خرج‌کردن نمی باشد ؛ چراکه دریردارنده‌ی پیام ما با کد عملیاتی OP_RETURN می باشد .

منبع : hackermoon