‘Mining’ কি? কিভাবে Bitcoin তৈরি হয়?

‘Mining’ কি? কিভাবে Bitcoin তৈরি হয়?

Bitcoin কি?

ফ্রী Bitcoin আর্নিং এর কয়েকটি সাইট

 

কিভাবে Bitcoin তৈরি হয়?
‘Mining’ কি? কিভাবে Bitcoin তৈরি হয়? কাগজ যেমন প্রচলিত মুদ্রার তৈরির একমাত্র উপায়, তেমনিই ‘Bitcoin ’ শুধু ‘মাইনিং’ এর মাধ্যমে ভার্চুয়ালি তৈরি হয়। তবে একজন বিটকয়েন ব্যবহারকারী বিভিন্ন উপায়ে এই ক্রিপ্টোকারেন্সি উপার্জন করতে পারেন। কিন্তু মাইনিং-ই হচ্ছে বিটকয়েন তৈরির একমাত্র পন্থা।

‘মাইনিং’ কি?
‘Bitcoin মাইনিং’ এর ব্যাপারে সর্বপ্রথম যে বিষয়টি সামনে আসে সেটি হচ্ছে ‘মাইনিং’ ব্যাপারটি খুব বেশি প্রতিযোগিতাপূর্ণ ব্যবসা হওয়ার কারণে ‘Bitcoin ’ ব্যবহারকারীদের মধ্য তুলনামূলক অল্প সংখ্যকই এর সঙ্গে জড়িত। একজন সাধারণ ব্যবহারকারীর জন্য ‘মাইনিং’ তখনই সম্ভব যখন বিষয়টি শুধু ইচ্ছার কারণে করা হচ্ছে, যেখানে লাভের ব্যপারটি খুবই গৌণ। অথবা লাভের উদ্দ্যেশ্যে দক্ষভাবে হাতে এটি তৈরি করা সম্ভব।

কেন এই কাজটিকে ‘মাইনিং’ বলা হয়? মূলত স্বর্ণখনি থেকে মাটি খুঁড়ে স্বর্ণ তুলে আনার মতোই কঠিন কাজ Bitcoin মাইনিং,তাই এই নাম দেওয়া। যে বিটকয়েন ‘মাইনিং’ করে তাকে ‘বিটমাইনার’ বলে। মাইনার বিশেষায়িত (স্পেশালাইজড) হার্ডওয়্যারে চালানো কমপিউটার প্রোগ্রাম ব্যবহার করে ‘মাইনিং’ করে  থাকে।

‘মাইনিং’ এর বিষয়টি জানার আগে গাণিতিক ফাংশন ‘হ্যাশ ফাংশন’ জানা প্রয়োজন। হ্যাশ ফাংশন হচ্ছে যেটি কোন একটা ইনপুট নিয়ে আপাতদৃষ্টিতে সাধারণ (র‍্যান্ডম) একটা আউটপুট দেবে, কিন্তু আউটপুট থেকে ইনপুট বের করা কঠিন,অনেক ক্ষেত্রে অসম্ভবও বটে। এবং একই ইনপুটের বিপরীতে প্রতিবারই ওই একই আউটপুট আসবে। যেমন, p -এর ওপর ফাংশনটা প্রয়োগ করলে hash(p)= q। এখনে q এর অর্থ জানা এবং p অজানা, বেশিরভাগ ক্ষেত্রে p অর্থ জানা অসম্ভব। p এর মান পরিবর্তন না হলে hash(p) সর্বদা q হবে। তবে ভালো ‘হ্যাশ ফাংশনের’ ক্ষেত্রে p ও q এর পৃথক পৃথক মান বহন করে, অর্থাৎ ইউনিক হয়।

Bitcoin  মাইনিং হ্যাশ ফাংশন SHA-256 ব্যবহার করা হয়। SHA (Secure Hash Algorithm) যুক্তরাষ্ট্রের জাতীয় নিরাপত্তা সংস্থা (এনএসএ) এর ডিজাইন করা এই হ্যাশ ফাংশনটি ২০০১ সালে প্রথম প্রকাশ করা হয়। নিরাপত্তার জন্য অত্যন্ত জরুরি এই ব্যবস্থাটি  ভাঙা সম্পূর্ণটাই অসম্ভব।

তত্ত্ব অনুযায়ী, একটা বার্তাকে হ্যাশ করে এনক্রিপ্ট করলে তার ফলাফল হবে n-পরিমাণ বিট (কম্পিউটারের প্রোগ্রামিং ভাষায় বিট অর্থ ০ অথবা ১)।  ব্রুট ফোর্স মেথড অনুযায়ী, খুঁজে বের করা ঐ এনক্রিপ্টেড বার্তার  করেস্পন্ডিং বার্তার 2^n-খানা ধাপ (স্টেপ) থাকবে।  আবার, বার্থডে অ্যাটাক মেথডেও দুটো বার্তা খুঁজে বের করা যায়, যার ফলাফলও n-পরিমাণ বিট, তবে তাতে প্রয়োজন হবে 2^(n/2)খানা ধাপ। এখানে n যত বড়, বিষয়টি তত কঠিন। SHA-256-এ এই গণনাটি করা হয় ৩২ বা ৬৪-বিট word দিয়ে।

 

কম্পিউটার বিজ্ঞানে অনেক সমস্যা সমাধান করার জন্য উপযুক্ত কোন অ্যালগরিদম নেই। সেই ধরনের সমস্যা সমাধানের জন্য সম্ভাব্য অনান্য বিষয়াদি নিয়ে প্রত্যাশিত সমাধান পাওয়া পর্যন্ত কাজ করে যাওয়ার প্রক্রিয়াকে বলা হয় ব্রুট ফোর্স মেথড (Brute Force Method). অনেকটা গায়ের জোরে সমাধান বা জোর যার মুল্লুক তার রকমের।

‘Bitcoin  মাইনিং’-এর ব্যাপারে বলা হয়ে থাকে, কম্পিউটারে প্রোগ্রামিং এর মাধ্যমের কঠিন গাণিতিক সমস্যা সমাধান করে বিটকয়েন তৈরি করা হয়। মূলত, এই SHA-256 ফাংশন ব্যবহার করে একটা একটা করে ব্লক (block) জুড়ে একটা ব্লক চেইন (Block Chain) তৈরি করা হয়। এগুলির বৈশিষ্ট্য হচ্ছে কোনো একটা ব্লক দেখে তার আগের ব্লকটাকে উল্টোপথে তৈরি অসম্ভব, এবং এই ব্লকচেইনটা সম্পূর্ণরূপে যাচাই করা সম্ভব। কারণ একটা ইনপুট থেকে একটার বেশি আউটপুট তৈরি হবে না।

একটা উদাহরণ দিয়ে  পরীক্ষা করে দেখা যাক। http://www.xorbin.com/tools/sha256-hash-calculator  – এই লিঙ্কে  গিয়ে টেক্সটবক্সে লিখুন – কোটেশন বাদে লিখুন “pay me, joe, 25 bitcoins. 000001”। এর পর Calculate SHA256 hash লেখার উপর ক্লিক করুন। অনেক লম্বা একটা হেক্সাডেসিমাল সংখ্যা দেখাবে যার শুরু 4699f0e443b7…………।

এই কাজটি যে কেউ করতে পারে। কিন্তু ‘মাইনিং’ ক্ষেত্রে ঐ কাজটিই গ্রহণযোগ্য হয়, যেটি খুব কমই পাওয়া যায়। আর, কে বা কারা ওই কাজটি করেছে, তারই বা কি প্রমাণ আছে? বলা হল, কাজটি তখনই শুরু হবে যখন এই সংখ্যাটা ০ দিয়ে শুরু হবে। 000001 সংখ্যার 1-কে পরিবর্তন করতে শুরু করেন, 2, 3, 4…. এভাবে করে সংখ্যাটা পরিবর্তন করতে থাকেন। যখন 13 লিখবেন, ফলাফলে তখন জেনারেটেড স্ট্রিং শুরু হচ্ছে ০ দিয়ে – 0ac980……। এইবার সামনে আসছে scarcity (তুলনামূলক অল্প সংখ্যক প্রচেষ্টা সফল হয়) এবং ‘কাজের প্রমাণ’ (proof-of-work), অর্থাৎ, যার মাধ্যমে এই কাজটা করা হয়েছে এটি তার প্রমাণ।

একজন বিটমাইনার নিশ্চয় “pay me joe…” এই ধরনের কিছু ব্যবহার করবে না! তার পরিবর্তে বরং কম্পিউটারের প্রোগ্রামিং কোড, নেটওয়ার্কে ঠিকানা গ্রহণসহ, ইত্যাদি নানা তথ্য ব্যবহার করবে। কিন্তু কোন ব্যক্তির নাম ব্যবহার করা হয়না। অনান্য তথ্যের মধ্যে থাকে লেনদেন সংক্রান্ত তথ্য, টাইমস্ট্যাম্প, এবং সবচেয়ে গুরুত্বপূর্ণ হলো পূর্ববর্তী কাজের বা ব্লকের রেফারেন্স (Block Chain)।

সর্বশেষে, যে স্ট্রিংটা আসবে, এটা দেখে ভেতরে কি তথ্য আছে সেটা বের করা অসম্ভব- অর্থাৎ এই সংখ্যাটি তৈরি করতে গিয়ে কম্পিউটার নিজে থেকে কিছু কাজ করেছে। এটি সহজ মনে হতে পারে। কিন্তু প্রকৃতপক্ষে এটি অতটা সহজ নয়। কারণ, ২০১৩ সাল নাগাদ একটা Bitcoin হ্যাশ আঊটপুটে জন্য শুরুতে ১৪টি শুন্য (০) থাকা প্রয়োজন হতো। অন্যথায় Bitcoin নেটওয়ার্ক আউটপুট গ্রহণ করতো না।

১৪টি শূন্য দিয়ে সংখ্যাটি তৈরি মাত্রই মুহূর্তের মধ্যে পিয়ার-টু-পিয়ার (peer-to-peer) নেটওয়ার্কের বাকি কম্পিউটারে ওই সংখ্যার ইনপুটটা পৌছে যায়। এবং অনান্য ব্যবহারকারীরা আউটপুটটি যাচাই করে একে অন্যকে রিলে করে। এভাবে রিলে হতে হতে পুরো নেটওয়ার্কে ব্যবহার হতে থাকে। আর আউটপুট তৈরিকারককে পুরুস্কার স্বরূপ ২৫টি Bitcoin মুদ্রা দেওয়া হয়। আর কেউ ‘joe’কে ‘bob’এ  পরিবর্তন করতে পারবেনা। করলে, সম্পূর্ণ হ্যাশ আউটপুটটি  পরিবর্তন হয়ে যাবে।

আর শুরুতে ১৪টি শূন্য (০) রাখা এতই কি কঠিন? ঠিক এই মুহূর্তে,বিশ্বব্যাপী সব বিটমাইনার এক যোগে সেকেন্ডে প্রতি ৩০ ট্রিলিয়ন বার চেষ্টা করে প্রতি দশ মিনিটে একটা করে আউটপুট তৈরি বের করতে পারে, যে কিনা ২৫টি Bitcoin পুরুষ্কার পায়।

আর মাইনিং-এর ব্যাপারটি এতটি কঠিন কেন? কারণ ডিফিকাল্ট লেভেলটি নির্ধারিত গোটা নেটওয়ার্কের আওতায় থাকা সব Bitcoin ব্যবহারকারীদের নিয়ে। প্রত্যেক মাইনার নিজে থেকে গণনা বা অনুমান করে সে কতোটা ‘ডিফিকাল্টি অফ সল্যুশন’ (difficulty of solution)  গ্রহণ করবে এবং নেটওয়ার্কজুড়ে রিলে করবে।

প্রত্যেক মাইনার একই সিদ্ধান্তে আসার জন্য নেটওয়ার্কজুড়ে গ্রহণ করা সর্বশেষ (মোস্ট রিসেন্ট) সল্যুশনগুলোকে বর্তমান টাইমস্ট্যাম্পের সঙ্গে একটি নির্দিষ্ট টাইমস্ট্যাম্পের সঙ্গে চেক করে। এক্ষেত্রে টাইমস্ট্যাম্পটি হবে প্রতি দু’সপ্তাহে ২০১৬ টা সল্যুশন পাওয়া অর্থাৎ একটি সল্যুশন থেকে অন্যটির মধ্যে গড়ে ১০ মিনিটের একটি বিরতি থাকে।

এক্ষেত্রে সময়-বিরতি ১০ এর নিচে নেমে আসার অর্থ হচ্ছে মধ্যে ডিফিকাল্টি লেভেল তুলনামূলক সহজ হয়ে পড়েছে এবং বেশি পরিমাণ সল্যুশন নেটওয়ার্কে যোগ হচ্ছে। তখন নতুন সময়-বিরতিকে চলমান সময় বিরতির দ্বিগুণ করে দেওয়া হয়। যাতে করে গড়ে ১০ মিনিটের কম সময়ে নতুন কোন সল্যুশন নেটওয়ার্কে যোগ না হতে পারে।

Bitcoin মুদ্রা ২১ মিলিয়নে সীমাবদ্ধ
Bitcoin সম্পর্কিত একটি বিতর্কিত বিষয় হচ্ছে সময়ের ব্যবধানে বিটকয়েন মুদ্রার পরিমাণ ২১ মিলিয়নে এসে সীমাবদ্ধ হয়ে পড়বে। যেটি আর বাড়ার নয়।  প্রতি ৪ বছর পরপর মোট বিটকয়েন সংখ্যায় অর্ধেকে নেমে আসবে, এবং ২১৪০ সাল নাগাদ মোট বিটকয়েন সংখ্যা ২১ মিলিয়নের এসে থেমে যাবো, যেটি আর বাড়বে না।

যদি Bitcoin মূল্য বৃদ্ধি পায় অদূর ভবিষতে বিটকয়েনের ক্ষুদ্র একটি অংশ একটি টয়োটা পাজোরো কেনার জন্য যথেষ্ট হতে পারে। প্রতি Bitcoin ১০০ মিলিয়ন ভাগে ভাগ করা যাবে, যেটিকে ‘সাতোশি’ বলে। সুতরাং, সর্বমোট Bitcoin একক হবে ২,১০০,০০০,০০০,০০০,০০০ঃ ২.১ কোয়াড্রিলিয়ন অথবা ২৫০.৮৯৯ বা ২৫০.৯ । যেটি কিনা কয়েকটি কারণে হতে পারে।

প্রথমতঃ এই সংখ্যাটি ২৬৪-১ থেকে তুলনায় বেশ ছোট। আর আর ২৬৪-১ কম্পিউটারে ধারণ করতে পারা আদর্শ পূর্ণ সংখ্যাগুলোর মধ্যে শুন্য ধারণকৃত সংখ্যার মধ্যে সবচেয়ে বড় সংখ্যা।

দ্বিতীয়তঃ ২৫০.৯০  সংখ্যাটি কম্পিউটারে ব্যবহৃত ফ্লোটিং পয়েন্ট রিপ্রেজেন্টেশন (floating point representation) রীতিতে সম্ভাব্য সবচেয়ে বড় পূর্ণ সংখ্যার থেকে কিছুটা ছোট। ফ্লোটিং পয়েন্ট রিপ্রেজেন্টেশন হল এক প্রকার বাইনারি ভার্শনের বৈজ্ঞানিক সঙ্কেত-লেখন (scientific notation). দশমিক সংখ্যা পরিচালনায় কম্পিটার পূর্ণসংখ্যার (integer) পাশাপাশি ফ্লোটিং পয়েন্ট রিপ্রেজেন্টেশন (floating point representation) রীতি (format) ব্যবহার করে। বৈজ্ঞানিক সঙ্কেত-লেখনের মাধ্যমে ভিন্নতা সত্ত্বেও এধরনের সংখ্যাগুলো মোটামুটি সঠিকভাবে উপস্থাপন করা যায়।

যেহেতু ফ্লোটিং পয়েন্ট সঙ্কেত-লেখন এক ধরনের বাইনারি সঙ্কেত-লেখন, সুতরাং যখন কম্পিউটারে ৯.৬২৫ লেখা হবে, কম্পিউটার তখন সঞ্চিত করে ১.০০১১০১ * ১০১১ অথবা ০১০০০০০০ ০০১০০০১১ ০১০০০০০০ ০০০০০০০০ ০০০০০০০০ ০০০০০০০০ ০০০০০০০০ ০০০০০০০০, যেটি ‘হাই প্রিসিশন সিরিয়ালাইজড ফর্মে’ (high-precision serialized form) একই ফলাফল দেখায়। ‘হাই প্রিসিশন’ হল ফ্লোটিং পয়েন্ট ইন্সটল করে যে পরিমাণ ডাটা স্টোর করা হয়, সেই ডাটা রিড করার সময় কম্পিঊটার অতিরিক্ত কোন বিট নষ্ট না করে সঠিকভাবে উপস্থাপন করে।

‘হাই প্রিসিশন ফর্মে’ সংখ্যার সূচক ব্যতীত সহজ সংখ্যাটির বিটের পরিমাণ ৫২ । অর্থাৎ হাই প্রিসিশন ফর্মে ফ্লোটিং পয়েন্টে ২৫৩ পর্যন্ত ইনটিজারগুলো স্টোর করার জন্য বেশ যথেষ্ট, আর সংখ্যা যদি এটিকে অতিক্রম করে তাহলে শেষ পর্যায়ে ডিজিট কেটে যেতে শুরু করবে। আর, সূচকের বিবেচনায় Bitcoin ২৫০.৯ সাতোশি সর্বোচ্চ সংখ্যার ঠিক কিছুটা কম। এভাবেই পরিমাণের সীমাবদ্ধতায় বিটকয়েনের ‘scarcity’ বজায় রাখা হয়।

তাছাড়া, ইনটিজার থাকা সত্ত্বেও ফ্লোটিং পয়েন্ট ভ্যালুকে এত গুরুত্ব দেয়া হয়? কারণ অনেক উচ্চতর প্রোগামিং ল্যাঙ্গুয়েজ, যেমন জাভাস্ক্রিপ্ট, নিম্নমানের ‘ফ্লোটিং পয়েন্ট’ ও ‘ইনটিজার রিপ্রেজেন্টেশন’ প্রকাশ করেনা। তাছাড়া  সাতোশি নাকামোতো যদি ২১ মিলিয়ন এর পরিবর্তে ২১০ মিলিয়ন বেছে নিতো তাহলে অনেক ভাষায় Bitcoin প্রোগ্রামিং আজকের দিনের তুলনায় আরো বেশি কঠিন হতো।

গোল্ডম্যান স্যাচ গ্লোবাল ইনভেস্টমেন্ট রিসার্চ কর্তৃক বিশ্ব সামষ্টিক গবেষণা (গ্লোবাল ম্যাক্রো রিসার্চ) এর উপর ২০১১ সালের মার্চে প্রকাশিত ‘Top of Mind’ নামক জার্নালে বিটকয়েন লেনদেন পরিচালনাকারী ওয়েবসাইট Coinbase-এর সহ-প্রতিষ্ঠাতা ফ্রেড ইর্স্যাম এক সাক্ষাতকারে বলেন;

“এটা সত্য যে বিটকয়েনের একটি সংখ্যার সীমাবদ্ধতা আছে। কিন্তু এটা ঠিক নয় বিটকয়েনের  সরবারহ শেষ হয়ে যাবে। এটা একটা মিথ। বিটকয়েন ৮ দশমিক সংখ্যাতে বিভাজ্য। অর্থাৎ, অনেক বেশি সংখ্যার একক তৈরি করা যেতে পারে, যেটি বিটকয়েনের জন্য মুদ্রা হিসেবে ব্যবহার হতে যথেষ্ট। এবং এমনকি আরো বেশি প্রয়োজন হয় সেটি  করা যেতে পারে। যার জন্য প্রয়োজন হবে নেটওয়ার্কের গাণিতিক শক্তির (computing power) ৫১% ব্যবহারকারীদের তাদের সফটওয়্যার পরিবর্তন করে সেটিকে গ্রহণ করা”।

“অতীতেও সফটওয়্যারের পরিবর্তন কয়েকবার হয়েছে। এ ধরনের পরিবর্তনের ব্যাপারে ডেভেলপারদের ফোরামে আলোচিত  হয়েছে এবং শেষ পর্যন্ত  মাইনিং সম্প্রদায় – যারা কিনা পুরো নেটওয়ার্কটি রক্ষণাবেক্ষণ করে – এ ব্যাপারে ঐক্যমতে পৌছেছে”।

তথ্যসুত্র: বাংলানিউজ২৪ ডটকম

 

 

 

 

Comment (1)

  1. Mdsamnur Rahman Oct 18, 2014

Leave a Reply

এই সাইটের কোন লেখা কপি করা সম্পুর্ন নিষেধ