ফিল্ড নোটস

ক্রিপ্টো ATM ফ্লিট চালানো: ক্যাশ, ক্যাসেট, কমপ্লায়েন্স

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

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

এক ক্যাবিনেটে দুটি মেশিন

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

কাউন্টারের কাচের ওপারে লেনদেন

প্রতিটি মেশিনে একটি এক্সচেঞ্জ ঘটে, আর সেটি কাউন্টার টার্মিনালের মতোই locked-quote নিয়মে চলে: স্ক্রিন একটি রেট দেখায়, কাউন্টডাউনসহ পুরো সেশনের জন্য তা ধরে রাখে, আর গ্রাহক হয় সেই কোটেই লেনদেন করেন, নয়তো সেশন নতুন করে কোট করে। নিরাপত্তার মডেল হলো ক্রম। buy-এর ক্ষেত্রে মেশিন ক্রিপ্টো ছাড়ে কেবল নোট যাচাই হয়ে stacker-এ জমা হওয়ার পর, শুধু ঢোকানো হলেই নয়, কারণ escrow-র গলায় আটকে থাকা নোট এখনো টাকা নয়। sell-এর ক্ষেত্রে আসা ট্রান্সফারে পর্যাপ্ত confirmation না হওয়া পর্যন্ত একটি নোটও বের হয় না, কারণ বের হয়ে যাওয়া নোট আর ফেরানো যায় না। অপরিবর্তনীয় কাজটি সবসময় সবার শেষে, অন্য পক্ষ চূড়ান্ত হওয়ার পরেই। এই ক্রম ভুল হলে আপনি এমন মেশিন বানিয়েছেন যা কখনো না-রাখা নোটের বিনিময়ে ক্রিপ্টো বিলিয়ে দেয়, অথবা কখনো না-আসা ট্রান্সফারের বদলে নগদ দেয়।

Cassette: বাস্তব অর্ধেক, যা কেউ ডেমোতে দেখায় না

নগদ থাকে cassette-এ, অর্থাৎ নোটের খোলা যায় এমন বাক্সে, সাধারণত প্রতি denomination-এর জন্য একটি, যা মেশিনে বসানো হয়। recycler যে নোট নেয়, সেই নোটই আবার পরিশোধ করতে পারে; সাধারণ dispenser শুধু অপারেটরের ভরা cassette থেকে দেয়। প্রতিটি cassette-এর দুটি সংখ্যা থাকে: সফটওয়্যার যা ধরে নেয়, আর বাস্তবে যা সত্য। অপারেটরের পুরো কাজ এক বাক্যে বললে, এই দুটিকে সমান রাখা। প্রতিটি গৃহীত নোট believed count বাড়ায়, প্রতিটি বের হওয়া নোট কমায়, আর নগদ সংগ্রহের ভিজিটে বাস্তব গণনার সঙ্গে তা রিসেট হয়। সংগ্রহের সময় believed count ও গোনা সংখ্যা না মিললে সেই ফারাকই fleet অপারেশনের সবচেয়ে গুরুত্বপূর্ণ সংখ্যা। এটি হয় ভুল গণনা, jam, নয়তো আরও খারাপ কিছু, আর তা ধরা পড়ে গুনে, আশা করে নয়।

নগদের স্তর, আর কেন fleet আসলে একটি forecasting সমস্যা

একটি মেশিন সামলানো ঝামেলার কাজ; একটি fleet হলো forecasting সমস্যা। dispenser খালি হলে গ্রাহক ফিরে যান, আর note acceptor-এর stacker ভরে গেলে নগদ নেওয়া বন্ধ হয়ে যায়। দুটোই আউটেজ, অথচ পথচারীর চোখে পড়ার মতো কোনো error আলো জ্বলে না, কারণ মেশিন শুধু গ্রাহকের চাওয়া লেনদেনটি সম্পন্ন করতে পারে না। তাই কনসোল প্রতিটি মেশিনের প্রতিটি cassette-এর নগদ স্তর ট্র্যাক করে এবং তা থেকে রুট বানায়: কোন ক্যাবিনেটে নগদ ভরতে হবে, কোনটি খালি করতে হবে, দেয়ালে ঠেকার আগেই। ভালোভাবে চলা fleet মূলত একটি cash-in-transit সূচি: কে কোন ক্যাবিনেটে যাবে, কত নিয়ে, কোন দিনে। সফটওয়্যার আছে লাইভ স্তর থেকে সেই সূচি বানাতে, আন্দাজ আর শুক্রবার বিকেলের হুড়োহুড়ির বদলে।

Remote lock, এবং কনসোল থেকে নিয়ন্ত্রণ

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

crypto ATM fleet কিছু হার্ডওয়্যার জোড়া লাগানো সফটওয়্যার পণ্য নয়। এটি সামনে একটি স্ক্রিনওয়ালা cash-logistics অপারেশন, আর সেই স্ক্রিনের প্রতিটি সংখ্যা এমন একটি ব্যাংকনোটের সঙ্গে মিলতে হবে যা আপনি হাতে ধরতে পারেন।
— Protocore · Payments engineering

যে মেশিন দেখা যায় না, তার reconciliation

Reconciliation হলো fleet সৎ থাকার দৈনিক প্রমাণ। মেশিনের প্রতিটি সেশন একটি রেকর্ড রেখে যায়: নোট ঢুকেছে ও ক্রিপ্টো বেরিয়েছে, অথবা ক্রিপ্টো ঢুকেছে ও নোট বেরিয়েছে, সঙ্গে locked rate, wallet address আর confirmation। শেষ সংগ্রহের পর থেকে একটি মেশিনের সব সেশন যোগ করলে পাওয়া যায় তাতে কত নগদ থাকার কথা; ভিজিটে cassette গুনলে পাওয়া যায় আসলে কত আছে; দুটি মিলতে হবে। ক্রিপ্টোর দিকও একইভাবে মেলে, মেশিনের wallet ব্যালেন্সের সঙ্গে। যে fleet প্রতিটি মেশিনে প্রতিদিন reconcile করে, সে খারাপ ক্যাবিনেট প্রথম দিনেই ধরে ফেলে, জ্যাম, skimming বা ভুল গণনা, ত্রৈমাসিক শেষে কেউ ব্যাখ্যা করতে পারে না এমন ফাঁক হিসেবে নয়। প্রতি মেশিনের ledger-এর মূল কথা হলো, এটি অডিটে টিকে যায় ঠিক এ কারণেই যে একে কখনো সরে যেতে দেওয়া হয়নি।

Compliance অপারেটরের দায়িত্ব; সফটওয়্যার তা প্রয়োগ করে ও রেকর্ড রাখে

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

স্পষ্ট সীমারেখা

এক জায়গায় একটি মেশিনের জন্য fleet কনসোল প্রায় লাগেই না; একটি স্প্রেডশিট আর সাপ্তাহিক গণনাই যথেষ্ট। এখানকার ব্যবস্থা তার দাম তোলে fleet আকারে, যেখানে সংখ্যাগুলো আর একজনের মাথায় ধরে না: অনেক ক্যাবিনেট জুড়ে নগদের স্তর, সাইট অনুযায়ী মেলাতে হওয়া cassette গণনা, ঘণ্টার দূরত্বের মেশিনের জন্য remote lock, আর অডিটে টিকে থাকা প্রতি-মেশিন ledger। একটি ক্যাবিনেট চালালে এটি বাড়তি বোঝা; কুড়িটি চালালে সূচি, reconciliation আর রিমোট নিয়ন্ত্রণই ব্যবসা আর ধীরে ধীরে ভারসাম্য হারানো ক্যাবিনেটের স্তূপের পার্থক্য। fleet কনসোল /products/atm-এ, আর cassette, recycler, reconciliation, settlement শব্দগুলো আছে /glossary-তে।

কোনো সিস্টেম বানাতে চান?

সমস্যাটা আমাদের জানান। আমরা আর্কিটেকচার ও একটি পরিকল্পনা নিয়ে ফিরে আসব।