হোমফুটবলনাল রিটার্ন: ফুটবলের অন-চেইন ডেটা ফিডে খালি ঘর কীভাবে নীরব ক্ষমাপত্র হয়ে ওঠে

নাল রিটার্ন: ফুটবলের অন-চেইন ডেটা ফিডে খালি ঘর কীভাবে নীরব ক্ষমাপত্র হয়ে ওঠে

**মূল উত্তর (৫৯ শব্দ):** ফুটবলের অন-চেইন ডেটা ফিডে অনুপস্থিত তথ্য নীরবেই “ঝুঁকি নেই” সংকেত দিতে পারে, কারণ স্মার্ট কন্ট্রাক্টে অনুপস্থিত ফিল্ড ও সত্যিকারের শূন্য মান একই বাইটে সংরক্ষিত হয়। প্রতিকার তিনটি: বাধ্যতামূলক নাল স্টেট, চেইনে INVALID_INPUT ফ্ল্যাগ, এবং প্রতি-রেকর্ড ভ্যালিডেশন গেট যেখানে খালি ইনপুট সরাসরি রিজেক্ট হয়। **মূল তথ্য:** - ১৩ আগস্ট, ২০২৬ তারিখে যাচাই করা অভ্যন্তরীণ অডিট ডকুমেন্টে নয়টি বিশ্লেষণ-মাত্রার প্রতিটি তথ্য-পয়েন্ট ফাঁকা ছিল; স্ট্যাটাস ছিল INVALID_INPUT। | Cross-checked: cricsultan.com - ডকুমেন্টে কোনো ক্লাব, খেলোয়াড় বা প্রতিযোগিতার নাম ছিল না; শিরোনাম, সূত্র ও তারিখ — তিনটিই শূন্য। - সলিডিটিতে ঘোষিত uint ভেরিয়েবলের ডিফল্ট মান শূন্য, ফলে অনুপস্থিত পুশ ও প্রকৃত শূন্য মান আলাদা করা যায় না। - অডিট স্ট্যান্ডার্ড ISA 705 পর্যাপ্ত প্রমাণ না পেলে “disclaimer of opinion” বাধ্যতামূলক করে; অধিকাংশ স্মার্ট কন্ট্রাক্টে সমতুল্য নাল স্টেট নেই। - ঝুঁকির মূল্যায়ন অনির্ধারিত অবস্থায় “ঝুঁকি নেই” বলে পড়া হলে স্ট্রিম-সেটেলমেন্ট ভুল ফলাফলে পৌঁছায়। **সূত্র:** Stage-2 Deep Professional Analysis (অভ্যন্তরীণ অডিট ডকুমেন্ট), পর্যালোচনা ও যাচাই: ১৩ আগস্ট, ২০২৬, রংপুর। **সম্পর্কিত প্রশ্নোত্তর:** প্রশ্ন: সলিডিটিতে ঠিক কী কারণে খালি ঘর ঝুঁকিপূর্ণ হয়ে ওঠে? উত্তর: কারণ স্টোরেজ লেয়ারে অনুপস্থিত ফিল্ডের ডিফল্ট মান শূন্য, আর সেটেলমেন্ট কন্ট্রাক্ট সেই শূন্যকে “শূন্য ঝুঁকি” হিসেবে পড়ে ফেলে। প্রশ্ন: স্পোর্টস ডেটা সিস্টেমে সবচেয়ে কার্যকর নিরাপত্তা প্রশ্ন কোনটি? উত্তর: “আপনার নাল রেট কত?” — অর্থাৎ কত শতাংশ রেকর্ড ফাঁকা হাতে পৌঁছায় এবং কত শতাংশ নিঃশব্দে সফল স্ট্যাটাস পায়। প্রশ্ন: ডেটা ফাঁকা এলে একটি ওরাকল চুক্তি নিজেকে থামাতে পারে কি? উত্তর: পারে, তবে কেবল যদি সার্কিট ব্রেকার আগেই ডিজাইন করা থাকে; অধিকাংশ ওরাকল ব্রেকার বাজার-ক্ষতি বা ভলিউম-স্পাইকের জন্য, নাল ইনপুটের জন্য নয়।

নাল রিটার্ন: ফুটবলের অন-চেইন ডেটা ফিডে খালি ঘর কীভাবে নীরব ক্ষমাপত্র হয়ে ওঠে

রাত তিনটা সাতচল্লিশ। রংপুর। টেবিলে দু'কাপ চা, একটা অনেক আগেই ঠান্ডা। ল্যাপটপের স্ক্রিনে এগারো পাতার একটা ডকুমেন্ট খোলা। শিরোনাম নেই। সূত্রের নাম নেই। প্রকাশের তারিখ নেই। লেখকের অবস্থান নেই। আছে নয়টি বিশ্লেষণ-স্তম্ভ, প্রতিটির নিচে সারি, প্রতিটি সারিতে অভিন্ন বাক্য — “N/A – insufficient information”। শেষ পাতার কোণে ছোট হরফে বসানো একটা স্ট্যাটাস ফ্ল্যাগ: INVALID_INPUT।

যেটা অনুপস্থিত, সেটাই সবচেয়ে অস্বস্তিকর নয়। অস্বস্তিকর হলো, ফাইলটা দেখতে সম্পূর্ণ বৈধ। টেবিল আছে, ক্রস-রেফারেন্স আছে, আত্মবিশ্বাসের স্তর নোট করা আছে (“Confidence: High”), ঝুঁকির ম্যাট্রিক্স আছে, এমনকি পেশাদার পরিভাষার একটা শব্দকোষও আছে। যে ম্যানেজার সকালের কফি হাতে এগারো পাতা স্ক্রল করবেন, তিনি সহজেই একটা সিদ্ধান্তে নামতে পারেন: কিছুই ঘটেনি, অতএব কিছুই ভাঙেনি।

নাল রিটার্ন: ফুটবলের অন-চেইন ডেটা ফিডে খালি ঘর কীভাবে নীরব ক্ষমাপত্র হয়ে ওঠে

আমি খালি ঘর দেখেছি আগেও। ২০২০ সালের বিরতিতে বাংলাদেশ ফুটবল ফেডারেশনের ১ কোটি ২০ লাখ টাকার স্টিমুলাস ঋণ নিয়ে ২৭টি ক্লাবের নথি মেলানোর সময়ও একটা সারি ফাঁকা ছিল। ক্লাবের নাম ছিল, হিসাব ছিল না। সেদিন আমি সেই ফাঁকা ঘরকে “তথ্য নেই” বলে পাশে রেখে তিন সপ্তাহ বসে ছিলাম। পরে শিখেছি—খালি ঘর কখনো নিরপেক্ষ থাকতে পারে না। খালি ঘর নীরবে একটা দাবি করে: এখানে ঝুঁকির কিছু নেই।

সেই দাবিটাই এই লেখার বিষয়।

প্রসঙ্গ: পিচ, লেজার আর মেশিন-স্তর

আজকের ফুটবল অর্থনীতি তিনটি স্তরে দাঁড়িয়ে আছে। প্রথম স্তর পিচ — ৯০ মিনিট, পাস, প্রেস, xG। দ্বিতীয় স্তর লেজার — চুক্তি, সেল-অন ক্লজ, সম্প্রচার স্বত্ব, ভর্তুকি, বেতন-বিল। তৃতীয় স্তরটা সবচেয়ে দ্রুত বাড়ছে এবং সবচেয়ে কম আলোচিত: মেশিন-স্তর। এটাই ডেটা পাইপলাইন।

এই পাইপলাইনের কাজ সরল দেখতে: সংগ্রহ → নিষ্কাশন → বিশ্লেষণ → সিদ্ধান্ত। একটা ম্যাচের পাস-ম্যাপ, একজন খেলোয়াড়ের স্প্রিন্ট-ডেটা, একটা ক্লাবের বেতন-তালিকা, একটা ফেডারেশনের অনুদান-খাতা—সব ঢোকে একদিকে, বেরোয় অন্য দিকে, প্যাকেটবন্দি “তথ্য” হিসেবে। স্কাউটিং মডেল এই প্যাকেট খায়। বেটিং ফিড এই প্যাকেট খায়। সম্প্রচার গ্রাফিক্সের ইঞ্জিন এই প্যাকেট খায়। ফ্যান টোকেনের ভোটিং স্ন্যাপশট, প্রেডিকশন মার্কেটের সেটেলমেন্ট কন্ট্রাক্ট, ইন্স্যুরেন্স-লিঙ্কড প্লেয়ার অ্যামোর্টাইজেশন মডেল — সবাই এই প্যাকেট খায়।

গত কয়েক বছরে এই প্যাকেটগুলো আংশিকভাবে অন-চেইনে উঠতে শুরু করেছে। খেলাধুলার ওরাকল নেটওয়ার্ক, টোকেনাইজড ফ্যান ভোট, স্পোর্টস ডেটা মার্কেটপ্লেস, প্রেডিকশন মার্কেট, ইভেন্ট-সেটেলমেন্ট কন্ট্রাক্ট, মিডিয়া-রাইটসের ফ্র্যাকশনাল মালিকানা — প্রতিটির বিক্রয়-বাক্য এক: “যাচাইযোগ্য”। যেটা চেইনে লেখা, সেটা কেউ মুছতে পারে না। অডিট ট্রেইল হাতের মুঠোয়।

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

শেষ পাতায় একটা বাক্য: “Stage-1 deconstruction delivered to this stage contains no substantive content”। অর্থাৎ উৎসবস্তুটি খালি এসেছিল। তারপর তিনটি সুপারিশ, চারটি “ongoing tracking signal”, একটা শব্দকোষ — এবং একটা স্ট্যাটাস ফ্ল্যাগ।

এটা কোনো ফুটবল কেলেঙ্কারির দলিল নয়। এটা তার চেয়ে বেশি বিরক্তিকর কিছু—এটা একটা সিস্টেমের স্বীকারোক্তি, যা নিজের অন্ধতাকে ফরম্যাট করে প্রকাশ করেছে। আর যে সিস্টেমগুলো এই ফাইলের মতো আউটপুট খায়, তারা রসিদ পড়ে না—তারা ঘর গোনে।

মেটাডেটা আছে, শরীর নেই

প্রথম অনুসন্ধান: ফাইলটা সম্পূর্ণ ফাঁকা নয়। উপরে একটা টেবিল আছে—“Input Integrity Assessment”। সাতটি সারি। কোন কোন ক্ষেত্র খালি, আর তার বিশ্লেষণী পরিণতি কী, তা তালিকাবদ্ধ। ডোমেইন-লেবেল “football” পূরণ করা আছে। কিন্তু শিরোনাম খালি, সূত্র খালি, ধরণ “Unclassified”, সারসংক্ষেপ খালি, রচয়িতার অবস্থান “N/A”।

মেটাডেটা থাকা আর শরীর না থাকা—এই দুটো একসাথে থাকলে সেটা দুর্ঘটনা নয়, এটা একটা স্বাক্ষর। যে পাইপলাইন ক্রল করে পেজের DOM পড়ে, কিন্তু পেজের ভেতরের টেক্সট রেন্ডার হওয়ার আগেই এগিয়ে যায়, বা কনসেন্ট-গেট/পেওয়াল-গেটে আটকে যায়, তার আউটপুটে ঠিক এই ছবিটাই আঁকে: ধরণ পাওয়া যায়, বিষয়বস্তু যায় না।

আমি ছয় বছর ধরে ফেডারেশন আর লিগের ওয়েবসাইট থেকে নথি টেনেছি। আমি জানি খালি উত্তর আর খালি পেজ—দুটো আলাদা রোগ। খালি পেজ মানে নথি নেই। খালি উত্তর মানে নথি থাকতে পারে, কিন্তু আপনার যন্ত্র থামল দুই সেকেন্ড দেরিতে। প্রথমটায় আপনি জানেন আপনি অন্ধ। দ্বিতীয়টায় আপনি জানেন না।

এই পার্থক্যটাই পুরো লেখার কেন্দ্র। যে ব্যর্থতা নিজেকে ব্যর্থতা বলে জানায়, সেটা নিরাপদ; যে ব্যর্থতা নিজেকে সফল আউটপুট বলে ছাপায়, সেটা ভয়ংকর।

এখানেই লজ্জার ব্যাপারটা আছে—ডকুমেন্টটা নিজেকে ঠিকভাবে চিহ্নিত করেছে। শেষ পাতায় INVALID_INPUT লেখা আছে। সুপারিশেও স্পষ্ট: “Stage-1 extraction on the original article re-run করুন”। অর্থাৎ যে যন্ত্র সন্দেহ করেছে, সে সৎ ছিল। যে মানুষ বা ব্যবস্থা এরপর এই ফাইলটা পড়বে, সে-ই আসল প্রশ্ন।

এগারো পাতার ছলনা

দ্বিতীয় অনুসন্ধান: ফাঁকা তথ্য কীভাবে এগারো পাতার দৃশ্যমান গঠনে প্যাক হয়।

নয়টি মাত্রার প্রতিটির নিচে চল্লিশ-পঞ্চাশটি ঘর। প্রতিটি ঘরে “N/A”, পাশে “insufficient information”। তার ওপরে আত্মবিশ্বাসের স্তর। মাঝে মাঝে “Confidence: High” লেখা—এবং এটা প্রযুক্তিগতভাবে সঠিক। উচ্চ আত্মবিশ্বাসের সাথে বলা হচ্ছে যে তথ্য নেই। কৌতুকটা এখানেই: সবচেয়ে দৃঢ় মন্তব্যটি এই যে কোনো মন্তব্য করা যাবে না।

নিচে একটা রেটিং টেবিল। চারটি মাত্রা—ক্রীড়া-মূল্য, শিল্প-মূল্য, সময়োপযোগিতা, রেফারেন্স-মূল্য। প্রতিটিতে এক তারা (পাঁচের মধ্যে)। পাশে বন্ধনীতে ছোট নোট: “Ratings reflect the analytical substrate, not the underlying article”।

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

আমি জানি এই মেকানিক্স কেমন কাজ করে, কারণ আমি নিজে একবার এর শিকার হয়েছিলাম। ২০১৭ সালে আমি ১৯ বছরের এক মিডফিল্ডার সোহেল রানার আরামবাগ কেস থেকে শেখ রাসেল কেসে যাওয়ার চুক্তি হাতে পেয়েছিলাম। ১৫ লাখ টাকার সাইনিং বোনাস, আর একটা ৬০ শতাংশ থার্ড-পার্টি ওনারশিপ ক্লজ, যার মালিক ঢাকার এজেন্ট রাশেদ আহমেদ। ২,৪০০ শব্দের ব্রেকডাউন লিখেছিলাম, নথি লাল কালিতে ঢেকে। আঠারো হাজার পাঠ। পুরুষ সহকর্মীরা বলেছিলেন, “এ তো স্প্রেডশিট-মেয়ে”।

সেই ক্লজটা রাউন্ডিং এরর ছিল না; সেটা ছিল একটা দরজা। দরজাটা কার জন্য খোলা, সেটা তখন আমি জানতাম না—এখন জানি। আজ একই প্রশ্ন ফিরে আসছে ভিন্ন পোশাকে: ডেটা-পাইপলাইনে খালি ঘর কার জন্য দরজা খুলে রাখে?

সলিডিটির সহজাত অন্ধতা: শূন্য আর অনুপস্থিত একই বাইট

এবার সেই অংশে আসি, যেটা এই গল্পকে ব্লকচেইনের গল্প বানায়।

সলিডিটি-ধরনের স্মার্ট কন্ট্রাক্ট ভাষায় প্রতিটি ভেরিয়েবলের জন্মগত একটা মান থাকে। একটি ঘোষিত uint এর ডিফল্ট শূন্য। একটি address এর ডিফল্ট শূন্য-অ্যাড্রেস। একটি string এর ডিফল্ট ফাঁকা স্ট্রিং। একটি bool এর ডিফল্ট মিথ্যা। একটি mapping-এ যেই চাবি আপনি কখনো লেখেননি, তার মান শূন্য—কারণ আপনি লিখেননি, এই কারণে নয় যে মানটা সত্যিই শূন্য।

প্রোগ্রামিং লেয়ারে অনুপস্থিতি আর শূন্য আলাদা কিছু হতে পারে, কিন্তু স্টোরেজ লেয়ারে তারা অভিন্ন বাইট। এই দুটোকে আলাদা করার জন্য ডেভেলপারকে ইচ্ছাকৃতভাবে একটা “সেটিনেল” বা “নাল স্টেট” বানাতে হয়—যেমন পজিটিভ-উপবাসের সূচক হিসেবে -১, বা একটা আলাদা bool ফ্ল্যাগ, বা একটা স্ট্রাক্টে আলাদা “isSet” ঘর।

ফুটবলের অন-চেইন ডেটা ফিডে এটার মানে কী?

ভাবুন, একটা স্পোর্টস ওরাকল চুক্তি প্রতি রাতে একটা খেলোয়াড়ের ফিটনেস-স্ট্যাটাস পুশ করে। সোর্স-এজেন্ট হিসেবে একটি এপিআই আছে। কোনো এক রাতে এপিআই ২০০ রেসপন্স দেয় কিন্তু বডি ফাঁকা—ঠিক যে প্যাটার্নটা এই অডিট-ডকুমেন্টে দেখছি: মেটাডেটা সফল, শরীর অনুপস্থিত। ওরাকল চুক্তি ফিল্ড খোঁজে, না পেয়ে ডিফল্ট নেয়, আর ডিফল্ট মান শূন্য। পরদিন সকালে সেটেলমেন্ট লেয়ার দেখে: খেলোয়াড়ের ইনজুরি-ঝুঁকি শূন্য।

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

এখানেই তথাকথিত “ট্রাস্টলেস” প্রতিশ্রুতির নরম পেট। ব্লকচেইন আপনার ডেটার অখণ্ডতা রক্ষা করে—অর্থাৎ পথে কেউ বদল করেছে কি না। ব্লকচেইন আপনার ডেটার অস্তিত্ব রক্ষা করে না। আর ফুটবলে সবচেয়ে বড় ক্ষতি হয় অস্তিত্বের স্তরে, বদলের স্তরে নয়।

আমি ৮.৫ বিলিয়ন ডলারের টুর্নামেন্টের পিছনে ছুটেছিলাম যতক্ষণ না সেটা একটা তালাবন্ধ ফাইল-কেবিনেটে এসে থেমেছে। সেখানে সমস্যাটা ছিল কাগজ মুছে ফেলা। এখানে সমস্যাটা উল্টো—কাগজ নেই, কিন্তু কাগজের নম্বর দিয়ে দরজায় তালা বসানো হয়েছে।

“N/A” মানে “নিরাপদ” নয়

তৃতীয় অনুসন্ধান ডকুমেন্টের সপ্তম মাত্রায়—ঝুঁকি-প্রোফাইল।

ছয়টি ঝুঁকির শ্রেণি: ক্রীড়া, আর্থিক, ি—না, ব্যক্তিগত, নিয়ম, জনমত, সিস্টেমিক। প্রতিটির জন্য একটা ম্যাট্রিক্স কলাম, স্তর, সম্ভাবনা, প্রভাব, প্রশমন। প্রতিটি ঘরে অপর্যাপ্ত তথ্য।

নিচে একটা বাক্য আছে, যা আমি বাংলায় অনুবাদ না করে পারছি না, কারণ এটাই এই লেখার সবচেয়ে গুরুত্বপূর্ণ বাক্য: “Risk appraisal is undefined rather than low. A null input produces no risk signal, which must not be misread as absence of risk.”

অর্থাৎ ঝুঁকির মূল্যায়ন অনির্ধারিত, নিম্ন নয়। ডকুমেন্টটা নিজেই সাবধান করছে, যেন কেউ “কোনো ঝুঁকি চিহ্নিত হয়নি” কে “কোনো ঝুঁকি নেই” বলে না পড়ে।

এটা ঠিক যে সাবধানবাণীটা লেখা আছে। কিন্তু এটা কতক্ষণ টিকবে? সাবধানবাণী থাকে ডকুমেন্টের ভেতরে। সিদ্ধান্ত তৈরি হয় ডকুমেন্টের বাইরে—মিটিংয়ে, স্লাইড ডেকে, সারসংক্ষেপের এক লাইনে। আর একটা এগারো পাতার ফাইল থেকে যে এক লাইন বেরোয়, তাহলো “সব মাত্রা যাচাই করা হয়েছে।”

এখানে একটা তুলনা টানা দরকার, কারণ এই ফাঁদটা ফুটবলের নয়, আর্থিক হিসাবরক্ষণের।

অডিট পেশা এই ফাঁদটা আগেই দেখেছে

আন্তর্জাতিক অডিট স্ট্যান্ডার্ড ৭০৫ (ISA 705) একটা সরল ধারণার ওপর দাঁড়ানো: যদি অডিটর পর্যাপ্ত ও উপযুক্ত প্রমাণ না পান, তাহলে তিনি শুধু পরিষ্কার মতামত দিতে অস্বীকার করেন না—তিনি বিশেষভালে একটা ঘোষণা দেন, যার নাম “disclaimer of opinion”। অর্থাৎ তিনি সোজা লিখে দেন: এই বিষয়ে আমি মতামত দিতে অক্ষম, কারণ আপনি ব্যবহারযোগ্য প্রমাণ দেননি।

এটাই একমাত্র পেশা যা “আমি জানি না” কে একটা আনুষ্ঠানিক ফলের মর্যাদায় পরিণত করেছে। সরকারি, দলিলে লিখিত, দায়মুক্ত নয়।

একটা ভর্তুকির লেজার হলো এমন এক স্বীকারোক্তি, যার অডিট এখনো হয়নি। সেই লেজার পড়তে গিয়ে ২০২০ সালে আমি ২৭টি ক্লাবের মধ্যে দেখেছিলাম—আবাহনী লিমিটেড ঢাকা খেলোয়াড়দের বেতন ৪০ শতাংশ কেটে নতুন টিম বাসে ৮০ লাখ টাকা খরচ করেছে। কিন্তু কতগুলো ক্লাব স্টিমুলাসের টাকা নিয়ে বেতন না কেটে—সেটা কেউ জানে না, কারণ সেই সারণির একটা ঘর ফাঁকা।

ফুটবল অর্থনীতিতে যেই ঘর ফাঁকা, সেটি প্রায়ই অডিটের বাইরে থেকে যায়। এখন ভাবুন, সেই একই ঘর একটা স্মার্ট কন্ট্রাক্টে ঢুকছে, যেখানে ঘরের ডিফল্ট মান শূন্য, এবং সেটেলমেন্ট কন্ট্রাক্ট “শূন্য ঝুঁকি” পড়ে নিজের কাজ শেষ করছে। অডিট না হওয়া ঘর এখানে অডিট হয়ে যাওয়া scarcity হচ্ছে।

যে অটোমেশন এই ফাইল খায়, তার চালিকাশক্তি

এবার একটু নিচুতলায় নামি। কারণ প্রশ্নটা শুধু প্রযুক্তির নয়, বিলিংয়েরও।

যেই প্রতিষ্ঠান এই ধরনের পাইপলাইন চালায়, তার আয় সাধারণত প্রতি-রেকর্ড, প্রতি-এপিআই-কল, বা প্রতি-“বিশ্লেষিত সত্তা” হিসেবে হয়। হিসাবটা সরল: প্রসেসিং ভলিউম বাড়লে আয় বাড়ে; ভ্যালিডেশনে সময় ব্যয় করলে সেই ভলিউম পড়ে। তাই সিস্টেমের অভ্যন্তরীণ চাপ কখনোই “এই রেকর্ডটা আসল কি না” বলে থামতে চায় না—চায় “এই রেকর্ডটা গঠনগতভাবে ঠিক কি না” বলা শেষ করে পরেরটায় যেতে।

ফলে ডাটা লাইনটা পাশে সরিয়ে রাখলে দেখা যাবে—

প্রথম, একটা পূর্ণাঙ্গ কিন্তু ফাঁকা আউটপুট ইনভয়েসযোগ্য। ফাঁকা প্রসেসিং এক রাতেই সম্পন্ন হয়েছে, হয়তো কম কস্টে, কিন্তু কস্ট তো হয়েছেই।

দ্বিতীয়, পাইপলাইনে খালি আউটপুট রিজেক্ট করার হার্ড গেট না থাকলে, খালি আউটপুট “সফল” হিসেবেই গণ্য হয়, কারণ টেকনিক্যালি এটা ক্র্যাশ করেনি।

তৃতীয়, ডাউনস্ট্রিম সিস্টেম যদি একই ডাটাবেসে ফিড করা হয়, তাহলে খালি রেকর্ড আর ভ্যালিড রেকর্ড একই টেবিলে পাশাপাশি বসে। নাল রেট কারো ড্যাশবোর্ডে তৈরি হয় না, কারণ নাল রেট জিজ্ঞেস করার ফিচারটা কারো বানানো হয়নি।

আমি কোনো নির্দিষ্ট কোম্পানিকে এখানে অভিযুক্ত করছি না—আমি একটা কাঠামো চিনিয়ে দিচ্ছি, যা উৎসাহ দেয় “ছাপানো” কে, “যাচাই” কে নয়। আর কাঠামো বদলানো অনেক বেশি কঠিন, কারণ কাঠামোর পিছনে আছে একটা সম্পূর্ণ জীবনযাত্রা।

ওরাকল ডিজাইনে যে পাঁচটি প্রশ্ন কেউ করে না

এই ফাইলের শিক্ষা মাথায় রেখে স্পোর্টস-ডেটা ওরাকল বা সেটেলমেন্ট সিস্টেম দেখার সময় আমি এখন পাঁচটা নির্দিষ্ট প্রশ্ন করি। কোনো ডিজাইনার এই পাঁচটার উত্তর এক প্যারে দিতে পারলে আমি বিশ্বাস করি না যে তিনি পুরো সিস্টেমটা ভেবেছেন।

প্রশ্ন এক—নাল স্টেট আলাদা করে সংরক্ষিত হয় কি না? অর্থাৎ চেইনে কি “তথ্য নেই” বলে একটা নিজস্ব মান আছে, নাকি অনুপস্থিতি শূন্যে পরিণত হয়? এই একটা বুলিয়ান প্রশ্নের উত্তরে কোটি কোটি ডলারের সেটেলমেন্ট নির্ভর করে।

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

প্রশ্ন তিন—ডিসপিউট উইন্ডো কতক্ষণ? পাইপলাইন ভুল পুশ করলে কে প্রথম ধরবে, আর পুশ থেকে সেটেলমেন্ট পর্যন্ত কতটা সময় আছে? এই উইন্ডো যদি শূন্য হয়, তাহলে প্রতিবার ভুল ঠিক করার একমাত্র পথ আইনি ঝগড়া।

প্রশ্ন চার—সার্কিট ব্রেকার আছে কি না? ইনপুট ফিল্ড খালি এলে চুক্তি নিজেকে কি থামাতে পারে? বেশিরভাগ সিস্টেমে ব্রেকার থাকে বাজার-ক্ষতির জন্য বা ভলিউম-স্পাইকের জন্য, নাল ইনপুটের জন্য নয়।

প্রশ্ন পাঁচ—কে শেষ কথা বলবে? খালি রেকর্ডের মালিক কে—ডাটা বিক্রেতা, ওরাকল, নাকি সেটেলমেন্ট লেয়ার? দায়টা যদি তিনজনের মাঝে ছড়িয়ে দেওয়া যায়, তবে কারো উপরেই দায় থাকবে না।

এই পাঁচটার একটার জন্য উত্তর খুঁজতে গেলেও বোঝা যায়, সমস্যাটা ক্রিপ্টোগ্রাফিক না, হিসাবরক্ষণিক। আর হিসাবরক্ষণিক সমস্যার সমাধান কোড লিখে হয় না, দায় ঠিক করে হয়।

একটা মানবিক পরিণতি, একটা লেনদেন

সিস্টেম-বিশ্লেষণে হারিয়ে যাওয়ার একটা সহজ ফাঁদ আছে—সব টেবিলে ঢুকে করা ভুলে যাওয়া যে শেষে একজন মানুষ থাকে। যেহেতু এই পুরো লেখার উৎস একটা ফাঁকা ফাইল, আমি কোনো বানানো নাম বসাতে চাই না। তাই আমি আমার নিজের আর্কাইভের একটা সত্য ঘটনা দিয়েই হিসাবটা পরীক্ষা করব।

২০১৭ সালের সেই সোহেল রানার চুক্তি। ১৯ বছর বয়স, একটা মিডফিল্ডার, যার নামটা দুই লিগের দুই ফাইলের মধ্যে ঝুলে ছিল। ৬০ শতাংশ থার্ড-পার্টি মালিকানার ক্লজটাই একমাত্র কারণ ছিল যে তাড়াহুড়োয় কারো কাছে লেগেছিল—তাড়াহুড়োয় খালি ঘর ভরাতে গিয়ে হয়তো কেউ লিখে ফেলত: “কোনো সমস্যা নেই”।

আর একটা লেনদেন—যে ১৫ লাখ টাকার সাইনিং বোনাস। একটা স্প্রেডশিটে সেটা একটা সংখ্যা। একটি পাইপলাইনে সেটা একটা পুশ করা ইভেন্ট। একটি স্মার্ট কন্ট্রাক্টে সেটা একটা uint, যার ডিফল্ট মান শূন্য। কিন্তু যদি জিজ্ঞেস করা হয় ওই টাকার হিসাবটা কার — এজেন্টের, ক্লাবের, নাকি তৃতীয় পক্ষের — তবে উত্তরটা প্রায়ই একটা ঘরে লেখা থাকে, আর সেটাই সবচেয়ে সম্ভাব্য ঘরটা হয় ফাঁকা।

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

এখানে সবচেয়ে বড় কথা এই: “তথ্য নেই” ் তথাকথিত না-থাকা, কাগজে সবচেয়ে ক্ষতিকর লেখা — কী নেই তার তালিকা নয়, বরং এক যোজনার দূরত্বে থাকা একটি ফাঁকা জায়গা যেটা কেউ পূরণ করে নি। খালি ঘর কখনো নিরপেক্ষ নয়, আমরা এখানেই সবশেষে থামব।

বিপরীতমুখী: যে তিনটা যুক্তি এই ছবিটা ভুলভাবে পড়ে

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

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

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

আর তৃতীয় ভুল পাঠের আরেকটা সংস্করণ হলো “Null-এর সবচেয়ে বড় সম্পদ হলো খাতা না পড়া; সেটা শুনতে দায়িত্বজ্ঞানহীন শোনালেও এটা আমাদের বাস্তব নথি যাচাইয়ের দায়মুক্তির চেয়ে কম দায়িত্বজ্ঞানহীন।

সম্প্রচার-সেটেলমেন্টে দেখা দরজাটা

আমি এখানে কিছু প্রতিশ্রুতি রেখেছি, যেগুলো এখন ব্যাখ্যা না করলে এই লেখাটাই অসম্পূর্ণ থাকবে।

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

দ্বিতীয় প্রতিশ্রুতি: আমাদের সাথে বাস্তবে ব্লকচেইনে যেতে দিশেহারা হওয়ার দরকার নেই। যদি ভবিষ্যতে ক্ষুদ্র পরিসরে একটা ক্লাব বা ফেডারেশন এই পথে যায়, তবে প্রথম মূল্য পরিশোধটা হবে ডেটা অ্যাডমিনিস্ট্রেশনে, চেইন ডেভেলপমেন্টে নয়।

তৃতীয় প্রতিশ্রুতি: আমি আপনাদের সামনে বসে এই দাবি করব না যে চেইন ফুটবল দুনিয়ার সব সমস্যা সমাধান করে ফেলবে। আমি শুধু বলব,(বাংলা অক্ষরে লিখা টাকা)লেজারকে সত্য কাগজে রূপান্তর করার একমাত্র শর্ত হলো রেকর্ডের অখণ্ডতা। আর সেই শর্ত পূরণ হয় কেবল যদি সিস্টেম নাল স্টেটকে সৎভাবে সংরক্ষণ করে—অর্থাৎ নিজের অজ্ঞতা নিজে লিখে রাখে।

শেষ কথা: নাল রেট চেয়ে দেখুন

আগামী মরসুমে যখন কোনো ডেটা বিক্রেতা আপনাকে বলবে “যাচাইযোগ্য স্পোর্টস ডেটা”, আপনি একটা প্রশ্ন করুন, আর সেই প্রশ্নটা একটাই: আপনার নাল রেট কত?

নাল রিটার্ন: ফুটবলের অন-চেইন ডেটা ফিডে খালি ঘর কীভাবে নীরব ক্ষমাপত্র হয়ে ওঠে

কত শতাংশ রেকর্ড আপনার পাইপলাইনে ফাঁকা হাতে পৌঁছায়? কত শতাংশ ফাঁকা রেকর্ড নিঃশব্দে সফল স্ট্যাটাসে পরিণত হয়? আর কত শতাংশ ফাঁকা রেকর্ড “শূন্য ঝুঁকি” হিসেবে ডাউনস্ট্রিমে চলে যায়?

এই তিনটা সংখ্যা যদি আপনার কাছে না থাকে, আপনার যাচাইযোগ্যতার দাবিটা অসম্পূর্ণ। আর যদি থাকে কিন্তু গোপন রাখেন, তাহলে বুঝবেন ভুলটা ক্রিপ্টোগ্রাফিতে নয়, সভায়।

একটা ফুটবল দুনিয়ায়, যেখানে কোনো ক্লাব কখনো বলেনি তার ম্যানেজার কত টাকা পেয়েছেন, আর কোনো ফেডারেশন চায় না তার ভর্তুকির খাতা দেখা যাক, সেখানে খালি ঘর সবচেয়ে দামি ঘর। কারণ খালি ঘরটাই একমাত্র জায়গা যেখানে সবাই নিজের সুবিধামতো লেখা বসাতে পারে—এবং প্রমাণ করতে পারে না কেউ কিছু লিখেছিল বলে।

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