फ़ील्ड नोट्स

क्रिप्टो ATM फ़्लीट चलाना: कैश, कैसेट, कंप्लायंस

क्रिप्टो ATM ऐसी कैश मशीन है जो दोनों दिशाओं में चलती है: ग्राहक उसमें बैंकनोट डालकर क्रिप्टो पाता है, या क्रिप्टो भेजकर बैंकनोट निकालता है। इनका फ़्लीट चलाना सॉफ़्टवेयर इंटरफ़ेस पहने हुए लॉजिस्टिक्स का कारोबार है। स्क्रीन कोट देती है और कन्फ़र्म करती है, लेकिन कठिन हिस्से भौतिक हैं — कैसेट में रखा कैश, ऐसी जगहों पर खड़ी मशीनें जहाँ आप नहीं हैं, और हर कैबिनेट पर होने वाला एक्सचेंज जिसे पाई-पाई तक मिलना चाहिए। जो क्रिप्टो ATM को एक ऐप समझता है, उसने आसान आधा हिस्सा ही देखा है।

तो यह ऑपरेशनल आधे हिस्से का टियरडाउन है: कैबिनेट के भीतर दो सबसिस्टम, काँच पर होने वाला एक्सचेंज, वे कैसेट जिन्हें कोई डेमो में नहीं रखता, फ़्लीट बनते ही खड़ी होने वाली फ़ोरकास्टिंग की समस्या, और उन मशीनों को नियंत्रित और रिकंसाइल करने का अनुशासन जिन्हें आप देख नहीं सकते।

एक कैबिनेट में दो मशीनें

क्रिप्टो ATM असल में दो सबसिस्टम हैं जो आपस में जोड़े गए हैं: एक कैश-हैंडलिंग मशीन — नोट एक्सेप्टर, वैलिडेटर, डिस्पेंसर या रीसाइक्लर, और नोट रखने वाले कैसेट — और एक क्रिप्टो टर्मिनल — वॉलेट, नेटवर्क कनेक्शन, और कोट देने व कन्फ़र्म करने वाली स्क्रीन। Buy में कैश से क्रिप्टो होता है: ग्राहक नोट डालता है, वैलिडेटर उन्हें गिनकर स्टैक करता है, और मशीन ग्राहक के वॉलेट में क्रिप्टो भेजती है। Sell में क्रिप्टो से कैश होता है: ग्राहक मशीन के पते पर क्रिप्टो भेजता है और ट्रांसफ़र कन्फ़र्म होते ही डिस्पेंसर कैसेट से नोट गिनकर निकालता है। हर कठिन चीज़ वहीं है जहाँ ये दोनों हिस्से मिलते हैं, क्योंकि नोट भौतिक हैं और स्टैक होने के बाद अपरिवर्तनीय, जबकि क्रिप्टो डिजिटल है और कन्फ़र्म होने के बाद अपरिवर्तनीय — और मशीन तब तक किसी भी पक्ष को कमिट नहीं कर सकती जब तक दूसरा पक्ष निश्चित न हो जाए।

स्क्रीन पर होने वाला एक्सचेंज

हर मशीन पर एक एक्सचेंज होता है, और उस पर काउंटर टर्मिनल जैसा ही लॉक्ड-कोट का अनुशासन लागू होता है: स्क्रीन एक रेट कोट करती है, काउंटडाउन के साथ उसे पूरे सेशन के लिए होल्ड रखती है, और ग्राहक उसी कोट पर लेन-देन करता है, वरना सेशन दोबारा कोट करता है। सुरक्षा का मॉडल क्रम में है। खरीद (buy) पर मशीन क्रिप्टो तभी रिलीज़ करती है जब नोट वैलिडेट होकर स्टैक हो चुके हों, सिर्फ़ डाले जाने पर नहीं, क्योंकि एस्क्रो स्लॉट में अटका नोट अभी पैसा नहीं है। बिक्री (sell) पर वह एक भी नोट तब तक नहीं देती जब तक आने वाले ट्रांसफ़र को पर्याप्त कन्फ़र्मेशन न मिल जाएँ, क्योंकि निकल चुका नोट वापस नहीं लाया जा सकता। जो कदम पलटा नहीं जा सकता, वह हमेशा आख़िर में आता है, जब दूसरी तरफ़ सब कुछ फ़ाइनल हो चुका हो। यह क्रम गलत हुआ तो आपने ऐसी मशीन बना दी जो उन नोटों के बदले क्रिप्टो दे देती है जो उसके पास कभी रहे ही नहीं, या ऐसे ट्रांसफ़र के बदले कैश दे देती है जो कभी पहुँचा ही नहीं।

कैसेट: भौतिक हिस्सा, जिसका डेमो कोई नहीं दिखाता

कैश कैसेट में रहता है। ये नोटों के हटाए जा सकने वाले बॉक्स होते हैं, आमतौर पर हर denomination के लिए एक, जो मशीन में लगते हैं। रीसाइक्लर वही नोट वापस दे सकता है जो उसने लिए थे; साधारण डिस्पेंसर सिर्फ़ उन कैसेट से निकालता है जो ऑपरेटर ने भरे हों। हर कैसेट के पास दो संख्याएँ होती हैं: सॉफ़्टवेयर जितना मानता है, और जितना असल में मौजूद है। ऑपरेटर का पूरा काम एक वाक्य में यही है कि ये दोनों बराबर रहें। हर स्वीकार हुआ नोट मानी गई गिनती बढ़ाता है, हर निकला नोट घटाता है, और कैश-कलेक्शन की विज़िट पर उसे भौतिक गिनती से रीसेट किया जाता है। कलेक्शन पर जब मानी गई और गिनी गई संख्या अलग निकलती है, तो वह अंतर फ़्लीट ऑपरेशंस की सबसे अहम संख्या है। वह गिनती की चूक, जाम, या उससे भी बुरी कोई बात है, और वह गिनकर पकड़ी जाती है, उम्मीद करके नहीं।

कैश लेवल, और फ़्लीट एक फ़ोरकास्टिंग समस्या क्यों है

एक मशीन झंझट भर है; फ़्लीट एक फ़ोरकास्टिंग समस्या है। खाली हो चुका डिस्पेंसर ग्राहकों को लौटा देता है, और जिस नोट एक्सेप्टर का स्टैकर भर गया हो वह कैश लेना बंद कर देता है। दोनों आउटेज हैं, और दोनों में कोई ऐसी एरर लाइट नहीं जलती जो राहगीर को दिखे, क्योंकि मशीन बस वह लेन-देन पूरा नहीं कर पाती जो ग्राहक चाहता था। इसलिए कंसोल हर मशीन के हर कैसेट का कैश लेवल ट्रैक करता है और उन्हें रूट में बदल देता है: किन कैबिनेट में कैश भरना है और किनसे निकालना है, दोनों के दीवार से टकराने से पहले। अच्छी तरह चलती फ़्लीट ज़्यादातर एक कैश-इन-ट्रांज़िट शेड्यूल होती है: कौन किस कैबिनेट तक जाएगा, कितना लेकर, किस दिन। और सॉफ़्टवेयर इसीलिए है कि यह शेड्यूल अंदाज़े और शुक्रवार शाम की हड़बड़ी की जगह लाइव लेवल से बने।

रिमोट लॉक, और कंसोल से कार्रवाई

मशीनें ऐसी जगहों पर हैं जहाँ ऑपरेटर नहीं होता, जैसे लॉबी, शॉप फ़्लोर या स्टेशन कॉन्कोर्स, इसलिए नियंत्रण रिमोट होना चाहिए। कंसोल से ऑपरेटर एक मशीन या पूरी फ़्लीट को तुरंत लॉक कर सकता है, और लॉक की गई मशीन कोई नया लेन-देन पूरा नहीं करती। लॉक जवाब है जाम का, संदिग्ध खराबी का, कैश में अंतर का, या ऐसी मशीन का जिसे फ़्रीज़ करना है जब तक कोई वहाँ पहुँचे। चाबियाँ और कैसेट जहाँ हैं वहीं रहते हैं; मशीन बस तब तक लेन-देन रोक देती है जब तक कोई इंसान उसे खोल न दे। अनुशासन यह है कि जोखिम भरी कार्रवाइयाँ कंसोल से, कारण दर्ज करके हों और लॉग में दर्ज हों। मशीन की अपनी स्क्रीन पर फ़ील्ड में कोई बिना रिकॉर्ड के टैप कर दे, यह नहीं, क्योंकि तब कोई बाद में यह नहीं जोड़ सकता कि क्या हुआ और क्यों।

क्रिप्टो ATM फ़्लीट कुछ हार्डवेयर जुड़ा सॉफ़्टवेयर प्रोडक्ट नहीं है। यह सामने स्क्रीन वाला कैश-लॉजिस्टिक्स ऑपरेशन है, और उस स्क्रीन की हर संख्या का मिलान एक ऐसे नोट से होना चाहिए जिसे आप हाथ में पकड़ सकें।
— Protocore · पेमेंट्स इंजीनियरिंग

जिस मशीन को आप देख नहीं सकते, उसका रिकंसिलिएशन

रिकंसिलिएशन रोज़ का सबूत है कि फ़्लीट ईमानदार है। मशीन पर हर सेशन एक रिकॉर्ड छोड़ता है: नोट अंदर और क्रिप्टो बाहर, या क्रिप्टो अंदर और नोट बाहर, साथ में लॉक्ड रेट, वॉलेट एड्रेस और कन्फ़र्मेशन। किसी मशीन के पिछले कलेक्शन के बाद के सभी सेशन जोड़ें तो वह कैश मिलता है जो उसके पास होना चाहिए; विज़िट पर कैसेट गिनें तो वह कैश मिलता है जो उसके पास है; दोनों का मिलना ज़रूरी है। क्रिप्टो की तरफ़ का मिलान भी इसी तरह मशीन के वॉलेट बैलेंस से होता है। जो फ़्लीट हर मशीन का, हर दिन रिकंसिल करती है, वह खराब कैबिनेट को पहले ही दिन पकड़ लेती है, चाहे जाम हो, स्किमिंग हो या गिनती की चूक, बजाय इसके कि तिमाही के अंत में ऐसा छेद मिले जिसे कोई समझा न सके। प्रति-मशीन लेजर का पूरा मकसद यही है कि वह ऑडिट में इसलिए टिकता है क्योंकि उसे कभी भटकने नहीं दिया गया।

कम्प्लायंस ऑपरेटर की ज़िम्मेदारी है; सॉफ़्टवेयर लागू करता है और रिकॉर्ड रखता है

क्रिप्टो ATM फ़्लीट के ऑपरेटर पर दायित्व होते हैं। उसके पास कौन-सी अनुमतियाँ होनी चाहिए, कौन-सी पहचान जाँचें चलानी हैं और कौन-सी लेन-देन सीमाएँ माननी हैं, यह हर मशीन की जगह के हिसाब से बदलता है, और ये ऑपरेटर के हैं, न बॉक्स के और न बॉक्स बनाने वाले वेंडर के। सॉफ़्टवेयर का काम जानबूझकर यांत्रिक है: ऑपरेटर जो भी प्रति-ग्राहक और प्रति-दिन सीमाएँ कॉन्फ़िगर करे उन्हें लागू करना, ऑपरेटर जिस थ्रेशोल्ड पर जो भी पहचान-चरण माँगे उसके लिए प्रॉम्प्ट देना, और हर नोट, हर ट्रांसफ़र और हर सीमा-निर्णय दर्ज करना ताकि ऑपरेटर बाद में फ़्लीट का जवाब दे सके। मशीन नीति तय नहीं करती; वह ऑपरेटर की नीति हर कैबिनेट पर एक जैसी लागू करती है और जो हुआ उसे लिख लेती है। नीति सही रखना ऑपरेटर का अनुशासन है। सॉफ़्टवेयर का योगदान इतना है कि वह नीति ऐसी फ़्लीट में एकसमान और ऑडिट-योग्य बने जिसे कोई अकेला व्यक्ति एक साथ नहीं देख सकता।

ईमानदार सीमा

एक जगह लगी एक मशीन को शायद ही फ़्लीट कंसोल चाहिए; स्प्रेडशीट और हफ़्ते की गिनती काफ़ी है। यह सारा तंत्र फ़्लीट के पैमाने पर काम आता है, जहाँ संख्याएँ एक दिमाग़ में नहीं समातीं: कई कैबिनेट के कैश लेवल, कैसेट की गिनती जिसका हर साइट पर मिलान होना चाहिए, घंटों दूर की मशीनों के लिए रिमोट लॉक, और प्रति-मशीन लेजर जो ऑडिट में टिके। एक कैबिनेट चलाएँ तो यह अतिरिक्त बोझ है; बीस चलाएँ तो शेड्यूल, रिकंसिलिएशन और रिमोट कंट्रोल ही कारोबार और धीरे-धीरे संतुलन से बाहर जाते कैबिनेट के ढेर का फ़र्क़ हैं। फ़्लीट कंसोल /products/atm पर है, और शब्द (cassette, recycler, reconciliation, settlement) /glossary में हैं।

कोई सिस्टम बनवाना है?

हमें समस्या बताइए। हम आर्किटेक्चर और योजना के साथ लौटेंगे।