ব্লকচেইন 101: একটি ভিজ্যুয়াল ডেমো
ব্লকচেইন প্রযুক্তি কীভাবে কাজ করে তার একটি ডেমো, যেখানে হ্যাশিং, ব্লক, চেইন, ডিস্ট্রিবিউটেড লেজার এবং টোকেন নিয়ে আলোচনা করা হয়েছে যাতে ব্লকচেইনের ধারণাগুলো সহজে বোঝা যায়।
Date published: 13 নভেম্বর, 2016
ব্লকচেইন প্রযুক্তি কীভাবে কাজ করে তার উপর অ্যান্ডার্স ব্রাউনওয়ার্থের ভিজ্যুয়াল ডেমো, যার মধ্যে SHA-256 হ্যাশিং, ব্লক, মাইনিং, ব্লকচেইন, ডিস্ট্রিবিউটেড লেজার, টোকেন এবং আরও অনেক কিছুর বিস্তারিত আলোচনা রয়েছে।
এই ট্রান্সক্রিপ্টটি অ্যান্ডার্স ব্রাউনওয়ার্থ দ্বারা প্রকাশিত মূল ভিডিও ট্রান্সক্রিপ্টের (opens in a new tab) একটি অ্যাক্সেসযোগ্য কপি। পড়ার সুবিধার জন্য এটি সামান্য সম্পাদনা করা হয়েছে।
SHA-256 হ্যাশ (0:01)
এটি একটি ব্লকচেইন ডেমো। আমরা এটি খুব ভিজ্যুয়াল উপায়ে করতে যাচ্ছি — ব্লকচেইন কী তার মূল অংশগুলো ধাপে ধাপে বিশ্লেষণ করে আমরা এটিকে বোঝার জন্য খুব সহজ করে তুলব।
শুরু করার আগে, আমাদের SHA-256 হ্যাশ নামক এই জিনিসটি দেখতে হবে। একটি হ্যাশ দেখতে একগুচ্ছ এলোমেলো সংখ্যার মতো, এবং মূলত এটি হলো কোনো ডিজিটাল ডেটার একটি ফিঙ্গারপ্রিন্ট। আমি এই বক্সে যা-ই টাইপ করি না কেন, এটি তার একটি ফিঙ্গারপ্রিন্ট তৈরি করে। আমি যদি এই বক্সে আমার নাম "Anders" টাইপ করি, আপনি দেখতে পাবেন যে হ্যাশটি পরিবর্তিত হয়েছে। আসলে, প্রতিবার একটি অক্ষর টাইপ করার সাথে সাথেই এটি পরিবর্তিত হয়েছে।
সুতরাং এটি হলো "Anders" নামের হ্যাশ, সবগুলো ছোট হাতের অক্ষরে — এটি 19ea দিয়ে শুরু হয়। আমি যদি সেটি মুছে ফেলি এবং আবার "Anders" টাইপ করি, আপনি দেখতে পাবেন এটি 19ea দিয়ে শুরু হয় — ঠিক একই হ্যাশ। সেই অর্থে এটি এই ডেটার একটি ডিজিটাল ফিঙ্গারপ্রিন্ট। এখানে যে ডেটাই থাকুক না কেন, প্রতিবার আপনি ঠিক একই ডেটা টাইপ করলে ঠিক একই হ্যাশ পাবেন।
আমি যা খুশি টাইপ করতে পারি। আপনি কিছুই না-ও লিখতে পারেন — e3b0 — এটি হলো ফাঁকা বা কিছুই না থাকার হ্যাশ। অথবা আপনি প্রচুর পরিমাণে জিনিস টাইপ করতে পারেন। আসলে, আপনি এখানে লাইব্রেরি অফ কংগ্রেস (Library of Congress) এর পুরো তথ্যও দিয়ে দিতে পারেন এবং আপনি একটি হ্যাশ পাবেন। মজার ব্যাপার হলো, খুব সামান্য তথ্য থাকুক, কোনো তথ্য না থাকুক, বা পুরো লাইব্রেরি অফ কংগ্রেস থাকুক না কেন, আপনি সবসময় ঠিক এই দৈর্ঘ্যের একটি হ্যাশ পাবেন। আপনি আগে থেকে অনুমান করতে পারবেন না যে এটি কী হবে — হ্যাশটি কী তা বের করার জন্য আপনাকে ডেটা ইনপুট করতে হবে, তবে আপনি যতবারই ঠিক একই তথ্য ইনপুট করুন না কেন, আপনি সবসময় ঠিক একই হ্যাশ পাবেন।
ব্লক (2:10)
আমি যা করতে যাচ্ছি তা হলো হ্যাশের এই ধারণাটিকে এমন কিছুতে প্রসারিত করা যাকে আমরা ব্লক বলব। একটি ব্লক ঠিক হ্যাশের মতোই, তবে ডেটা অংশটিকে তিনটি ভাগে ভাগ করা হয়েছে: একটির নাম "block" — এটি কেবল একটি সংখ্যা, এটি হলো ব্লক নম্বর 1 — একটি "নন্স", যা কেবল আরেকটি সংখ্যা, এবং তারপর আগের মতোই কিছু ডেটা।
এই সমস্ত তথ্যের হ্যাশ নিচে দেওয়া আছে, এবং এটি চারটি শূন্য দিয়ে শুরু হয়। এটি তুলনামূলকভাবে একটি অস্বাভাবিক হ্যাশ — বেশিরভাগ হ্যাশই এভাবে চারটি শূন্য দিয়ে শুরু হবে না। তবে এটি হয়, এবং যেহেতু এটি হয়, সম্পূর্ণ ইচ্ছামতো, আমি বলতে পারি যে এই ব্লকটি "স্বাক্ষরিত" (signed)।
আমি যদি এই তথ্যের কোনো অংশ পরিবর্তন করি তবে কী হবে? ধরুন আমি এখানে কিছু টাইপ করলাম — হ্যাশটি পরিবর্তিত হবে, এবং এটি চারটি শূন্য দিয়ে শুরু হওয়ার সম্ভাবনা কতটুকু? বেশ কম। আমি শুধু "hi" লিখব — দেখুন, এই হ্যাশটি চারটি শূন্য দিয়ে শুরু হয়নি, এবং ব্যাকগ্রাউন্ড লাল হয়ে গেছে। সুতরাং এখন আপনি জানেন যে এই তথ্যযুক্ত ব্লকটি কোনো বৈধ বা স্বাক্ষরিত ব্লক নয়।
এখানেই নন্স এর কাজ শুরু হয়। নন্স হলো এমন একটি সংখ্যা যা আপনি সেট করে এমন একটি মান খুঁজে বের করার চেষ্টা করতে পারেন যা হ্যাশটিকে আবার চারটি শূন্য দিয়ে শুরু করায়। আমি সারাদিন বসে বসে সংখ্যা টাইপ করতে পারতাম, কিন্তু আমার কাছে এই ছোট "Mine" বোতামটি আছে। আমি যখন এটি চাপব তখন যা হবে তা হলো, এটি 1 থেকে শুরু করে উপরের দিকের সমস্ত সংখ্যাগুলো পরীক্ষা করে এমন একটি সংখ্যা খুঁজে বের করার চেষ্টা করবে যেখানে হ্যাশটি চারটি শূন্য দিয়ে শুরু হয়। এই প্রক্রিয়াটিকে মাইনিং বলা হয়।
এটি 59,396 এ থেমেছে — এবং এটি এমন একটি হ্যাশ তৈরি করে যা চারটি শূন্য দিয়ে শুরু হয়। এটি একটি স্বাক্ষরিত ব্লক কী, তার সংজ্ঞাকে পূরণ করে।
ব্লকচেইন (5:16)
তাহলে আপনি কি আমাকে বলতে পারেন ব্লকচেইন কী? এটি সম্ভবত এই ব্লকগুলোর একটি চেইন। এই হলো আমার ব্লকচেইন — ব্লক নম্বর একে আগের মতোই একটি নন্স আছে, একটি ডেটা এরিয়া আছে, কিন্তু তারপর এতে এই "previous" ফিল্ডটি আছে যা একগুচ্ছ শূন্য। সামনের দিকে এগোলে, এটি ব্লক দুই, ব্লক তিন, ব্লক চার — এই ব্লকচেইনে পাঁচটি ব্লক রয়েছে।
প্রতিটি ব্লকের "previous" ফিল্ড হলো তার আগের ব্লকের হ্যাশ। আপনি দেখতে পাচ্ছেন যে প্রতিটি ব্লক তার আগের ব্লককে নির্দেশ করে। প্রথম ব্লকের কোনো পূর্ববর্তী ব্লক নেই, তাই এটি কেবল একগুচ্ছ শূন্য।
আমি যদি এখানে কিছু তথ্য পরিবর্তন করি তবে কী হবে? এটি এই ব্লকের হ্যাশ পরিবর্তন করবে এবং এটিকে অবৈধ করে দেবে। কিন্তু আমি যদি আগের কোনো ব্লকে কিছু পরিবর্তন করি? এটি সেই হ্যাশটিকে পরিবর্তন করবে, কিন্তু সেই হ্যাশটি পরবর্তী ব্লকের "previous" ফিল্ডে কপি হয়ে যায়, তাই এটি উভয় ব্লককেই ভেঙে দেয়। আমরা অতীতের কোনো বিন্দুতে যতদূর খুশি ফিরে যেতে পারি এবং সেই ব্লকটি ভাঙতে পারি, এবং এটি তারপর থেকে সমস্ত ব্লক ভেঙে দেবে। এর আগের সবকিছু এখনও সবুজ থাকবে, কিন্তু এর পরের সবকিছু লাল হয়ে যাবে।
আমি যদি গিয়ে শেষ ব্লকটি পরিবর্তন করি, তবে আমাকে কেবল সেই একটি ব্লক পুনরায় মাইনিং করতে হবে। আমি যদি অনেক আগে ফিরে গিয়ে কোনো পরিবর্তন করি, তবে আমাকে এটি, এটি, এটি এবং এটি মাইনিং করতে হবে। যত বেশি ব্লক যুক্ত হতে থাকে, কোনো পরিবর্তন করা তত বেশি কঠিন হয়ে পড়ে। এভাবেই একটি ব্লকচেইন মিউটেশন বা পরিবর্তনকে প্রতিহত করে — অপরিবর্তনীয় থাকে।
ডিস্ট্রিবিউটেড ব্লকচেইন (9:18)
তাহলে আমি কীভাবে জানব যে আমার ব্লকচেইন পুনরায় মাইনিং করা হয়েছে কিনা? এখন আমাদের কাছে একটি ডিস্ট্রিবিউটেড ব্লকচেইন আছে। এটি দেখতে ঠিক আগের ব্লকচেইনের মতোই, তবে এটি হলো পিয়ার A। আপনি যদি নিচে যান, আপনি পিয়ার B দেখতে পাবেন, এবং এর কাছে ব্লকচেইনের একটি হুবহু কপি রয়েছে। একটি পিয়ার C-ও রয়েছে — এটি চলতেই থাকতে পারে। ইন্টারনেটে অনেক পিয়ার রয়েছে এবং তাদের সবার কাছে ব্লকচেইনের একটি সম্পূর্ণ কপি রয়েছে।
আমি যদি এই হ্যাশটির দিকে তাকাই, এটি হলো e4b। আমি যদি নিচেরটিতে যাই, সেটিতেও e4b রয়েছে। এগুলো অবশ্যই অভিন্ন হতে হবে। এখন আমি যদি এখানে গিয়ে কিছু টাইপ করি, এই ব্লকটি পুনরায় মাইনিং করি এবং তারপর পরবর্তী ব্লকগুলো মাইনিং করি — সমস্ত চেইন সবুজ হয়ে যাবে। তবে, এই চেইনটি বলছে শেষ হ্যাশটি হলো e4b, নিচেরটিও বলছে e4b, এবং এই মাঝেরটি বলছে 4cae।
সুতরাং আমি কেবল এই একটি ছোট হ্যাশের দিকে তাকিয়েই বুঝতে পারি যে এই ব্লকচেইনে কিছু ভুল আছে। যদিও সমস্ত হ্যাশ চারটি শূন্য দিয়ে শুরু হয়, এটি আলাদা। এটি মূলত একের বিরুদ্ধে দুই — আমরা এখানে একটি ছোট গণতন্ত্রের মতো। তাই e4b জয়ী হয়। এভাবেই বিভিন্ন কম্পিউটারে একটি সম্পূর্ণ ডিস্ট্রিবিউটেড কপি থাকার ফলে আপনি দ্রুত দেখতে পারেন যে সমস্ত ব্লক অভিন্ন কিনা।
ব্লকচেইনে খুব সহজেই 400,000 বা 500,000 ব্লক থাকতে পারে। সেগুলোর সব চেক করার পরিবর্তে, আপনাকে যা করতে হবে তা হলো সবচেয়ে সাম্প্রতিক ব্লকের হ্যাশটি দেখা, এবং আপনি বুঝতে পারবেন অতীতে কোনো কিছু পরিবর্তন করা হয়েছিল কিনা।
টোকেন (12:17)
এটাই পুরো বিষয় — এর চেয়ে বেশি কিছু নেই। তবে এটি আসলে খুব একটা কার্যকর নয় কারণ আমাদের ডেটা এরিয়াতে এমন কিছু নেই যার কোনো অর্থ আছে। আমরা আসলে যা চাই তা হলো একটি টোকেন।
এখন আমার কাছে এই টোকেনগুলো আছে — সম্পূর্ণ ইচ্ছামতো, আমি এগুলোকে ডলার বলছি। আমাদের কাছে ডার্সি থেকে বিংলিকে দেওয়া 25 ডলার, এলিজাবেথ থেকে জেনকে দেওয়া 4 ডলার 27 সেন্ট আছে — আপনি ধারণাটি বুঝতে পেরেছেন। এই সমস্ত ট্রানজ্যাকশন ঘটছে, এবং আমি কেবল ডেটাগুলোকে এই ট্রানজ্যাকশনগুলো দিয়ে প্রতিস্থাপন করেছি। আগের মতোই, আমরা যদি নিচে যাই তবে দেখতে পাব যে আমাদের কাছে একই ব্লকচেইনের এই অন্যান্য কপিগুলো রয়েছে।
এখানেই অপরিবর্তনীয়তা গুরুত্বপূর্ণ। আমি যদি এখানে আগের কোনো কিছু পরিবর্তন করি, তবে হ্যাশটি অন্যান্য কপির হ্যাশ থেকে আলাদা হবে। এটি খুবই গুরুত্বপূর্ণ যে আপনি যদি অতীতে ফিরে গিয়ে কোনো মান পরিবর্তন করেন, তবে আমরা তা লক্ষ্য করব। অর্থের ক্ষেত্রে হিসাব না হারানো খুবই গুরুত্বপূর্ণ, এবং ব্লকচেইন ব্যবহারের মূল উদ্দেশ্যই হলো এটি — অতীতে ঘটে যাওয়া জিনিসগুলোর যেকোনো ধরনের পরিবর্তনকে প্রতিহত করা।
আমি একটি কথা উল্লেখ করতে চাই: আমরা এমন কোনো তালিকা করছি না যে "ডার্সির কাছে 100 ডলার আছে এবং সে বিংলিকে 25 ডলার দিচ্ছে।" আমরা কেবল অর্থের আদান-প্রদান মনে রাখছি, ব্যাংক অ্যাকাউন্টের ব্যালেন্স নয়। এতে একটি প্রশ্ন জাগে — ডার্সির কাছে কি 25 ডলার আছে?
কয়েনবেস ট্রানজ্যাকশন (14:34)
ব্লকচেইনের এই সংস্করণে আমাদের একটি সমস্যা আছে: আমরা আসলে জানি না ডার্সির কাছে 25 ডলার আছে কিনা। তাই চলুন একটি কয়েনবেস ট্রানজ্যাকশন দেখি। আমরা আমাদের ব্লকে একটি কয়েনবেস ট্রানজ্যাকশন যোগ করি — এটি বলছে যে আমরা শূন্য থেকে 100 ডলার তৈরি করব এবং তা অ্যান্ডার্সকে দেব। এই ব্লকে অন্য কোনো ট্রানজ্যাকশন নেই কারণ এর আগে কারও কাছে কোনো টাকা ছিল না।
পরবর্তী ব্লকে, আরও 100 ডলার শূন্য থেকে আসে এবং অ্যান্ডার্সের কাছে যায়। এখন আমাদের কাছে কিছু ট্রানজ্যাকশন আছে — সেগুলো সবই অ্যান্ডার্সের কাছ থেকে কারণ এই মুহূর্তে কেবল আমার কাছেই টাকা আছে। আমি আমার 10 ডলার সোফিকে পাঠাচ্ছি। আমার কাছে কি 10 ডলার আছে? হ্যাঁ — আমি পিছনে ফিরে তাকালে দেখতে পাই যে কয়েনবেস ট্রানজ্যাকশন আমাকে 100 ডলার দিয়েছিল, তাই আমার কাছে অন্তত 10 ডলার আছে।
আপনি এগুলো সব যোগ করলে তা 100 ডলারের বেশি হবে না। এটি মুদ্রার একটি মৌলিক নিয়ম অনুসরণ করে: আপনি শূন্য থেকে টাকা তৈরি করতে পারবেন না, এবং এর বিতরণ নিয়ন্ত্রিত।
আমরা যদি সময়ের সাথে একটু এগিয়ে যাই, আমরা দেখতে পাই যে জ্যাকসন অ্যালেক্সাকে 2 ডলার দিচ্ছে। জ্যাকসনের কাছে কি আসলেই 2 ডলার আছে? আমরা এক ব্লক পিছনে গেলে দেখতে পাই যে এমিলি অ্যান্ডার্সের কাছ থেকে 10 ডলার পেয়েছিল এবং জ্যাকসনকে 10 ডলার দিয়েছিল। সুতরাং জ্যাকসনের কাছে টাকা আছে। আমরা পিছনে গিয়ে তা খুঁজে বের করতে পারি — এটি "previous" ফিল্ড থাকার অন্যতম সুবিধা।
সমাপ্তি (16:30)
এটি হলো একটি বেসিক ব্লকচেইন যার উপর একটি মুদ্রা চলছে। আপনারা জানেন, ব্লকচেইনের অনেকগুলো কপি থাকে — সবার কাছেই একটি করে কপি থাকে। আমরা যদি কোনো কিছু পরিবর্তন করে 6 ডলার করে দিই, তবে ব্লকগুলো অবৈধ হয়ে যায় এবং অন্যান্য কপির সাথে মেলে না। এটি টেম্পারিং বা কারচুপি প্রতিহত করে, যা আপনি একটি মুদ্রার জন্য চাইবেন। এটি ছোট এবং ট্রানজ্যাকশন-ভিত্তিক জিনিসগুলোর জন্য খুব ভালোভাবে কাজ করে।
অতীতে কী ঘটেছে সে বিষয়ে ঐকমত্য পরিচালনা করার জন্য ব্লকচেইন একটি অত্যন্ত কার্যকর উপায় — এই অপরিবর্তনীয় ইতিহাস যা সময়ের সাথে সাথে চলতে থাকে। আমরা কিছু মূল বিষয় এড়িয়ে যাচ্ছি, তবে আপনি যদি ডেমোটি গভীরভাবে দেখেন এবং এই জিনিসগুলোতে ক্লিক করে পরীক্ষা-নিরীক্ষা করেন, তবে এটি কীভাবে কাজ করে সে সম্পর্কে আপনি আরও ভালো ধারণা পাবেন।