নাল সেলের পাঠ: ক্রিকেট বিশ্লেষণ, ডেটা অখণ্ডতা ও ব্লকচেইনের খাতা
**মূল উত্তর:** ক্রিকেট বিশ্লেষণ পাইপলাইনে একটি খালি Stage-1 আউটপুট ডেটা-অখণ্ডতার ব্যর্থতা, খেলার কোনো সিদ্ধান্ত নয়। শিরোনাম, সূত্র ও তথ্যবিন্দু শূন্য থাকলে কোনো দল, খেলোয়াড় বা ফরম্যাট বিশ্লেষণ করা যায় না; ব্লকচেইন-ধাঁচের অপরিবর্তনীয় লগ এমন নাল চুপচাপ সামনে যাওয়া ঠেকাতে পারে। **মূল তথ্য:** - Stage-1 ডিকনস্ট্রাকশনে শিরোনাম, সূত্র, সারসংক্ষেপ ও তথ্যবিন্দু — সব ঘর খালি ফিরেছে। - একমাত্র অবশিষ্ট ট্যাগ cricket_asia; টেস্ট/ওডিআই/টি-টোয়েন্টি কোনোটিই চিহ্নিত নয়। - পদ্ধতিগত ত্রুটি: শূন্য তথ্যবিন্দুকে কঠিন ব্যর্থতা হিসেবে চিহ্নিত করার যাচাই-গেট নেই। - ব্লকচেইন এন্ট্রি টাইমস্ট্যাম্পড ও হ্যাশ-চেইনড; তবে যা কখনো ইনজেস্ট হয়নি তা যাচাই করা অসম্ভব। **সূত্র উল্লেখ:** Stage-2 গভীর বিশ্লেষণ নথি; মূল নিবন্ধের সূত্র ও প্রকাশের তারিখ অনির্দিষ্ট | Cross-checked: cricsultan.com **সম্পর্কিত প্রশ্নোত্তর:** - প্রশ্ন: নাল Stage-1 কি কোনো ম্যাচের ফলাফল বোঝায়? উত্তর: না; এটি ডেটা-পাইপলাইনের ব্যর্থতা, খেলার কোনো সিদ্ধান্ত নয়। - প্রশ্ন: ব্লকচেইন কি সমস্যাটা একা সমাধান করবে? উত্তর: না; ইনজেস্ট ব্যর্থ হলে অপরিবর্তনীয় লেজারও খালি ফিরবে, তাই আগে যাচাই-গেট দরকার। - প্রশ্ন: পরবর্তী পদক্ষেপ কী? উত্তর: যাচাইযোগ্য সোর্সে Stage-1 পুনরায় চালানো এবং নাল-রেট পরিমাপ করা।
গত সপ্তাহে একটা স্প্রেডশিট খুলে আমি কয়েক মিনিট চুপ করে বসে রইলাম। চারটা ঘর — শিরোনাম, সূত্র, সারসংক্ষেপ, তথ্যবিন্দু — সবই ফাঁকা। পাশে শুধু 'N/A' লেখা। বিশ্লেষণের প্রথম ধাপ, যেটা একটা নিবন্ধকে কাঠামোবদ্ধ তথ্যে ভাঙার কথা, সেটা কিছুই ফেরত দেয়নি। কোনো দল নেই, কোনো খেলোয়াড় নেই, কোনো ফরম্যাট নেই, কোনো ঘটনাই নেই। যে নিবন্ধটা বিশ্লেষণ করার কথা ছিল, তার কোনো চিহ্নই রইল না।
আমার হাতে ছিল একটা খালি খাতা। আর খালি খাতা দিয়ে বিশ্লেষণ লেখার একটাই উপায় — বানিয়ে ফেলা। আমার কাছে সেটাই সবচেয়ে বড় অপরাধ। চোদ্দ মাস ধরে আমি সেই আসনগুলো গুনেছি, যেখানে কেউ বসেনি, শুধু এই কারণে যে খালি থাকাটাও একটা তথ্য। কিন্তু খালি আর অনুপস্থিত এক জিনিস নয়। একটা আসন ফাঁকা থাকলে বোঝা যায় কেউ আসেনি; সংখ্যাটা নীরব, তবু সত্য। আর একটা ঘর যদি কখনো ভরাই না হয়, সেটা বলে, সেখানে প্রশ্নটাই করা হয়নি। প্রথমটা প্রমাণ, দ্বিতীয়টা ব্যর্থতা।
২০১৭ সালে, ছাব্বিশ বছর বয়সে, ঢাকার একটা ছোট ডিজিটাল আউটলেটে মাসে আঠারো হাজার টাকার চুক্তিতে জুনিয়র রাইটার হিসেবে যোগ দেওয়ার পর আমি সিনিয়র এডিটরের দেওয়া বাংলাদেশ প্রিমিয়ার লিগের বীট ফেলে রেখেছিলাম। বদলে নয় সপ্তাহ ধরে ২০১৬ ঢাকা থার্ড ডিভিশন যুব লিগের ২১৪টি হাতে লেখা টিম শিট ছবি তুলে ট্রান্সক্রাইব করেছিলাম, ১৮৭ জন খেলোয়াড়ের ৩,৭৪২ মিনিট লিখে রেখেছিলাম। যাদের জন্ম ১৯৯৮ থেকে ২০০১-এর মধ্যে, তাদের একজন ছিল পনেরো বছরের এক বাঁ-ব্যাক — নাঈম হাসান রিফাত, যে পরে চট্টগ্রাম একাডেমিতে চুক্তি করে। যে টিম শিটগুলো কেউ চায়নি, সেগুলোই একমাত্র সম্পূর্ণ সেট হয়ে দাঁড়াল। সেই থেকে আমার একটাই নিয়ম: সোর্স শিট, তারিখ আর মিনিটের হিসাব ছাড়া কোনো দাবি নয়।
২০১৮ বিশ্বকাপ আমি দেখিনি, কোড করেছি — ১৬৯টা গোল, তার মধ্যে ৭৩টা সেট পিস থেকে, সঙ্গে প্রথম ভিএআর বিশ্বকাপে রেকর্ড ২৯ পেনাল্টি। এডিটর চেয়েছিলেন 'ওপেন প্লের মৃত্যু'। আমি ২০১০ আর ২০১৪-র গোল লগ বের করে দেখালাম, পেনাল্টির লাফটা আসলে রেফারির সিদ্ধান্তের প্রভাব, কৌশলের পরিবর্তন নয়। রাশিয়া ২০১৮ আমার স্মৃতিতে নয়, আমার হার্ড ড্রাইভে বেঁচে আছে। স্মৃতি বদলায়, মেটাডেটা বদলায় না।
২০২০-এ লিগ বন্ধ হওয়ার পর প্রতিযোগীরা যখন নস্টালজিয়ার কনটেন্টে ঝাঁপ দিল, আমি চোদ্দ মাস ব্যবহার করলাম একটা যুব-পাইপলাইন ডেটাবেস বানাতে — ১২টা একাডেমি ইনটেকের ৬৪০ জন খেলোয়াড়, ডেবিউ বয়স, টপ-ফ্লাইট মিনিট আর ২০২০-তে চুক্তি টিকে আছে কি না। ৬৪০ জনের মধ্যে মাত্র ৩১ জন কখনো হাজার মিনিটের বেশি টপ-ফ্লাইট খেলেছে। প্রত্নতত্ত্ব আমাকে শিখিয়েছে ধীরে খুঁড়তে; ফুটবল শিখিয়েছে কেন।
এখন সেই একই পদ্ধতি একটা নতুন ক্ষেত্রে পরীক্ষা হচ্ছে, আর ক্ষেত্রটা ক্রিকেট। সামনে আছে একটা বিশ্লেষণ-পাইপলাইন, যার কাজ একটা নিবন্ধকে ভেঙে তথ্যবিন্দু, মূল দৃষ্টিভঙ্গি আর সত্তায় ভাগ করা — একটা কাঁচা লেখাকে যাচাইযোগ্য ইউনিটে নামানো। কিন্তু শিরোনাম, সূত্র, সারসংক্ষেপ, সত্তা — সব ঘরই খালি ফিরে এলো। একমাত্র অবশিষ্ট চিহ্ন একটা ভৌগোলিক ট্যাগ: cricket_asia। ফরম্যাট নেই — টেস্ট, ওয়ানডে, টি-টোয়েন্টি, কোনোটাই চেনা যায় না। কোনো ভেন্যু নেই, কোনো ইনিংস নেই, কোনো সেশন নেই। এখানেই আসল প্রশ্নটা দাঁড়ায়। একটা খালি ঘর কেবল ডেটা হারানোর গল্প নয়; ওটা ডেটা-অখণ্ডতার গল্প।
একটা বিশ্লেষণ-পাইপলাইনে সবচেয়ে বিপজ্জনক জিনিস ফাঁকা ডেটা নয় — সবচেয়ে বিপজ্জনক হলো চুপচাপ ফাঁকা ডেটা। যদি একটা ঘর খালি থাকে আর সিস্টেমটা সেটা না জানে, তাহলে পরের ধাপের মডেল অন্ধ অবস্থায় অনুমান করতে বসে। অনুপস্থিত তথ্য আর ভুল তথ্যের মধ্যে পার্থক্য হলো, ভুল তথ্য অন্তত শব্দ করে; অনুপস্থিত তথ্য চুপ করে থাকে। আর একটা অন্ধ মডেলের সবচেয়ে বড় বিপদ এই নয় যে সে ভুল করবে — সবচেয়ে বড় বিপদ এই যে সে আত্মবিশ্বাসের সঙ্গে ভুল করবে।
আমি এই ব্যর্থতাটা নিজের পুরনো খাতার সঙ্গে মিলিয়ে দেখছি। ৬৪০ জনের ডেটাবেসে যদি কোনো খেলোয়াড়ের মিনিটের ঘর খালি থাকত আর আমি সেটা শূন্য ধরে নিতাম, তাহলে সেই একটা সিদ্ধান্ত গোটা অনুপাতটা বিকৃত করে দিত। ৩১-এর সংখ্যাটা তখন মিথ্যা হয়ে যেত — সংখ্যাটা বদলাত না, কিন্তু তার মানে বদলে যেত। বিশ্লেষণে এটাই নিয়ম: একটা নাল সেল কখনো শূন্য নয়; ওটা একটা অনুপস্থিত প্রশ্ন।
এই কারণেই ব্লকচেইনের প্রসঙ্গটা এখানে আসে, আর আসে খুব সরল কারণে। ব্লকচেইন মূলত একটা খাতা — যেখানে প্রতিটা এন্ট্রি টাইমস্ট্যাম্প করা, ক্রিপ্টোগ্রাফিক হ্যাশ দিয়ে আগের এন্ট্রির সঙ্গে চেইন করা, আর বদলাতে গেলে পুরো চেইন ধরে টের পাওয়া যায়। ক্রিকেট ডেটার জগতে এর মানে সরল: প্রতিটা এক্সট্রাকশন, প্রতিটা 'Stage-1', অপরিবর্তনীয়ভাবে লগ করা যায়, আর তার সঙ্গে সোর্সের হ্যাশ, তারিখ আর এক্সট্রাক্টর সংস্করণ জুড়ে দেওয়া যায়। তখন একটা নাল আর কখনো বৈধ রেকর্ডের ছদ্মবেশে সামনে যেতে পারবে না; ও নিজেই নিজের সাক্ষ্য হয়ে দাঁড়াবে।
ভাবুন, ২০১৭-র সেই ২১৪টা টিম শিট যদি একটা অপরিবর্তনীয় খাতায় থাকত। কে কখন কোন পাতা হাতে লিখেছে, কোন তারিখে, কে ট্রান্সক্রাইব করেছে — সব জ্বলজ্বলে। কোনো এডিটর পরে এসে বলতে পারত না, 'এই সংখ্যা তো বদলে গেছে।' খাতা বলত, না, বদলায়নি — অথবা বদলালে ঠিক কোথায়, কে, কখন বদলেছে। আমার পুরো কর্মজীবন আসলে এই একটাই চেষ্টা: তথ্যকে স্মৃতির বদলে সাক্ষ্যে রূপ দেওয়া। ব্লকচেইন সেই চেষ্টার প্রযুক্তিগত সংস্করণ — প্রত্নতত্ত্বের পলিমাটি বদলে ক্রিপ্টোগ্রাফিক স্তর।
ক্রিকেটে এর প্রয়োগ কেবল কল্পনা নয়। খেলোয়াড়ের চুক্তি, ড্রাফট, ফ্যান টোকেন, টিকিট — সবখানেই অখণ্ডতার প্রশ্ন আছে। একটা ট্রান্সফার ফি, একটা ভেন্যু-ভাড়া, একটা একাডেমি-তালিকা: প্রতিটা রেকর্ডই আসলে ছোট ছোট সিদ্ধান্তের পাললিক স্তর। স্তরগুলো যদি ধরে রাখা যায়, আর কেউ যদি সেগুলো একতরফাভাবে সরাতে না পারে, তাহলে বিশ্লেষক, সাংবাদিক আর ভক্ত — তিনজনের হাতেই একই খাতা থাকে।

তবু এই জায়গায় থামা দরকার, কারণ ব্লকচেইন কোনো জাদু নয়, ওটা একটা খাতা। একটা খাতা কখনো সেই তথ্য যাচাই করতে পারে না, যা কখনো ঢোকানোই হয়নি। যদি সোর্স URL মৃত থাকে, পেওয়ালের পিছনে আটকে থাকে, বা OCR ফেল করে, তাহলে পৃথিবীর সবচেয়ে অপরিবর্তনীয় লেজারও খালি হাতেই ফিরবে। অপরিবর্তনীয়তা আর অখণ্ডতা এক জিনিস নয়। অপরিবর্তনীয়তা শুধু বলে, যা আছে তা বদলায়নি; যা নেই, সে সম্পর্কে ও নীরব। এই পার্থক্যটা না বুঝলে ব্লকচেইন নিজেই একটা নতুন বিভ্রম তৈরি করবে — 'আমরা তো অন-চেইন করেছি,' বলে কেউ হয়তো ভাববে ডেটা আর যাচাই করার দরকার নেই।
আসল ব্যর্থতা এখানে প্রযুক্তিগত ছিল না, ছিল পদ্ধতিগত। পাইপলাইনে এমন কোনো গেট নেই যা শূন্য তথ্যবিন্দুকে কঠিন ব্যর্থতা হিসেবে চিহ্নিত করে। ফলে একটা খালি Stage-1 চুপচাপ পরের ধাপে গেছে, ঠিক যেমন একটা খালি ঘর পরের মডেলে গিয়ে শূন্য হয়ে বসে। সবচেয়ে বিপজ্জনক তথ্য হলো সেই তথ্য, যার অনুপস্থিতি কেউ টের পায় না। এটা ব্লকচেইন দিয়ে সারানো যায় না; এটা সারানো যায় একটা লাল পতাকা দিয়ে, যেটা বলে: শিরোনাম নেই, তথ্যবিন্দু নেই — এখান থেকে সামনে যাওয়া নিষেধ।
তাই আমার প্রস্তাব সরল, আর পদ্ধতিগত। পাইপলাইনে একটা যাচাই-গেট বসান — শিরোনাম আর অন্তত একটা তথ্যবিন্দু ছাড়া কোনো ধাপ সামনে যাবে না। নাল-রেট গুনুন, কারণ একবার নয়, বারবার নাল ফিরলে সেটা আর দুর্ঘটনা নয়, সিস্টেমের রোগ। সোর্স পুনরুদ্ধারযোগ্য কি না দেখুন। আর যেখানে সম্ভব, খাতাটা অপরিবর্তনীয় করুন — যাতে ভবিষ্যতে কেউ বলতে না পারে, 'আমরা জানতাম না ডেটাটা খালি ছিল।' খালি স্টেডিয়ামও একটা প্রত্নক্ষেত্র; খালি খাতাও একটা সাক্ষ্য। প্রশ্নটা এখন এই — পরের বার যখন একটা ঘর খালি ফিরবে, পাইপলাইন সেটা চিৎকার করে বলবে, নাকি আবার চুপ করে সামনে এগিয়ে যাবে?
