آموزش صفر تا صد نحوه نوشتن پیام روی بلاکچین بیت کوین
مقدمه
شاید برای شما جالب باشد که بدانید امکان نوشتن و ثبت پیام روی بلاکچین بیت کوین وجود دارد! این پیام میتواند کاربردهای متنوعی داشته باشد؛ اما محدودیتهایی نیز دارد که آنها را، در کنار نحوه ایجاد پیام، در این مطلب توضیح خواهیم داد.
این پیامهای درجشده، بعضاً معانی مختلفی دارند و مورد توجه قرار میگیرند؛ مثل پیامی که در آخرین هاوینگ بیتکوین، در آخرین بلاک قبل از اجرای هاوینگ ثبت و خبرساز شد.
نوشتن پیام روی بلاکچین بیت کوین چگونه انجام میگیرد؟
این کار با یک آپکد با نام OP_RETURN اجرا میگردد. این آپکد، نهایتاً یک خروجی خرج نشده تراکنش (UTXO) برای شما ایجاد میکند که مشخصاً غیرقابل خرج کردن است، اما پیام شما را در بلاک درج میکند.
پیشتر در سایت رمزارزنیوز، مطلبی را با نام اهمیت برچسب زمانی بیت کوین منتشر کردیم. جالب است بدانید که نوشتن پیام در بلاکچین نیز ایجاد یک برچسب زمانی با اطلاعات نوشتاری است و پیام شما، بخشی از بلاک دارای برچسب زمانی است.
البته در نظر داشته باشید که پیام نوشتهشده روی بلاکچین بیت کوین، محدودیتهایی دارد. این پیام میتواند حداکثر 80 بایت (160 کاراکتر هگزادسیمال) را در خود جای دهد.
روش نوشتن پیام روی بلاکچین بیت کوین
برای شروع، نیاز است که با استفاده از نود شبکه آزمایشی، آدرس سگویت را به دست آوریم. لذا از کد زیر استفاده کنید:
$ bitcoin-cli getnewaddress "" "bech32" tb1qrggdlvezgd4uy9mntz50mpmwd6l4vk9rm4ft3d
اکنون باید از یک سرویس فاست (مثل https://bitcoinfaucet.uo1.net/send.php) استفاده کنیم؛ چون به بیت کوین احتیاج داریم.
در مرحله بعد باید آیدی تراکنش خود را بیابیم. برای این کار، استخر حافظه را مشاهده میکنیم و به نحو زیر، آیدی را پیدا میکنیم:
$ bitcoin-cli getrawmempool | grep c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a
مثلاً در حالت بالا، تراکنش فاست، عبارت زیر است:
c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a
خروجی تراکنش خرجنشده یا UTXO معمولاً پس از اجرای ماینینگ، قابل استفاده است. حالا با استفاده از دستور زیر، UTXO خود را فراخوانی کنید.
$ 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
حالا میتوانیم پیام دلخواه خود را ایجاد کنیم. مثلاً فرض کنید که قصد داریم پیامی با محتوای https://ramzarz.news ثبت کنیم. بنابراین از دستور زیر استفاده میکنیم:
$ printf "https://ramzarz.news" | xxd -ps 636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d
در این مرحله، دستور help اطلاعات مهمی را به ما ارائه میکند. لذا این دستور را روی createrawtransaction به کار بردیم.
$ bitcoin-cli help createrawtransaction
آدرس فاست، که در خط پایین موجود است، دریافتکننده خواهد بود.
2NGZrVvZG92qGYqzTLjCAewvPZ7JE8S8VxE
حالا باید با وارد کردن پیام خود در فیلد اطلاعات، تراکنش را ایجاد کنیم تا کد عملیاتی OP_RETURN ایجاد گردد.
$ bitcoin-cli createrawtransaction '[{"txid":"c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a","vout":1}]' '[{"2NGZrVvZG92qGYqzTLjCAewvPZ7JE8S8VxE":0.00099000},{"data":"636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d"}]' 02000000019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d00000000
از آنجایی که تنها یک ورودی داریم، نیازی به تغییر آدرس وجود نخواهد داشت. ما باید کارمزد بلاکچین بیت کوین را پرداخت کنیم، لذا نباید همه خروجی را خرج کنیم. بعد از ایجاد تراکنش، تنها نیاز به امضا و ارسال تراکنش داریم که با روش signrawtransactionwithkey قابل انجام است.
$ bitcoin-cli signrawtransactionwithkey 02000000019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d00000000 '["cPHTHs7ERe6jDYiitj9eLVswsX3RpeKMB19eXYjpLb4CkEHd7drq"]' '[{"txid":"c5ce66d638f1b8ca702dfb8f7d1da7a6707d9c6497212dc66829c99f69b28b9a","vout":1,"scriptPubKey":"00141a10dfb322436bc2177358a8fd876e6ebf5658a3","amount":0.00100000}]' { "hex": "020000000001019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d0247304402205688399cb5a230f050330e2bc6d04d9864d459f85fec48a0118ca31be9239d530220228d7c04fe9e6eea3690033c01ed222284efaa01b28a9a7cae809bdb32d7ce7a0121020d12775323bbdaf0cb6e9a2b44ae7a591ef5872364e80e363a93d283c10b9e4f00000000", "complete": true }
همانطور که مشاهده میکنید، تراکنش امضا شده و معتبر است؛ پس تنها باید با sendrawtransaction آن را ارسال میکنیم.
$ bitcoin-cli sendrawtransaction 020000000001019a8bb2699fc92968c62d2197649c7d70a6a71d7d8ffb2d70cab8f138d666cec50100000000ffffffff02b88201000000000017a914ffd0dbb44402d5f8f12d9ba5b484a2c1bb47da42870000000000000000236a21636f72736f636f6d706c65746f2e626974636f696e696e616374696f6e2e636f6d0247304402205688399cb5a230f050330e2bc6d04d9864d459f85fec48a0118ca31be9239d530220228d7c04fe9e6eea3690033c01ed222284efaa01b28a9a7cae809bdb32d7ce7a0121020d12775323bbdaf0cb6e9a2b44ae7a591ef5872364e80e363a93d283c10b9e4f00000000 edee419f93521f43259b763ffb42e4b882504534494381b7e18057015a27c548
شما با داشتن آیدی تراکنش، میتوانید در مرورگر بلاک، ساختار تراکنش خود را در بلاکچین بیت کوین بررسی کنید.
سخن پایانی
اگر شما هم یکی از علاقهمندان حرفهای بیت کوین و بلاکچین آن هستید، حتماً میدانید که این شبکه کاربردهای جالبی فراتر از تراکنشهای عادی دارد. یکی از این کاربردها، ثبت پیام روی بلاکچین بیت کوین است که در این مطلب نحوۀ انجام آن را شرح دادیم. این کار میتواند برای اجرای کاربردهای خاص یا صرفاً توسط علاقهمندان، انجام بگیرد.
دیدگاه خود را ثبت کنید