Back to blog
system designAugust 4, 201810 min read

ব্লকচেইন? সে আবার কী? What is Blockchain?

A introduction to blockchain network, how it works and why it works in Bangla.

#system design#blockchain#web3#bitcoin#bangla
Cover illustration for "Blockchain? What is this thing?"
Photo by André François McKenzie on Unsplash

First published on প্রোগ্রামিং পাতা on Medium.

আল্টিমেট অখাটি বাংলায় ব্লকচেইন ১০১

আজ শুক্রবার, বাংলাদেশে সব ব্যাংক এবং ব্যবসা প্রতিষ্ঠানই বন্ধ, আগামীকালও বন্ধ থাকবে। কেনই বা থাকবে না? সবারইতো একটু আরাম আয়েশ এবং ছুটি দরকার লাগে। তো আমার হঠাৎ টাকার প্রয়োজন পড়লো এবং ব্যাংকে সব টাকা। তো এটি এম বুথ তো আর বন্ধ থাকে না? তা অবশ্যই থাকে না কিন্তু এটিএম বুথেও টাকা তোলার একটা সর্বোচ্চ লিমিট আছে। ফলাফল আমি আগামী রবিবার পর্যন্ত কোনো লেনদেন করতে পারছি না। তখনই জেমসন লুপ্প এর একটা টুইটের কথা মনে পরে গেলো।

Jameson Lopp Tweet on Bitcoin
Jameson Lopp Tweet on Bitcoin

টুইটাতে উনি দেখিয়েছিলেন মার্কিন যুক্তরাষ্ট্র এ মাত্র একটি সরকারী ছুটির দিনে বিটকয়েন ট্রান্সেকশনের মূল্য ১ বিলিয়ন মার্কিন ডলারের ছাড়িয়ে গিয়েছিলো এবং সেদিনই ৭ বিলিয়ন মার্কিন ডলারের সমমানের বিটকয়েনের লেনদেন হয়েছিলো। এবার বুঝেন একদিন ব্যাংক বন্ধ থাকলে ব্যবাসায় প্রতিষ্ঠানগুলোর কী পরিমাণ লস হয়। এই লসগুলো পোষানোর জন্য ব্যাংকতো আর প্রতিদিন খোলা থাকতে পারবে না, কারণ যেইখানে বিশ্বে এখন ৩ দিন কর্ম সপ্তাহ করার তোরজোড় করা হচ্ছে সেখানে ব্যাংকাররা তো আর সপ্তাহের ৭ দিনই কাজ করবে না। আর ব্যাংকাররা না থাকলে ব্যাংকতো আর এমনেই চলবে না, সব বড় বড় ট্রান্সকেশন ব্যাংকারদের পারমিশনের জন্য আটকে থাকবে। তাই এই বড় সমস্যার একটা বড় সমাধান হচ্ছে ব্লকচেইন।


আপনি যদি বনবাসধারী অথবা সন্যাসী না হয়ে থাকেন, তাহলে ব্লকচেইন, ডিসেন্ট্রালাইজিশন অথবা বিটকয়েন এর নাম তো অবশ্যই শুনেছেন। এই নামগুলো বর্তমানে ইন্টারনেটের হট টপিকস। ভাই কী বলেন? Meme থাকতে এগুলা কেমন হট টপিকস হয়? হয় রে ভাই, কয়েনের নেশায় পরলে সবই হয়। আমি বিটকয়েনের সাথে পরিচিত ২০১৩ থেকে, মাথা চাপড়াই এখন কেন যে তখন বিটকয়েনকে দাম দিলাম না এটা ভেবে। ব্লকচেইন সিস্টেমটার সাথে পরিচয় হই ২০১৭ তে আমার ইরানীয়ান হাউসমেইট থেকে। এরপর থেকে এই জিনিশ নিয়ে ঘাঁটাঘাঁটি শুরু করি।

আচ্ছা, তাহলে আসলে কী এই ব্লকচেইন? পরে বলতেছি। চলেন আগে দেখি কেন এই ব্লকচেইন? কেন এই সিস্টেমটাকে মানুষ এত দ্রুত গ্রহণ করছে?

একদিন আমি গেলাম একটা সরকারী ব্যাংকে (নামটা বললাম না ইচ্ছা করেই)। আমি ১ লাখ টাকা পাঠাবো একজনের একাউন্টে। টাকাটা ট্রান্সফারের সময় যে যে প্রবলেমগুলোর সম্মুখীন হলাম -

১. আমার জাতীয় পরিচয় পত্র/ পাসপোর্ট এর ফটোকপি দিতে হয়েছে

২. কেন টাকা পাঠাবো? ওই ব্যাক্তি আমার কী হয়? এগুলার উত্তর দিতে হইছে

৩. ২ টা ব্যাংকারের মাধ্যমে আমার চেক পাস হওয়ার পর টাকাটা ট্রান্সফার হয়েছে

উপরের ১ এবং ২ নম্বর সমস্যাটায় আমার প্রাইভেসি লংঘন হয়েছে বলে আমি মনে করি। ৩ নম্বরটায় ব্যাংকার আমার একাউন্টে ১ লাখ টাকা আছে কিনা তা চেক করেছে, থাকলে আমি যাকে টাকা পাঠাবো তার একাউন্টে টাকাটা ট্রান্সফার করে দিয়েছে।

প্রবলেমগুলোকে বাদ দিলে বিহাইন্ড দ্যা সীন, এ হলো টা কী? আমি এবং আমি যাকে টাকা পাঠিয়েছি, দুইজনই একটা চিনি না জানি না ব্যাংকের ম্যানেজারকে বিশ্বাস করেছি আমার টাকা নিয়ে। এই টাকাটার কোনো রিয়েল মুভমেন্ট ছিলো না, ম্যানেজার যেটা করেছে সেটা হচ্ছে ব্যাংকের একটা রেজিস্টারে টাকার ট্রান্সেকশনটা এন্ট্রি করে রেখছে। এমন একটা রেজিস্টার, যেটার ডেটার সত্যতা আমার অথবা অন্য কোনো ব্যাক্তির যাচাই করার কোনো ক্ষমতা নেই।

কী হবে যদি ম্যানেজারের কম্পিউটার/ সার্ভার/ রেজিস্টারটা ধংস হয়ে যায় কোনো কারণে?

কী হবে যদি ম্যানেজার ইচ্ছাকৃত অথবা অনিচ্ছাকৃতভাবে ১ লাখ এর যায়গায় ১০ লাখ লিখে ফেললো? সতত্য যাচাই করার কোনো উপায় থাকবে না আর।

এবং এটাই আমাদের বর্তমান সিস্টেমের সবচেয়ে বড় সমস্যা।

আমরা যুগযুগ ধরে তৃতীয় ব্যক্তি অথবা কোম্পানির উপর ভরসা করে আসছি। সমস্যাটা কোথায় এখানে? সমস্যাটা হচ্ছে, যদি সেই একটি ব্যক্তি অথবা কোম্পানি করাপ্টেড হয়ে যায় তাহলে পুরো সিস্টেমটাই করাপ্টেড হয়ে যাবে। যার বাস্তব প্রমাণ দেখা যাচ্ছে আমাদের দেশের ব্যাংকিং খাতে।

এই সমস্যাটা থেকে বের হবার জন্যই ব্লকচেইন। একটা কমপ্লিট ডিসেন্ট্রালাইজড সিস্টেম, অর্থাৎ কোনো একটি ব্যক্তি অথবা কোম্পানি এই সিস্টেমকে কন্ট্রোল করে না, এই সিস্টেমের প্রতিটি ব্যবহারকারী ব্লকচেইনকে কন্ট্রোল করে, যার ফলে সিস্টেম করাপ্টেড হবার চান্স নাই বললেই চলে।


তাহলে কীভাবে ব্লকচেইন কাজ করে?

এই প্রশ্নের উত্তর দিতে হলে আমাদের আরও গভীরে ঢুকতে হবে। প্রশান্ত মহাসাগরের মতো এত গভীরে যেতে হবে না। বর্তমান বিটকয়েন ব্লকচেইনের সাইজ মাত্র ১৭৩ গিগাবাইট।

চলেন আমরা ব্যাংকের রেজিস্টার রাখার একটা বিকল্প দেখি, যেটা পুরোপুরি ডিসেন্ট্রালাইজড। তবে এটার জন্য ১-২ জন ব্যক্তি দিয়ে হবে না, নূন্যতম ৩ জনতো অবশ্যই লাগবে যারা একে অপরের উপর নির্ভর করতে পারবে। আমরা এক্ষেত্রে ৮ জন পেয়ে গেলাম। এই ৮ জন একে অপরের উপর নির্ভর করে নিজেদের লেনদেনের একটা রেজিস্টার মেইন্টেইন করবে। প্রত্যেকের একাউন্ট ডিটেইলস প্রত্যেকের কাছে থাকবে। মজার ব্যাপার হচ্ছে, কেউ কারো পরিচয় জানবে না।

How blockchain works - ledger
Decentralized anonymized ledger

চলেন শুরু করি একটি নোটবুক থেকে, বাজারে কিনতে পাওয়া যায় যে ৪০-৫০ টাকা করে লিখালিখি করার জন্য সেগুলার কথা বলছি। উপরের ৮ জনের কাছেই একটা করে নোটবুক থাকবে। প্রতিটা পেজে শুধু ৮টা ট্রান্সেকশন লিখা হবে। প্রসেস শুরু হয়ে গেলে সবাই এই খালি পেজ এ লিখা শুরু করবে।

এখন ধরেন, #৫ #১ কে ২০ টাকা পাঠাবে। এই ট্রান্সেকশনটা করার জন্য #৫ সবাইকে বলবে যে সে #১ কে ২০ টাকা পাঠাবে, সবাই যেনো এটা নোট করে। সবাই তখন #৫ এর একাউন্ট ব্যালেন্স চেক করবে, যদি পর্যাপ্ত পরিমাণ টাকা থাকে তাহলে তখন সবাই তাদের নোটবুকের একটা খালি পেজে এই ট্রান্সেকশনটা লিখে রাখবে এবং ট্রান্সেকশনটা কমপ্লিট হবে।

একটা সময় এই দলের সবারই একে অপরকে টাকা পাঠানোর প্রয়োজন পরবে এবং প্রতিবারই টাকা পাঠানোর আগে সবাইকে বলবে যে সে অমুককে এত পরিমাণের টাকা পাঠাচ্ছে। এভাবে যখন ৮টা ট্রান্সেকশন কমপ্লিট হয়ে যাবে তখন তাদের কাছে অই পেজে লিখার আর যায়গা থাকবে না। তখন তাদের নতুন পেজ লাগবে, কিন্তু তার আগে অই পেজের ট্রান্সেকশন হিস্টোরি আর কেও যাতে মডিফাই করতে না পারে তার জন্য অই পেজটাকে সীল করতে হবে। তখন নেটওয়ার্কের সবাই একটা ইউনিক নাম্বার দিয়ে অই পেজটাকে সীল করার জন্য সম্মতি প্রকাশ করবে। সীল করার পর ওই পেজটাকে আর কখনো কেউ পরিবর্তন করতে পারবে না, কারণ সবাই এই সীলটাকে বিশ্বাস করে। তারমানে এই পেজের ডেটাকেও সবাই বিশ্বাস করে।

এই সীল করার ব্যাপারটাকে ব্লকচেইনের ভাষায় মাইনিং বলে।


এখন প্রশ্ন আসে কীভাবে এই সীলটা করবো?

এই সীল করার জন্য একটা ম্যাশিনের প্রয়োজন। ম্যাশিনটা কেমন? মনে করেন চার দিকে ঢাকা একটা বক্স, এটার বাম দিক থেকে আপনি একটা ইট দিলেন, সেটা ডান দিক থেকে কাঠ হয়ে বের হবে। নাহ, জিনিসটা অবাস্তব। কিন্তু এই সীল করার ম্যাশিনটা এইভাবেই কাজ করে। আর একটু বুঝিয়ে বলি,

মনে করুন, আমরা এই ম্যাশিনটার বাম দিক থেকে নাম্বার ১০ ইনপুট দিলাম, ডান দিক থেকে 4a44d এরকম একটা শব্দ বের হয়ে আসলো। এখন এই ম্যাশিনটা ১০ কে কীভাবে 4a44d বানালো, সেটা কেও জানে না। 4a44d, শুধু এই শব্দটা দিয়ে কেউ কখনো বলতে পারবে না বাম দিক থেকে ঠিক কোন নাম্বারটার কারনে এই শব্দটা আসছে। কিন্তু ঠিক যতবারই নাম্বার ১০ ইনপুট দেয়া হবে ম্যাশিনটা ততবারই 4a44d আউটপুট দিবে। এই ম্যাশিনটাকে বলে হ্যাসিং ফাংশন।

SHA-256 Hashing Function
SHA-256 Hashing Function

কিন্তু আসল ব্যাপার হচ্ছে এই 4a44d ইউনিক নাম্বার দিয়ে আমরা আমাদের নোটবুকের পেইজ সীল করতে পারবো না। কেন? কারন এই নাম্বারটা ইউনিক না। ব্লকচেইন একটি শব্দ তখনই ইউনিক হবে যখন ওই শব্দটার প্রথমে ৩টা শূন্য (০) থাকবে।

আমি আগেই বলেছি এই ম্যাশিনটার ভিতরে কীভাবে কেমনে কাজ করে আমরা তা কিছুই জানি না। শুধু জানি এটা ইট দিলে ওইটাকে কাঠ বানিয়ে দেয়। তাহলে এখন প্রথমে তিনটা শূণ্য কীভাবে আসবে? কোন নাম্বার দিলে আসবে? এটা বের করার জন্য বিশ্ব এখন পর্যন্ত যত নাম্বার আছে সবগুলো এই ম্যাশিনে দিয়ে ট্রাই করতে হবে যতক্ষণ পর্যন্ত না আমরা প্রথমে ৩টা শূণ্য পাবো। তো আমাকে বলেন এত সময় এই দুনিয়ার কার আছে? মাইনারদের কম্পিউটারের। মাইনারদের কম্পিউটার সারাদিন ২৪ ঘন্টাই এদের প্রসেসর এবং গ্রাফিক্স কার্ডের পাওয়ার ব্যবহার করে হ্যাশিং করে যায়, যদি মিল্লা যায়। সত্যিকারে, কয়েক হাজারবার ট্রাই করার পরেই এই ইউনিক হ্যাশ পাওয়া যায়। যদিও বিটকয়েনের ক্ষেত্রে সেটা কয়েক মিলিয়নও হতে পারে। এই ইউনিক কোডটা অনেকটা এরকম-

SHA-256 Unique Hash Outcome
SHA-256 Unique Hash Outcome

এই ইউনিক হ্যাশ নাম্বারটা বের করা খুবই সময় সাপেক্ষ এবং ঝামেলার, কিন্তু একবার বের হয়ে গেলে এই হ্যাশ নাম্বারটার ভিতর যে ডেটা আছে তা ভ্যারিফাই করা খুবই সহজ হয়ে যায়, কারন তখন নেটওয়ার্কের সবাই জানবে যে Welcome to Blockchain Demo 2.0! এই ডেটাটা ইনপুট দিলে সবসময়ই তিন শূণ্য দিয়ে একই হ্যাশ নাম্বার আসবে।

এই হ্যাশিং ফাংশনের সবচেয়ে ভাল দিকটা হচ্ছে, আউটপুট দিয়ে অরিজিনাল ইনপুট খুজে বের করা খুবই কষ্টসাধ্য, কিন্তু ইনপুট এবং আউটপুট যদি জানা থাকে তাহলে ম্যাশিনে সেই ইনপুট দিয়ে খুব সহজেই হ্যাশ ভ্যারিফাই করা যাবে যদি আউটপুট সেইম থাকে।


এখন কীভাবে এই হ্যাশিং ফাংশন ব্যবহার করে আমাদের পেজ সীল করবো?

ধরেন, আমি আপনাকে ২টা বক্স দিলাম, একটা তে ১০০১২ নাম্বারটা লিখা আছে, এখন আপনাকে ভাবতে হবে দ্বিতীয় বক্সে কোন নাম্বারটা লিখলে এবং সেটা ১০০১২ এর সাথে যোগ করে সেটা হ্যাশিং ফাংশনে দিলে প্রথমে তিনটা শূণ্য থাকবে এমন হ্যাশ আউটপুট হিসেবে আসবে।

এক্ষেত্রে আপনাকে যত নাম্বার আছে সবগুলো নাম্বার দিয়ে চেষ্টা করে একটা ইউনিক হ্যাশ তৈরি করতে হবে, যেটা নেটওয়ার্ক এর সবাইকে সেটিস্ফাইড করবে।

মনে করি, আপনি একটা ১০০১২ এর সাথে ৮০০১৪ যোগ করে একটা তিন শূণ্য বিশিষ্ট ইউনিক হ্যাশ নাম্বার পেয়েছেন। এক্ষেত্রে ১০০১২ এর সীল নাম্বার হয়ে যায় ৮০০১৪ নাম্বারটি। এখন আমাদের পেইজটি সীল করার জন্য পেইজের উপর ৮০০১৪ নাম্বার লিখা নাম্বারটা সীল করে দিবো, এখন এই পেইজটা কমপ্লিটভাবে সীলড এবং এই পেইজের কোনো ডেটা আর কেও কখনো পরিবর্তন করতে পারবে না।

Sealed Ledger
Sealed Ledger

এই সীলিং করার পদ্ধতিটাকে ব্লকচেইনের ভাষায় বলে প্রুফ অফ ওয়ার্ক।

কেউ যদি কখনো দেখতে চায় যে এই পেজটাকে মডিফাই করা হয়েছে কিনা, তাহলে এই পেজের সীলিং নাম্বার এবং সকল ডেটা সহ হ্যাশিং ম্যাশিনে ইনপুট হিসেবে দিতে হবে। যদি ম্যাশিন আউটপুটে প্রথমে ৩টা শূণ্য দেখায় তাহলে এই পেজ ঠিক আছে এবং এই পেইজে কেও টাচ করে নাই, যদি ৩টা শূণ্য না দেখায় তাহলে এই পেইজটার আর কোনো ভ্যালু নাই কারন এটার ডেটা কেও করাপ্ট করে ফেলছে, তখন আমরা এই পেজটাকে ফালায় দিবো।

আমাদের পেইজটা সীল করার জন্য নেটওয়ার্কের সবাই ইউনিক হ্যাশ নাম্বার বের করার জন্য ক্যালকুলেশন করা শুরু করবে। যখনই কেউ একজন সবার আগে একটা ইউনিক হ্যাশ পাবে তখন নেটওয়ার্কের সবাইকে জানাবে এবং সবাই তখন সেই নাম্বারটাকে হ্যাশিং ম্যাশিনে দিয়ে ভ্যারিফাই করবে। সকলে নাম্বারটি ভ্যারিফাই করলেই তারপর এই পেইজটিকে সীল করা যাবে।

কিন্তু কী হবে যদি কেও একজন বলে আমার হ্যাশিং আউটপুট তো মিলতেছে না?

Corrupted Network
Corrupted Network

এইক্ষেত্রে সম্ভাব্য কারন গুলো হচ্ছে-

১। #৪ কোন ট্রান্সেকশনের ডেটা ভুল শুনছে

২। #৪ কোন ট্রান্সেকশনের ডেটা ভুল লিখছে

৩। #৪ বাটপাড়ি করতে চাইছে অথবা মিথ্যা ট্রান্সেকশন ডেটা লিখছে

কারণ যেটাই হোক #৪ এর কাছে মাত্র একটাই উপায় আছে - বর্তমান পেইজটা ফেলে দিয়ে অন্য কারো পেইজ থেকে ডেটা কপি করে অন্য একটা পেইজে সেটা সংরক্ষিত করতে হবে, না হলে সে আর এই নেটওয়ার্কে কাজ করতে পারবে না।

নেটওয়ার্কে যেই সীলিং নাম্বারটাকে বেশিরভাগ মানুষ হ্যাঁ বলে সেটাই সত্য সীলিং নাম্বার।


যদি একজনের হ্যাশীং নাম্বারটাই গ্রহণযোগ্য হয়, তাহলে নেটওয়ার্কের সবাই কেন এই গরু খাটা খাটবে?

এটার কারণেই বিশ্বে মাইনাররা লাখ লাখ টাকা খরচ করে দ্রুতগতি সম্পন্ন কম্পিউটার বানাচ্ছে। কারণ সবাই সবার আগে ইউনিক হ্যাশীং নাম্বার ক্যালকুলেট করতে চায়। কারণ কি?

কারণ, নেটওয়ার্কে যে সবার আগে সত্য সীলিং নাম্বার বের করতে পারবে তাকে ব্লকচেইন তার কষ্টের জন্য উপহার দিবে। কী উপহার?

ধরেন, #৮ সবার আগে সীলিং নাম্বার বের করছে, তো তাকে ব্লকচেইন ফ্রী কিছু টাকা উপহার দিবে। #৮ এর একাউন্টে আগে ২০ টাকা ছিলো, ব্লকচেইন তাকে ১টাকা উপহার দিছে এবং এখন তার একাউন্টে ২১ টাকা আছে। কিন্তু মজার ব্যাপার হলো, নেটওয়ার্কের আর কারো একাউন্ট থেকে এই ১টাকা কাটে নি।

এভাবেই বিটকয়েনের জন্ম। ব্লকচেইন সিস্টেমের প্রথম ক্রিপ্টো টাকা হচ্ছে এই বিটকয়েন। এবং যারা কষ্ট করে এই বিটকয়েনের জন্য সীলিং নাম্বার বের করতেন তাদেরকে ফ্রী তে বিটকয়েন উপহার দেয়া হতো। এই ফ্রী বিটকয়েনের জন্য মানুষ আরও কাজ করা শুরু করে। ফলাফল, বিটকয়েনের মূল্য আকাশচুম্বী হয়। ২০১৭ এর ডিসেম্বর মাসে ১টি বিটকয়েনের মূল্য ছিল ২০,০০০ মার্কিন ডলার।

আমরা এতক্ষণ যে পেইজের কথা বলতেছিলাম, ব্লকচেইনের ভাষার এটাকে বলে ব্লক অব ট্রান্সেকশন এবং নোটবুকটিকে বলে চেইন অব ব্লকস। এবং এটাই আমাদের ব্লকচেইন।

Share this post
#system design#blockchain#web3#bitcoin#bangla
All posts

Comments