چگونگی نوشتن پیام بر روی بلاک چین بیت کوین
آیا امکان نوشتن مطلب یا گذاشتن پیامی در “بلاک چین بیت کوین” وجود دارد ؟ باید پاسخ داد بله . این امکان وجود دارد که با بهرهگیری از آپکد (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
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
بسیار عالی