Notatki z praktyki

Prowadzenie floty bankomatów krypto: gotówka, kasety, compliance

Bankomat krypto to maszyna do obsługi gotówki działająca w obie strony: klient wkłada banknoty i otrzymuje krypto albo wysyła krypto i odbiera banknoty. Prowadzenie ich floty to biznes logistyczny z interfejsem programowym. Ekran wycenia i potwierdza, ale trudne części są fizyczne — gotówka leżąca w kasetach, maszyny stojące tam, gdzie Cię nie ma, i wymiana zachodząca w każdej szafie, która musi uzgadniać się co do grosza. Kto myśli o bankomacie krypto jak o aplikacji, ten spojrzał na łatwiejszą połowę.

To więc rozbiór części operacyjnej: dwa podsystemy wewnątrz szafy, wymiana przy szybie, kasety, których nikt nie pokazuje w demo, problem prognozowania, jakim staje się flota, oraz dyscyplina kontrolowania i uzgadniania maszyn, których nie widać.

Dwie maszyny w jednej szafie

Bankomat krypto to w rzeczywistości dwa podsystemy zespolone ze sobą: maszyna do obsługi gotówki — akceptor banknotów, walidator, wypłacarka lub recykler oraz kasety przechowujące banknoty — i terminal krypto — portfel, połączenie z siecią i ekran, który wycenia i potwierdza. Zakup to droga od gotówki do krypto: klient wkłada banknoty, walidator je zlicza i układa w stos, a maszyna wysyła krypto do portfela klienta. Sprzedaż to droga od krypto do gotówki: klient wysyła krypto na adres maszyny, a po potwierdzeniu przelewu wypłacarka odlicza banknoty z kasety. Wszystko, co trudne, dzieje się tam, gdzie te dwie połowy się spotykają, bo banknoty są fizyczne i nieodwracalne po ułożeniu w stos, a krypto jest cyfrowe i nieodwracalne po potwierdzeniu — i maszyna nie może zatwierdzić żadnej ze stron, dopóki druga nie jest pewna.

Wymiana przy szybie

Przy każdym urządzeniu dochodzi do wymiany, a rządzi nią ta sama dyscyplina zablokowanego kursu co w terminalu kasowym: ekran podaje kurs, utrzymuje go na czas sesji z odliczaniem, a klient dokonuje transakcji po tym kursie albo sesja wyceniana jest od nowa. Bezpieczeństwo wynika tu z kolejności operacji. Przy zakupie urządzenie wydaje krypto dopiero po zwalidowaniu i złożeniu banknotów w kasecie — nie wtedy, gdy zostały tylko wsunięte, bo banknot w gardzieli depozytowej to jeszcze nie pieniądz. Przy sprzedaży nie wypłaca ani jednego banknotu, dopóki przelew przychodzący nie ma wystarczającej liczby potwierdzeń, bo wypłaconego banknotu nie da się odzyskać. Czynność nieodwracalna zawsze idzie na końcu, dopiero gdy druga strona jest ostateczna. Pomyl tę kolejność, a zbudujesz maszynę, która oddaje krypto za banknoty, których nigdy nie zatrzymała, albo gotówkę za przelew, który nigdy nie dotarł.

Kasety: fizyczna połowa, której nikt nie pokazuje na demo

Gotówka mieszka w kasetach — wyjmowanych pojemnikach na banknoty, zwykle po jednym na nominał, które wsuwa się do urządzenia. Recykler może wypłacać te same banknoty, które przyjął; prostszy dozownik pobiera wyłącznie z kaset załadowanych przez operatora. Każda kaseta ma dwie liczby: stan, który zakłada oprogramowanie, i stan fizycznie prawdziwy. Cała praca operatora, sprowadzona do jednego zdania, polega na tym, by te dwie liczby były równe. Każdy przyjęty banknot zwiększa stan księgowy, każdy wypłacony go zmniejsza, a wizyta z odbiorem gotówki zeruje go względem przeliczenia fizycznego. Gdy podczas odbioru stan księgowy i przeliczony się różnią, ta luka jest najważniejszą liczbą w zarządzaniu flotą — to błąd w liczeniu, zacięcie albo coś gorszego, i znajduje się ją przez przeliczenie, nigdy przez nadzieję.

Poziomy gotówki i dlaczego flota to problem prognozowania

Jedno urządzenie to obowiązek; flota to problem prognozowania. Dozownik, w którym zabrakło gotówki, odprawia klientów z kwitkiem, a akceptor banknotów z pełnym stackerem przestaje przyjmować gotówkę — oba przypadki to awarie, a żadna nie zapala lampki błędu, którą zauważyłby przechodzień, bo urządzenie po prostu nie może zrealizować transakcji, jakiej chciał klient. Dlatego konsola śledzi poziom gotówki w każdej kasecie każdego urządzenia i zamienia go w trasy: które bankomaty wymagają zasilenia, a które opróżnienia, zanim któryś uderzy w ścianę. Dobrze prowadzona flota to głównie harmonogram transportu gotówki — kto jedzie do którego bankomatu, z jaką kwotą i którego dnia — a oprogramowanie istnieje po to, by budować go na podstawie bieżących poziomów, a nie domysłów i paniki w piątek po południu.

Zdalna blokada i działanie z konsoli

Urządzenia stoją tam, gdzie operatora nie ma — w holu, na hali sklepowej, w hali dworcowej — więc sterowanie musi być zdalne. Z konsoli operator może natychmiast zablokować pojedyncze urządzenie lub całą flotę, a zablokowane urządzenie nie realizuje żadnych nowych transakcji. Blokada to reakcja na zacięcie, podejrzenie awarii, rozbieżność w gotówce albo urządzenie, które trzeba zamrozić, zanim ktoś do niego dojedzie. Klucze i kasety zostają tam, gdzie są; urządzenie po prostu przestaje transakcjonować, dopóki człowiek go nie odblokuje. Zasada jest taka, że czynności ryzykowne wykonuje się z konsoli, z podanym powodem i zapisem w logu — a nie przez stukanie w ekran samego urządzenia w terenie, bez śladu, gdzie nikt potem nie odtworzy, co i dlaczego zrobiono.

Flota kryptobankomatów to nie produkt programistyczny z doczepionym sprzętem. To operacja logistyki gotówki z ekranem z przodu — a każda liczba na tym ekranie musi się zgadzać z banknotem, który można wziąć do ręki.
— Protocore · Inżynieria płatności

Uzgadnianie urządzenia, którego nie widzisz

Uzgadnianie to codzienny dowód, że flota jest uczciwa. Każda sesja przy urządzeniu zostawia zapis — banknoty na wejściu i krypto na wyjściu albo odwrotnie, z zablokowanym kursem, adresami portfeli i potwierdzeniami. Zsumuj sesje urządzenia od ostatniego odbioru, a otrzymasz gotówkę, którą powinno mieć; przelicz kasety podczas wizyty, a otrzymasz gotówkę, którą ma; obie wartości muszą się zejść. Strona krypto uzgadnia się tak samo, względem salda portfela urządzenia. Flota uzgadniana per urządzenie i per dzień wyłapuje wadliwy bankomat pierwszego dnia — zacięcie, skimming, błąd w liczeniu — zamiast odkrywać go jako dziurę na koniec kwartału, której nikt nie umie wyjaśnić. Cały sens księgi per urządzenie polega na tym, że przechodzi audyt właśnie dlatego, że nigdy nie pozwolono jej się rozjechać.

Compliance to zadanie operatora; oprogramowanie egzekwuje i rejestruje

Obowiązki spoczywają na operatorze floty kryptobankomatów. Zezwolenia, które musi posiadać, kontrole tożsamości, które musi przeprowadzać, i limity transakcji, których musi przestrzegać, różnią się w zależności od miejsca, w którym stoi dane urządzenie, i należą do operatora — nie do skrzynki ani do jej dostawcy. Oprogramowanie robi rzeczy celowo mechaniczne: egzekwuje limity na klienta i na dzień ustawione przez operatora, wywołuje krok weryfikacji tożsamości, jakiego operator wymaga, przy progu, który operator wyznaczy, i rejestruje każdy banknot, każdy przelew i każdą decyzję limitową, by operator mógł później rozliczyć się z floty. Urządzenie nie ustala polityki; stosuje politykę operatora tak samo w każdym bankomacie i zapisuje, co się stało. Dobre ustawienie polityki to dyscyplina operatora. Wkład oprogramowania to jednolitość i audytowalność tej polityki w flocie, której żaden człowiek nie obejmie wzrokiem naraz.

Uczciwa granica

Jedno urządzenie w jednej lokalizacji ledwo potrzebuje konsoli floty — wystarczy arkusz kalkulacyjny i cotygodniowe przeliczenie. Ten mechanizm zaczyna się opłacać w skali floty, gdy liczby przestają mieścić się w jednej głowie: poziomy gotówki w wielu bankomatach, stany kaset uzgadniane per lokalizacja, zdalna blokada urządzeń oddalonych o godziny drogi i księga per urządzenie, która wytrzymuje audyt. Przy jednym bankomacie to narzut; przy dwudziestu harmonogram, uzgadnianie i zdalne sterowanie decydują o różnicy między biznesem a stertą bankomatów powoli rozjeżdżających się w bilansie. Konsola floty jest pod /products/atm, a pojęcia — kaseta, recykler, uzgadnianie, rozliczenie — w /glossary.

Masz system do zbudowania?

Opisz nam problem. Wrócimy z architekturą i planem.