آیا میتوان در بلاک چین بیت کوین مطلبی نوشت؟ آیا میتوان پیامی در آن قرار داد؟
بله، البته که این کار امکانپذیر است. میتوان با استفاده از آپکد (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 است.