Σημειώσεις πεδίου

Λειτουργία στόλου crypto ATM: μετρητά, κασέτες, συμμόρφωση

Ένα crypto ATM είναι μια μηχανή μετρητών που λειτουργεί προς τις δύο κατευθύνσεις: ο πελάτης βάζει χαρτονομίσματα και παίρνει crypto, ή στέλνει crypto και παραλαμβάνει χαρτονομίσματα. Η λειτουργία ενός στόλου τέτοιων μηχανημάτων είναι επιχείρηση logistics με διεπαφή λογισμικού. Η οθόνη κάνει προσφορές και επιβεβαιώσεις, αλλά τα δύσκολα είναι φυσικά — μετρητά μέσα σε κασέτες, μηχανήματα σε σημεία όπου δεν βρίσκεστε, και μια ανταλλαγή σε κάθε ερμάριο που πρέπει να συμφωνεί μέχρι το λεπτό. Όποιος βλέπει ένα crypto ATM ως εφαρμογή έχει δει μόνο το εύκολο μισό.

Αυτή λοιπόν είναι μια ανατομή του λειτουργικού μισού: τα δύο υποσυστήματα μέσα στο ερμάριο, η ανταλλαγή στη γυάλινη οθόνη, οι κασέτες που κανείς δεν βάζει σε demo, το πρόβλημα πρόβλεψης που γίνεται ένας στόλος, και η πειθαρχία του ελέγχου και της συμφωνίας (reconciliation) μηχανημάτων που δεν βλέπεις.

Δύο μηχανές σε ένα ερμάριο

Ένα crypto ATM είναι στην πραγματικότητα δύο υποσυστήματα βιδωμένα μαζί: μια μηχανή διαχείρισης μετρητών — δέκτης χαρτονομισμάτων, validator, dispenser ή recycler και οι κασέτες που κρατούν τα χαρτονομίσματα — και ένα crypto τερματικό — ένα wallet, μια σύνδεση δικτύου και μια οθόνη που κάνει προσφορές και επιβεβαιώσεις. Μια αγορά πηγαίνει από μετρητά σε crypto: ο πελάτης βάζει χαρτονομίσματα, ο validator τα μετρά και τα στοιβάζει, και η μηχανή στέλνει crypto στο wallet του πελάτη. Μια πώληση πηγαίνει από crypto σε μετρητά: ο πελάτης στέλνει crypto στη διεύθυνση της μηχανής και, μόλις επιβεβαιωθεί η μεταφορά, ο dispenser μετρά χαρτονομίσματα από μια κασέτα. Όλα τα δύσκολα βρίσκονται εκεί όπου συναντιούνται τα δύο μισά, γιατί τα χαρτονομίσματα είναι φυσικά και μη αναστρέψιμα μόλις στοιβαχτούν, ενώ το crypto είναι ψηφιακό και μη αναστρέψιμο μόλις επιβεβαιωθεί — και η μηχανή δεν πρέπει να δεσμευτεί σε καμία πλευρά πριν είναι βέβαιη η άλλη.

Η ανταλλαγή στην οθόνη

Σε κάθε μηχάνημα γίνεται μια ανταλλαγή, και διέπεται από την ίδια πειθαρχία κλειδωμένης τιμής με ένα τερματικό σε ταμείο: η οθόνη εμφανίζει μια ισοτιμία, την κρατά για τη διάρκεια της συνεδρίας με αντίστροφη μέτρηση, και ο πελάτης συναλλάσσεται με αυτή την τιμή, αλλιώς η συνεδρία ζητά νέα. Η σειρά των ενεργειών είναι το μοντέλο ασφαλείας. Στην αγορά, το μηχάνημα αποδεσμεύει crypto μόνο αφού τα χαρτονομίσματα έχουν επικυρωθεί και στοιβαχθεί — όχι απλώς εισαχθεί, επειδή ένα χαρτονόμισμα που βρίσκεται ακόμη στον λαιμό του escrow δεν είναι ακόμη χρήμα. Στην πώληση, δεν δίνει ούτε ένα χαρτονόμισμα μέχρι η εισερχόμενη μεταφορά να συγκεντρώσει αρκετές επιβεβαιώσεις, επειδή ένα χαρτονόμισμα που έχει δοθεί δεν ανακτάται. Η μη αναστρέψιμη ενέργεια γίνεται πάντα τελευταία, μόνο όταν η άλλη πλευρά έχει οριστικοποιηθεί. Αν η σειρά είναι λάθος, έχετε φτιάξει ένα μηχάνημα που χαρίζει crypto για χαρτονομίσματα που δεν κράτησε ποτέ, ή μετρητά για μια μεταφορά που δεν έφτασε ποτέ.

Κασέτες: το φυσικό μισό που κανείς δεν δείχνει στις παρουσιάσεις

Τα μετρητά ζουν στις κασέτες — αφαιρούμενα κουτιά με χαρτονομίσματα, συνήθως μία ανά ονομαστική αξία, που εισέρχονται στο μηχάνημα. Ένας recycler μπορεί να δώσει τα ίδια χαρτονομίσματα που δέχτηκε· ένας απλούστερος διανομέας παίρνει μόνο από κασέτες που έχει φορτώσει ο operator. Κάθε κασέτα έχει δύο αριθμούς: αυτόν που πιστεύει το λογισμικό και αυτόν που ισχύει φυσικά. Η δουλειά του operator, σε μία πρόταση, είναι να κρατά αυτούς τους δύο ίσους. Κάθε χαρτονόμισμα που γίνεται δεκτό αυξάνει το υπολογιζόμενο υπόλοιπο, κάθε χαρτονόμισμα που δίνεται το μειώνει, και μια επίσκεψη είσπραξης μετρητών το επαναφέρει με βάση τη φυσική καταμέτρηση. Όταν το υπολογιζόμενο και το καταμετρημένο υπόλοιπο διαφέρουν σε μια είσπραξη, αυτή η διαφορά είναι ο σημαντικότερος αριθμός στη διαχείριση στόλου — είναι λάθος μέτρηση, εμπλοκή ή κάτι χειρότερο, και βρίσκεται με καταμέτρηση, ποτέ με ευχολόγια.

Στάθμες μετρητών, και γιατί ένας στόλος είναι πρόβλημα πρόβλεψης

Ένα μηχάνημα είναι αγγαρεία· ένας στόλος είναι πρόβλημα πρόβλεψης. Ένας διανομέας που αδειάζει διώχνει πελάτες, και ένας αποδέκτης χαρτονομισμάτων με γεμάτο stacker σταματά να δέχεται μετρητά — και τα δύο είναι διακοπές λειτουργίας, και κανένα δεν ανάβει προειδοποιητική ένδειξη που θα πρόσεχε ένας περαστικός, γιατί το μηχάνημα απλώς δεν μπορεί να ολοκληρώσει τη συναλλαγή που ήθελε ο πελάτης. Έτσι η κονσόλα παρακολουθεί τη στάθμη μετρητών ανά κασέτα και ανά μηχάνημα και τη μετατρέπει σε διαδρομές: ποια μηχανήματα χρειάζονται ανεφοδιασμό και ποια άδειασμα, πριν φτάσουν στο όριο. Ένας στόλος που λειτουργεί σωστά είναι κυρίως ένα πρόγραμμα μεταφοράς μετρητών — ποιος πηγαίνει σε ποιο μηχάνημα, με πόσα χρήματα, ποια μέρα — και το λογισμικό υπάρχει για να χτίζει αυτό το πρόγραμμα από ζωντανές στάθμες, αντί για εικασίες και πανικό του απογεύματος της Παρασκευής.

Απομακρυσμένο κλείδωμα και ενέργειες από την κονσόλα

Τα μηχανήματα βρίσκονται σε μέρη όπου ο operator δεν είναι — ένα λόμπι, ένας εμπορικός χώρος, ένας σταθμός — οπότε ο έλεγχος πρέπει να είναι απομακρυσμένος. Από την κονσόλα ο operator μπορεί να κλειδώσει ένα μηχάνημα ή ολόκληρο τον στόλο άμεσα, και ένα κλειδωμένο μηχάνημα δεν ολοκληρώνει καμία νέα συναλλαγή. Το κλείδωμα είναι η απάντηση σε εμπλοκή, σε ύποπτη βλάβη, σε απόκλιση μετρητών ή σε μηχάνημα που πρέπει να παγώσει όσο κάποιος οδηγεί προς το σημείο. Τα κλειδιά και οι κασέτες μένουν όπου είναι· το μηχάνημα απλώς σταματά να συναλλάσσεται μέχρι να το άρει ένας άνθρωπος. Η πειθαρχία είναι ότι οι επικίνδυνες ενέργειες γίνονται από την κονσόλα με καταγεγραμμένο λόγο και αποτυπώνονται σε log — όχι με κάποιον να πατά την οθόνη του μηχανήματος στο πεδίο, χωρίς καταγραφή, όπου κανείς δεν μπορεί αργότερα να ανασυνθέσει τι έγινε και γιατί.

Ένας στόλος crypto ATM δεν είναι προϊόν λογισμικού με λίγο υλικό ενσωματωμένο. Είναι μια επιχείρηση logistics μετρητών με οθόνη μπροστά — και κάθε αριθμός σε αυτή την οθόνη πρέπει να συμφωνεί με ένα χαρτονόμισμα που θα μπορούσατε να κρατήσετε στο χέρι σας.
— Protocore · Payments engineering

Συμφωνία ενός μηχανήματος που δεν βλέπετε

Η συμφωνία (reconciliation) είναι η καθημερινή απόδειξη ότι ένας στόλος είναι ειλικρινής. Κάθε συνεδρία σε ένα μηχάνημα αφήνει εγγραφή — χαρτονομίσματα μέσα και crypto έξω, ή crypto μέσα και χαρτονομίσματα έξω, με την κλειδωμένη ισοτιμία, τις διευθύνσεις πορτοφολιών και τις επιβεβαιώσεις. Αθροίστε τις συνεδρίες ενός μηχανήματος από την τελευταία είσπραξη και βρίσκετε τα μετρητά που θα έπρεπε να έχει· μετρήστε τις κασέτες στην επίσκεψη και βρίσκετε τα μετρητά που έχει· τα δύο πρέπει να συμπίπτουν. Η πλευρά του crypto συμφωνεί με τον ίδιο τρόπο, με βάση το υπόλοιπο του πορτοφολιού του μηχανήματος. Ένας στόλος που κάνει συμφωνία ανά μηχάνημα και ανά ημέρα εντοπίζει ένα προβληματικό μηχάνημα από την πρώτη μέρα — εμπλοκή, skimming, λάθος καταμέτρηση — αντί να το ανακαλύπτει ως ανεξήγητο κενό στο τέλος του τριμήνου. Όλο το νόημα του καθολικού ανά μηχάνημα είναι ότι αντέχει σε έλεγχο ακριβώς επειδή δεν επιτράπηκε ποτέ να αποκλίνει.

Η συμμόρφωση είναι δουλειά του operator· το λογισμικό εφαρμόζει και καταγράφει

Ο operator ενός στόλου crypto ATM φέρει τις υποχρεώσεις. Οι άδειες που πρέπει να διαθέτει, οι έλεγχοι ταυτότητας που πρέπει να εκτελεί και τα όρια συναλλαγών που πρέπει να τηρεί διαφέρουν ανάλογα με το πού βρίσκεται κάθε μηχάνημα, και ανήκουν στον operator — όχι στο μηχάνημα και όχι στον προμηθευτή του μηχανήματος. Αυτό που κάνει το λογισμικό είναι σκόπιμα μηχανικό: εφαρμόζει όποια όρια ανά πελάτη και ανά ημέρα ρυθμίσει ο operator, ζητά όποιο βήμα ταυτοποίησης απαιτεί ο operator στο όριο που ο ίδιος θέτει, και καταγράφει κάθε χαρτονόμισμα, κάθε μεταφορά και κάθε απόφαση ορίου, ώστε ο operator να μπορεί να λογοδοτήσει για τον στόλο αργότερα. Το μηχάνημα δεν αποφασίζει πολιτική· εφαρμόζει την πολιτική του operator με τον ίδιο τρόπο σε κάθε μηχάνημα και καταγράφει τι έγινε. Η σωστή πολιτική είναι πειθαρχία του operator. Η συμβολή του λογισμικού είναι να κάνει αυτή την πολιτική ομοιόμορφη και ελέγξιμη σε έναν στόλο που κανένας άνθρωπος δεν μπορεί να παρακολουθεί ολόκληρο ταυτόχρονα.

Το ειλικρινές όριο

Ένα μόνο μηχάνημα σε μία τοποθεσία δεν χρειάζεται σχεδόν καθόλου κονσόλα στόλου — ένα υπολογιστικό φύλλο και μια εβδομαδιαία καταμέτρηση αρκούν. Ο μηχανισμός εδώ δικαιώνεται σε κλίμακα στόλου, όταν οι αριθμοί παύουν να χωρούν σε ένα μυαλό: στάθμες μετρητών σε πολλά μηχανήματα, καταμετρήσεις κασετών που πρέπει να συμφωνούν ανά σημείο, απομακρυσμένο κλείδωμα για μηχανήματα ώρες μακριά και καθολικό ανά μηχάνημα που αντέχει σε έλεγχο. Με ένα μηχάνημα όλα αυτά είναι περιττό βάρος· με είκοσι, το πρόγραμμα, η συμφωνία και οι απομακρυσμένοι έλεγχοι κάνουν τη διαφορά ανάμεσα σε μια επιχείρηση και ένα σωρό μηχανήματα που σιγά σιγά χάνουν την ισορροπία τους. Η κονσόλα στόλου βρίσκεται στο /products/atm και οι όροι — cassette, recycler, reconciliation, settlement — στο /glossary.

Έχετε ένα σύστημα να χτίσετε;

Πείτε μας το πρόβλημα. Θα επιστρέψουμε με αρχιτεκτονική και πλάνο.