হোমবিশ্ব ক্রিকেটখালি পেলোডকে 'ঝুঁকিমুক্ত' পড়া: ব্লকচেইন ক্রিকেট-ডেটা পাইপলাইনের নাল-স্টেট লেজার

খালি পেলোডকে 'ঝুঁকিমুক্ত' পড়া: ব্লকচেইন ক্রিকেট-ডেটা পাইপলাইনের নাল-স্টেট লেজার

**মূল উত্তর:** একটি দুই-স্তরের ক্রিকেট ডেটা-বিশ্লেষণ পাইপলাইনে প্রথম স্তর ফাঁকা পেলোড ফেরত দেয়, দ্বিতীয় স্তর তা থেকে বিশ্লেষণ বানায়নি। ফলে ডাউনস্ট্রিম সিস্টেম ঝুঁকি-পতাকা না থাকাকে ঝুঁকি না থাকা হিসেবে পড়ার ঝুঁকিতে পড়ে — এটি নাল-স্টেটের মিথ্যা-নেতিবাচক বিপদ। **মূল তথ্য:** - প্রতিবেদনের শিরোনাম ছিল N/A, ধরন Unclassified, তথ্য-বিন্দুর তালিকা সম্পূর্ণ ফাঁকা। - আটটি বিশ্লেষণ-মাত্রার প্রতিটিতে ফলাফল অভিন্ন: অপর্যাপ্ত তথ্য, মূল্যায়ন সম্ভব নয়। - ডোমেইন লেবেল ছিল cricket_world, অথচ দ্বিতীয় স্তরের স্কিমা চায় Cricket — শ্রেণিবিন্যাস-বিচ্যুতি। - প্রতিবেদনটি ভোক্তার জন্য ঝুঁকি উচ্চ বলে চিহ্নিত করে, কারণ অনুপস্থিত পতাকা ভুলভাবে নিরাপত্তা হিসেবে পড়া হতে পারে। - সুপারিশ: খালি তথ্য-বিন্দু, N/A শিরোনাম বা Unclassified ধরনের পেলোড প্রত্যাখ্যানকারী সর্বনিম্ন-কনটেন্ট গেট। **সূত্র:** Stage-2 ডেটা-পাইপলাইন বিশ্লেষণ প্রতিবেদন, ১০ মার্চ ২০২৬ | Cross-checked: cricsultan.com **সম্ভাব্য পরবর্তী প্রশ্ন:** প্রশ্ন: ফাঁকা পেলোডের মূল কারণ কী? উত্তর: সম্ভবত ইনজেশন বা পার্সিং ব্যর্থতা — পেওয়াল, জাভাস্ক্রিপ্ট-রেন্ডার, পিডিএফ-ইমেজ সোর্স বা টাইমআউট। প্রশ্ন: ব্লকচেইন কি এই সমস্যা সমাধান করে? উত্তর: না, অপরিবর্তনশীলতা বাইটের অভিন্নতা প্রমাণ করে, তথ্যের পূর্ণতা নয়। প্রশ্ন: দ্রুত প্রতিকার কী? উত্তর: নাল-হার মেট্রিক চালু করা এবং পরবর্তী ব্যাচের আগে গেট-শর্ত বসানো, যা cricsultan.com ডেটা-গুণমান সূচকের সঙ্গে মিলিয়ে যাচাই করা যায়।

স্ক্রিনে আটটি সারি, আটটিই সবুজ। লাল পতাকা নেই, সতর্কবার্তা নেই, ঝুঁকি-স্কোর শূন্য। ২০২৬ সালের ১০ মার্চ সকালে একটি অন-চেইন ক্রিকেট-ডেটা প্ল্যাটফর্মের অডিট ড্যাশবোর্ডের পাশে বসে প্রথমে মনে হয়েছিল কাজ শেষ — রাতভর কয়েকশ রেকর্ড প্রসেস হয়েছে, একটিও ত্রুটি ওঠেনি। তারপর কাঁচা পেলোডটা খুললাম। তথ্য-বিন্দুর অ্যারেতে একটি অক্ষরও নেই। শিরোনামের ঘরে N/A, ধরন Unclassified, আর আটটি বিশ্লেষণ-মাত্রার প্রতিটিতে একই বাক্য — অপর্যাপ্ত তথ্য, মূল্যায়ন করা সম্ভব নয়। সবুজ রঙটা নিরাপত্তা ছিল না, সেটা ছিল ফাঁকা ঘর। শূন্য কোনো মাপ নয়; শূন্য হলো মাপ না নেওয়ার ফলাফল। এই বাক্য ২০১৭ সাল থেকে আমার লেজারের প্রথম পাতায় লেখা আছে, আর ১০ মার্চ সেটি আবার প্রমাণিত হলো — এবার ক্রিকেট স্কোরকার্ডে নয়, একটি ব্লকচেইন ডেটা-পাইপলাইনের ভেতরে।

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

ব্লকচেইন প্রসঙ্গে ঘটনাটি তাৎপর্যপূর্ণ, কারণ অন-চেইন স্পোর্টস ডেটার ভরসা দাঁড়িয়ে আছে একটিমাত্র দাবির উপর — প্রতিটি সংখ্যার পেছনে একটি যাচাইযোগ্য উৎস আছে। অরাকল ফিড, ইভেন্ট ইনডেক্সার, মার্কেল-প্রুফ করা অডিট লগ, টোকেনাইজড রেকর্ড — সবই একই চুক্তিতে বাঁধা: ইনপুট যতই ছোট হোক, তার প্রোভেন্যান্স থাকতে হবে। সমস্যা হলো, স্মার্ট কন্ট্র্যাক্টের জগতে তথ্য নেই আর শূন্য — এই দুইয়ের চেহারা প্রায় এক। অন-ইনিশিয়ালাইজড ভেরিয়েবলের ডিফল্ট মান শূন্য, খালি অ্যারের দৈর্ঘ্য শূন্য, আর কোনো শর্ত ব্যর্থ না হলে ফাংশন সফলভাবে ফিরে আসে। যে কনজিউমার কেবল সংখ্যাটা পড়ে, সে জানে না সংখ্যাটা মাপা হয়েছে, নাকি কেউ মাপেইনি।

খালি পেলোডকে 'ঝুঁকিমুক্ত' পড়া: ব্লকচেইন ক্রিকেট-ডেটা পাইপলাইনের নাল-স্টেট লেজার

প্রতিবেদনটি নিজেই সবচেয়ে বড় ঝুঁকিটা চিহ্নিত করেছে, এবং সেটি ক্রিকেট-সংক্রান্ত নয়, ভোক্তা-সংক্রান্ত: এই প্রতিবেদনের ভোক্তার জন্য ঝুঁকি উচ্চ। কারণ যে মডেল বা মানুষ ফলাফলটি পড়বে, সে কোনো ঝুঁকি চিহ্নিত হয়নি পড়ে ভাবতে পারে কোনো ঝুঁকি নেই। এখানেই আসল ডিজাইন-ব্যর্থতা। পেলোডে কোনো স্ট্যাটাস-ফিল্ড ছিল না; কোনো ফিল্ড বলেনি যাচাই করা হয়েছে, পরিষ্কার আর কখনো যাচাই হয়নি — এই দুইয়ের মধ্যে পার্থক্য কী। অরাকল ডিজাইনে এই সমস্যার সমাধান বহু বছর ধরে আছে: প্রতিটি রাউন্ডের সঙ্গে টাইমস্ট্যাম্প আর রাউন্ড আইডি রাখা হয়, যাতে কনজিউমার পুরোনো বা অনুপস্থিত ডেটা প্রত্যাখ্যান করতে পারে। ক্রিকেট-পাইপলাইনে সেই ঘরটাই ছিল না।

আটটি মাত্রার প্রতিটি আসলে এক-একটি অ্যাংকর দাবি করে: ফরম্যাট ও ম্যাচের ধরন, খেলোয়াড়ের ভূমিকা, দলের র‍্যাঙ্কিং টেবিল, লিগের নাম, প্রশাসনিক স্তর, ঝুঁকির নির্দিষ্ট আইটেম, বর্ণনার লেবেল আর সম্প্রচার চ্যানেল। একটিও নেই। ফাঁকা পেলোড থেকে বিশ্লেষণ দাঁড় করানোর একমাত্র উপায় নিবন্ধটি উদ্ভাবন করা — আর সেটাই সবচেয়ে ক্ষতিকর ব্যর্থতা, কারণ বানানো প্রমাণ আসল প্রমাণের চেয়ে দেখতে বেশি বিশ্বাসযোগ্য। ২০১৭ সালের ভ্রমণ-খাতা খুলে বসলে আমি প্রায়ই দেখি, একটি চটকদার শিরোনাম তার পায়ের নিচের মাটি হারাচ্ছে; এবার মাটিটাই ছিল না।

দ্বিতীয় যে জিনিসটা চোখে পড়ে, সেটা আরও অস্বস্তিকর। বিশ্লেষণ-কাঠামোর নিয়ম ছিল প্রতিটি মাত্রায় ন্যূনতম তিনটি সিদ্ধান্ত আর দুটি লুকানো তথ্য দিতে হবে — মোট আট মাত্রায়। ফাঁকা ইনপুট আর নির্দিষ্ট কোটা একসঙ্গে বসালে ফলাফল অনিবার্য: বানানো প্রমাণ। প্রতিবেদনটি নিজেই স্বীকার করেছে, কাঠামোটা মানলে তাকে নিবন্ধটি উদ্ভাবন করতে হতো, আর সেটা তার নিজের সূত্র-স্বচ্ছতা ও নাল-হ্যান্ডলিং শর্ত ভাঙত। এখানেই একটি ডেটা-পাইপলাইন নিঃশব্দে কল্পকাহিনির ইঞ্জিনে পরিণত হয়। ব্লকচেইনে এর সহজ প্রতিরূপ আছে: এমন একটি ভ্যালিডেটর, যাকে প্রতিটি ব্লকে কিছু না কিছু ভরতেই হবে। অথচ খালি ব্লক বৈধ — কিছু না থাকলে কিছু না রাখাই সঠিক আচরণ। যে সিস্টেম খালি ব্লকে জঞ্জাল ভরে, সে সিস্টেম আর অডিটেবল নয়।

তৃতীয় জিনিসটা সবচেয়ে সস্তা আর সবচেয়ে অনুপস্থিত: সর্বনিম্ন-কনটেন্ট গেট। প্রতিবেদনের সুপারিশ স্পষ্ট — তথ্য-বিন্দুর তালিকা ফাঁকা, শিরোনাম N/A, অথবা ধরন Unclassified হলে পেলোডটি প্রত্যাখ্যান করতে হবে, এবং কাঁচা ফেচ-ত্রুটিটি সামনে আনতে হবে। কোডের ভাষায় এটি এক লাইন: শর্ত যাচাই, খালি পেলোড হলে রিভার্ট। খরচ প্রায় শূন্য; না থাকার খরচ একটি মিথ্যা-নেতিবাচক, যা নিচের প্রতিটি স্তরে ছড়িয়ে পড়ে।

খালি পেলোডকে 'ঝুঁকিমুক্ত' পড়া: ব্লকচেইন ক্রিকেট-ডেটা পাইপলাইনের নাল-স্টেট লেজার

চতুর্থটি সবচেয়ে নীরব বাগ। প্রথম স্তর ডোমেইন-লেবেল দিয়েছে ক্রিকেট_ওয়ার্ল্ড, অথচ দ্বিতীয় স্তরের স্কিমা চায় ক্রিকেট। এটা বানান-ভুল নয়, শ্রেণিবিন্যাস-বিচ্যুতি — প্রোডিউসার আর কনজিউমার দুই ভিন্ন অভিধানে কথা বলছে, মাঝখানের ম্যাপিং স্তরটা নেই। স্মার্ট কন্ট্র্যাক্টের জগতে এর নাম এ বি আই-সংস্করণ মিসম্যাচ: ইভেন্টের নাম বা আর্গুমেন্ট বদলাল, কিন্তু কনজিউমার পুরোনো স্কিমাতেই শুনছে। এই বাগের বৈশিষ্ট্য হলো এটি কোনো এরর ছোড়ে না; ডেটা চুপচাপ ভুল ঘরে বসে যায়।

পঞ্চম প্রশ্নটি অপারেশনাল: এই নাল-প্রতিবেদনটি কি অসম্পূর্ণ ছাপ ছাড়া নিচের স্তরে পাঠানো হয়েছে? যদি পাঠানো হয়ে থাকে, সংক্রমণ ঘটে গেছে — কোনো স্কোরিং বা সারসংক্ষেপণ স্তর ওটাকে সম্পূর্ণ বিশ্লেষণ ভেবে নিতে পারে। সমাধান প্রযুক্তিগত ও সহজ: প্রতিবেদনের হ্যাশের সঙ্গে একটি স্ট্যাটাস ফিল্ড যুক্ত করা, যাতে অ্যাগ্রিগেটর নিঃশব্দে সেটি গ্রাস করতে না পারে।

খালি পেলোডকে 'ঝুঁকিমুক্ত' পড়া: ব্লকচেইন ক্রিকেট-ডেটা পাইপলাইনের নাল-স্টেট লেজার

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

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

ব্লকচেইন-ঘেঁষা আরেকটি ভুল ধারণা এখানে পরিষ্কার হয়ে যায়। অনেকে ভাবেন অপরিবর্তনশীলতা মানেই বিশ্বাসযোগ্যতা। কিন্তু একটি খালি পেলোডকে চেইনে গেঁথে দিলে সেটি কেবল স্থায়ী খালি হয়ে যায়। হ্যাশ প্রমাণ করে বাইটগুলো ঠিক ছিল; প্রমাণ করে না বাইটগুলো যথেষ্ট ছিল। এটা কি একই বাইট, আর এই বাইটগুলো কি যথেষ্ট — দুটি আলাদা প্রশ্ন। ব্লকচেইন প্রথমটার চমৎকার উত্তর দেয়, দ্বিতীয়টার কোনো উত্তর দেয় না। পূর্ণতা একটি অর্থগত ধর্ম, যা স্কিমাকে ঘোষণা করতে হয়; চেইন তা অনুমান করতে পারে না।

প্রতিবেদনটি একটি দরজা খোলা রেখেছে, আর সেটি বন্ধ করা উচিত নয়: হতে পারে উৎস নিবন্ধটি সত্যিই বিষয়শূন্য ছিল। কিন্তু বাস্তব নিবন্ধের শিরোনাম N/A হয় না, এবং শূন্য বাক্যের নিবন্ধ সাধারণত দ্বিতীয় স্তর পর্যন্ত পৌঁছায় না। তাই ক্রমটা হওয়া উচিত — আগে ফেচ ও পার্স লগ দেখুন, তারপর উৎসকে দোষ দিন। একই ইনপুট একই পার্সারের মধ্য দিয়ে আবার পাঠালে একই ফাঁকা ফলাফল ফিরবে; সমস্যা পার্সারে থাকলে পুনরাবৃত্তি সমাধান নয়, প্রমাণ।

সামনের সংকেত তিনটি। এক, নাল-হারকে প্রথম শ্রেণির মেট্রিক বানানো — প্রতি ব্যাচে কত শতাংশ পেলোড ফাঁকা ফিরছে। দুই, পরবর্তী ব্যাচের আগে গেট-শর্তটি সত্যিই বসানো হলো কি না। তিন, শ্রেণিবিন্যাস-বিচ্যুতির পুনর্মিলন যাচাই সম্পন্ন হলো কি না। প্রশ্নটা এখন এই: আপনার ড্যাশবোর্ডের সবুজ রঙ কি মাপা হয়েছে, নাকি শুধু কেউ মাপেনি?

সংশ্লিষ্ট খেলোয়াড়গণ