Bitcoin OP_RETURN ব্যাখ্যা: data carrier, nulldata ও খরচ-অযোগ্য আউটপুট
OP_RETURN কীভাবে প্রকাশ্য তথ্য লেখে, আউটপুটটি কেন খরচ করা যায় না, Bitcoin Core 31.1-এর relay নীতি consensus থেকে কীভাবে আলাদা, এবং witness inscription-এর সঙ্গে এর পার্থক্য জানুন।
এই গাইডেOP_RETURN লকিং স্ক্রিপ্টে তথ্য রাখে
সংক্ষিপ্ত সারাংশ
OP_RETURN Bitcoin লেনদেনের আউটপুট স্ক্রিপ্টে প্রকাশ্য তথ্য যোগ করে। Bitcoin Core যে আউটপুটের স্ক্রিপ্ট OP_RETURN দিয়ে শুরু হয় তাকে প্রমাণযোগ্যভাবে খরচ-অযোগ্য ধরে এবং UTXO সেটে রাখে না। বর্তমান relay সীমা প্রতিটি নোডের স্থানীয় নীতি; পুরো নেটওয়ার্কের জন্য consensus-নির্ধারিত payload সীমা নয়।
OP_RETURN লকিং স্ক্রিপ্টে তথ্য রাখে
Bitcoin আউটপুটে পরিমাণ এবং scriptPubKey নামের লকিং স্ক্রিপ্ট থাকে। nulldata নামেও পরিচিত OP_RETURN আউটপুট OP_RETURN opcode দিয়ে শুরু হয় এবং পরে byte push করতে পারে। লেনদেন ব্লকে গেলে byte-গুলো আউটপুটের অংশ হিসেবে প্রকাশ্যে নথিভুক্ত হয়। এই কাঠামো আলাদা data layer, token balance বা ব্যক্তিগত বার্তা তৈরি করে না।
কেন আউটপুটটি আবার খরচ করা যায় না
OP_RETURN এমন opcode যাতে execution পৌঁছালে স্ক্রিপ্ট ব্যর্থ হয়। তাই এরকম স্ক্রিপ্টে শুরু হওয়া আউটপুট খরচ করার চেষ্টা সফল হতে পারে না। Bitcoin Core একে খরচ-অযোগ্য হিসেবে চিহ্নিত করে এবং কখনো ব্যবহার করা যাবে না এমন coin UTXO সেটে না রেখেই বাদ দিতে পারে। Bitcoin Core 31.1-এর script.h দেখুন। Bitcoin Core 31.1 script implementation.
স্ক্রিপ্ট payload-এর চেয়ে বড়
Data-carrier সীমা কেবল অ্যাপ্লিকেশনের byte গোনে না। কাঁচা আউটপুট স্ক্রিপ্টে OP_RETURN opcode, push নির্দেশ ও তার দৈর্ঘ্যের encoding, এবং payload সবই থাকে। ৮০ byte payload-এর জন্য ৮৩ byte স্ক্রিপ্ট হতে পারে: opcode-এর ১ byte, OP_PUSHDATA1 header-এর ২ byte, এবং ৮০ byte তথ্য। পুরোনো নির্দেশিকার ‘৮০ byte’ প্রায়ই payload বোঝায়; নতুন সেটিং পুরো স্ক্রিপ্ট গুনতে পারে।
Bitcoin Core 31.1-এর data-carrier ডিফল্ট নীতি
Bitcoin Core 31.1-এ -datacarrier ডিফল্টভাবে চালু এবং -datacarriersize-এর সীমা 100,000 byte। একই লেনদেনের সব data-carrier আউটপুটের কাঁচা scriptPubKey আকার যোগ করে এই সীমা। একাধিক NULL_DATA আউটপুট একই সীমা ভাগ করে, opcode ও push encoding-ও গণনায় পড়ে। Core 30.0 পুরোনো ৮৩-byte স্ক্রিপ্ট সীমা বদলে 100,000-byte সমষ্টিগত সীমা চালু করে এবং একাধিক আউটপুট অনুমোদন করে; Core 31.1 সেই ডিফল্ট রেখেছে। Core 31.1 বিকল্প, নীতি বাস্তবায়ন এবং 30.0 release notes দেখুন।

Relay নীতি ও consensus আলাদা প্রশ্নের উত্তর দেয়
প্রতিটি নোড data-carrier relay বন্ধ করতে বা স্থানীয় সীমা কমাতে পারে; অন্য নোড বা সফটওয়্যার সংস্করণে সেটিং ভিন্ন হতে পারে। কোনো নোড mempool-এ লেনদেন না নিলে সেটি স্থানীয় নীতিতে relay না করার সিদ্ধান্তও হতে পারে; consensus লেনদেনটি নিষিদ্ধ করেছে—এমন নয়। Bitcoin Core standardness পরীক্ষায় data limit প্রয়োগ করে এবং ব্লক যাচাইয়ে আলাদা করে consensus নিয়ম পরীক্ষা করে। Core consensus transaction checks. See Bitcoin Core 31.1 mempool standardness implementation.
আউটপুটের মূল্য হারায়, ফি আলাদাভাবে হিসাব হয়
OP_RETURN আউটপুটে মূল্য দেওয়া সম্ভব, কিন্তু তা ফেরত পাওয়া যায় না এবং স্থায়ীভাবে খরচ-অযোগ্য থাকে। ওয়ালেট সাধারণত এর মূল্য শূন্য রাখে। 1,000 sat দিলে সেটি স্বয়ংক্রিয়ভাবে miner fee হয় না। ফি এখনও সব input-এর যোগফল থেকে সব output-এর যোগফল বাদ দিয়ে হিসাব হয়। স্ক্রিপ্টের byte লেনদেনের weight নেয় এবং একই sat/vB হারে ফি বাড়াতে পারে। Bitcoin লেনদেন ফি নির্দেশিকা দেখুন।
একাধিক তথ্য আউটপুট সীমা বাড়ায় না
Bitcoin Core 31.1 একাধিক standard NULL_DATA আউটপুট অনুমোদন করে, কিন্তু স্ক্রিপ্টের মোট আকার একই লেনদেনের সীমায় যোগ হয়। payload ভাগ করলেও জায়গা বাড়ে না এবং প্রতিটি অতিরিক্ত আউটপুট লেনদেনের তথ্য ও ব্লক weight বাড়ায়। relay নির্ভর করে লেনদেনের weight, ফি এবং নোডের অন্যান্য standardness নীতির ওপর। একটি ওয়ালেট বা explorer লেনদেন নিলেই পুরো নেটওয়ার্কে ছড়ানোর নিশ্চয়তা নেই।
OP_RETURN ও Taproot witness inscription আলাদা
লেনদেন তৈরির সময় OP_RETURN তথ্য আউটপুটের scriptPubKey-তে থাকে। SegWit witness তথ্য প্রতিটি input-এর জন্য আলাদা serialize হয়; BIP 141 একে input-সংশ্লিষ্ট stack data বলে। Taproot script-path spend-এ স্ক্রিপ্ট ও control block input witness-এ প্রকাশ হতে পারে। Ordinals সফটওয়্যার প্রকাশিত স্ক্রিপ্টে একটি envelope-কে নিজস্ব application convention অনুযায়ী inscription হিসেবে পড়তে পারে; এটি nulldata output-এর মতো নয়। BIP 141, BIP 341 ও [Bitcoin Ordinals নির্দেশিকা](/learn/bitcoin-ordinals-inscriptions-satoshi-numbering-witness-data-explained) দেখুন।
ব্যবহারের আগে নীতি, মূল্য ও গোপনীয়তা যাচাই করুন
আপনি যে Bitcoin Core সংস্করণ ও স্থানীয় সেটিংসের ওপর নির্ভর করছেন তা শনাক্ত করুন। সম্পূর্ণ কাঁচা আউটপুট স্ক্রিপ্টের আকার, মোট লেনদেন weight, খরচ-অযোগ্য আউটপুটে দেওয়া মূল্য এবং miner fee আলাদাভাবে হিসাব করুন। consensus যেকোনো payload byte-কে অর্থ দেয় না; প্রোটোকল বা প্রাপক বিন্যাসটি বোঝে কি না যাচাই করুন। ব্লকচেইনে লেখা তথ্য প্রকাশ্য। আউটপুট ও ফেরত বুঝতে Bitcoin UTXO ও coin control নির্দেশিকা দেখুন।
সাধারণ প্রশ্ন
Q1Bitcoin consensus কি OP_RETURN-কে ৮০ data byte-এ সীমাবদ্ধ করে?
না। ৮০ byte পুরোনো standardness-নীতি উদাহরণের payload মান, সার্বজনীন consensus সীমা নয়। Bitcoin Core 31.1 ডিফল্টে কাঁচা data script-এর মোট 100,000 byte সীমা ব্যবহার করে; নোড নিজের নীতি বদলাতে পারে।
Q2বড় OP_RETURN কি লেনদেন ফি বাড়ায়?
বাড়াতে পারে। স্ক্রিপ্টের byte লেনদেন weight বাড়ায়, তাই একই sat/vB হারে ফিও বাড়তে পারে। খরচ-অযোগ্য আউটপুটে দেওয়া sat আলাদাভাবে হারায় এবং miner fee নয়।
Q3OP_RETURN কি Ordinals inscription-এর মতোই?
না। OP_RETURN আউটপুট স্ক্রিপ্টে থাকে এবং আউটপুটকে খরচ-অযোগ্য করে। সাধারণ Taproot inscription input witness-এর script-path তথ্যতে থাকে, যা Ordinals সফটওয়্যার নিজস্ব নিয়মে ব্যাখ্যা করে।
উৎস ও আরও পড়ুন
সমস্যা জানান
এই নিবন্ধের লিংকসহ একটি ইমেল তৈরি হবে। পাঠানোর পরেই Mark প্রতিবেদনটি পাবে
দ্রুত যাচাই
গাইডটি পড়ার পর 3টি প্রশ্নে নিজেকে যাচাই করুন
প্রশ্ন 01
Bitcoin Core 31.1-এর ডিফল্ট -datacarriersize কী মাপে?
ব্যাখ্যা দেখতে একটি উত্তর বেছে নিন
অপশন শব্দকোষ
যে অবস্থায় কোনো অপশনের স্ট্রাইক মূল্য অন্তর্নিহিত সম্পদের বাজারদামের কাছাকাছি থাকে। তখন অন্তর্নিহিত মূল্য কম বা শূন্য হলেও বাকি সময় ও অনিশ্চয়তার কারণে প্রিমিয়াম থাকতে পারে।
বিস্তারিত গাইড পড়ুনকল অপশনযে চুক্তি তার ধারককে স্ট্রাইক মূল্যে অন্তর্নিহিত সম্পদ কেনার অধিকার দেয়, বাধ্যবাধকতা নয়। চুক্তিটি প্রয়োগ ও বরাদ্দ হলে বিক্রেতা সংশ্লিষ্ট দায় বহন করে।
বিস্তারিত গাইড পড়ুনপুট অপশনযে চুক্তি তার ধারককে স্ট্রাইক মূল্যে অন্তর্নিহিত সম্পদ বিক্রির অধিকার দেয়, বাধ্যবাধকতা নয়।
বিস্তারিত গাইড পড়ুন