암호화폐 ATM 운영: 현금, 카세트, 컴플라이언스
암호화폐 ATM은 양방향으로 작동하는 현금 기기입니다. 고객이 지폐를 넣고 암호화폐를 받거나, 암호화폐를 보내고 지폐를 찾아갑니다. 이런 기기를 여러 대 운영하는 일은 소프트웨어 인터페이스를 입은 물류 사업입니다. 화면은 견적을 내고 확인을 받지만, 어려운 부분은 물리적입니다. 카세트에 든 현금, 눈이 닿지 않는 곳에 서 있는 기기, 모든 캐비닛에서 일어나 한 푼 단위까지 맞아야 하는 교환이 그렇습니다. 암호화폐 ATM을 앱이라고 생각하는 사람은 쉬운 절반만 본 것입니다.
그래서 이 글은 운영 쪽 절반을 해부합니다. 캐비닛 안의 두 하위 시스템, 유리창 앞에서 일어나는 교환, 데모에는 절대 나오지 않는 카세트, 기기 군집이 되면서 생기는 예측 문제, 그리고 눈에 보이지 않는 기기를 통제하고 대사하는 규율을 다룹니다.
한 캐비닛 안의 두 기계
암호화폐 ATM은 사실상 두 하위 시스템을 맞붙인 것입니다. 하나는 지폐 투입기, 감별기, 지급기 또는 순환기, 지폐를 보관하는 카세트로 이루어진 현금 처리 기계이고, 다른 하나는 지갑, 네트워크 연결, 견적과 확인을 보여 주는 화면으로 이루어진 암호화폐 단말기입니다. 구매는 현금에서 암호화폐로 흐릅니다. 고객이 지폐를 넣으면 감별기가 세어 적재하고, 기기는 고객의 지갑으로 암호화폐를 보냅니다. 판매는 암호화폐에서 현금으로 흐릅니다. 고객이 기기의 주소로 암호화폐를 보내고 전송이 확인되면, 지급기가 카세트에서 지폐를 세어 내보냅니다. 어려운 일은 모두 이 두 절반이 만나는 지점에 있습니다. 지폐는 적재되면 되돌릴 수 없는 물리적 존재이고, 암호화폐는 확인되면 되돌릴 수 없는 디지털 존재이기 때문에, 기기는 한쪽이 확실해지기 전에는 다른 쪽을 확정해서는 안 됩니다.
화면 앞에서 이루어지는 교환
머신마다 교환이 이루어지며, 이는 카운터 단말기와 같은 고정 시세 원칙을 따릅니다. 화면이 환율을 제시하고 카운트다운과 함께 세션 동안 유지하며, 고객은 그 시세로 거래하거나 세션이 시세를 새로 받습니다. 안전 모델은 순서에 있습니다. 구매 시 머신은 지폐가 검증되어 적재된 뒤에야 암호화폐를 내보냅니다. 단순히 투입된 것으로는 부족합니다. 에스크로 입구에 걸린 지폐는 아직 돈이 아니기 때문입니다. 판매 시에는 입금 전송이 충분한 컨펌을 받을 때까지 지폐를 한 장도 내보내지 않습니다. 일단 나간 지폐는 되찾을 수 없기 때문입니다. 되돌릴 수 없는 동작은 상대편이 확정된 뒤 항상 마지막에 실행합니다. 이 순서가 틀리면 받지도 않은 지폐에 암호화폐를 내주거나, 도착하지 않은 전송에 현금을 내주는 머신이 됩니다.
카세트: 아무도 시연하지 않는 물리적 절반
현금은 카세트에 있습니다. 카세트는 머신에 끼우는 탈착식 지폐 박스로, 보통 권종마다 하나씩 사용합니다. 리사이클러는 받아들인 지폐를 그대로 지급할 수 있고, 단순 디스펜서는 운영자가 채워 넣은 카세트에서만 지급합니다. 각 카세트에는 두 가지 숫자가 있습니다. 소프트웨어가 알고 있는 수량과 물리적으로 실제인 수량입니다. 운영자의 업무는 한 문장으로 줄이면 이 두 수량을 일치시키는 일입니다. 지폐가 입금될 때마다 장부상 수량이 늘고, 지급될 때마다 줄며, 현금 수거 방문 때 실사 수량으로 초기화됩니다. 수거 시점에 장부 수량과 실사 수량이 다르면, 그 차이가 장비 운영에서 가장 중요한 숫자입니다. 계수 오류일 수도, 걸림일 수도, 더 나쁜 일일 수도 있으며, 이는 바라는 것이 아니라 세어 봐야 알 수 있습니다.
현금 잔량, 그리고 장비 운영이 예측 문제인 이유
머신 한 대는 잡무이고, 장비 전체는 예측 문제입니다. 디스펜서가 비면 고객을 돌려보내야 하고, 지폐 투입기의 스태커가 가득 차면 더 이상 현금을 받지 못합니다. 둘 다 장애지만 지나가는 사람이 알아챌 경고등은 켜지지 않습니다. 머신이 고객이 원한 거래를 처리하지 못할 뿐이기 때문입니다. 그래서 콘솔은 머신별, 카세트별 현금 잔량을 추적하고 이를 경로로 바꿉니다. 어느 캐비닛에 현금을 채워야 하고 어느 캐비닛을 비워야 하는지를 한계에 닿기 전에 알려 줍니다. 잘 운영되는 장비는 대부분 현금 수송 일정입니다. 누가 어느 캐비닛에, 얼마를 들고, 어느 날 가는지입니다. 소프트웨어는 추측과 금요일 오후의 비상 대응 대신 실시간 잔량으로 그 일정을 만들기 위해 존재합니다.
원격 잠금, 그리고 콘솔에서의 조치
머신은 로비, 매장, 역 대합실처럼 운영자가 없는 곳에 있으므로 제어는 원격이어야 합니다. 운영자는 콘솔에서 머신 한 대 또는 전체 장비를 즉시 잠글 수 있고, 잠긴 머신은 새 거래를 완료하지 않습니다. 잠금은 걸림, 장애 의심, 현금 불일치, 또는 담당자가 현장에 도착할 때까지 동결해야 하는 머신에 대한 대응입니다. 키와 카세트는 그대로 두고, 머신은 사람이 해제할 때까지 거래만 중단합니다. 원칙은 위험한 조치를 사유와 함께 콘솔에서 실행하고 로그에 남기는 것입니다. 현장에서 누군가 머신 화면을 직접 눌러 기록 없이 처리하면, 나중에 무엇을 왜 했는지 아무도 재구성할 수 없습니다.
크립토 ATM 장비는 하드웨어가 딸린 소프트웨어 제품이 아닙니다. 전면에 화면이 달린 현금 물류 사업이며, 그 화면의 모든 숫자는 손에 쥘 수 있는 지폐 한 장 한 장과 대사되어야 합니다.
눈에 보이지 않는 머신의 대사
대사는 장비가 정직하다는 것을 매일 증명하는 일입니다. 머신에서 이루어진 모든 세션은 기록을 남깁니다. 지폐 입금과 암호화폐 출금, 또는 암호화폐 입금과 지폐 출금이며, 고정 환율, 지갑 주소, 컨펌이 함께 기록됩니다. 마지막 수거 이후 머신의 세션을 합산하면 머신이 보유해야 할 현금이 나오고, 방문 시 카세트를 세면 실제 보유한 현금이 나옵니다. 둘은 일치해야 합니다. 암호화폐 쪽도 머신의 지갑 잔액을 기준으로 같은 방식으로 대사합니다. 머신별, 일별로 대사하는 장비는 불량 캐비닛을 첫날에 잡아냅니다. 걸림, 스키밍, 계수 오류 모두 마찬가지이며, 분기 말에 아무도 설명하지 못하는 구멍으로 발견되는 일이 없습니다. 머신별 원장의 핵심은 어긋나도록 두지 않았기 때문에 감사를 견딘다는 점입니다.
컴플라이언스는 운영자의 책임이며, 소프트웨어는 집행하고 기록합니다
크립토 ATM 장비의 의무는 운영자가 집니다. 보유해야 할 허가, 수행해야 할 신원 확인, 지켜야 할 거래 한도는 머신이 설치된 곳에 따라 다르며, 이는 박스도 박스 공급사도 아닌 운영자의 몫입니다. 소프트웨어의 역할은 의도적으로 기계적입니다. 운영자가 설정한 고객별·일별 한도를 집행하고, 운영자가 정한 기준 금액에서 운영자가 요구하는 신원 확인 단계를 안내하며, 모든 지폐, 전송, 한도 판단을 기록해 운영자가 나중에 장비 전체에 대해 소명할 수 있게 합니다. 머신은 정책을 결정하지 않습니다. 운영자의 정책을 모든 캐비닛에 동일하게 적용하고 일어난 일을 기록합니다. 정책을 올바르게 세우는 것은 운영자의 몫입니다. 소프트웨어가 기여하는 부분은 한 사람이 한꺼번에 지켜볼 수 없는 규모의 장비에서 그 정책을 균일하고 감사 가능하게 만드는 것입니다.
솔직한 경계
한 곳에 머신 한 대만 있다면 장비 콘솔은 거의 필요 없습니다. 스프레드시트와 주간 실사로 충분합니다. 이 체계가 값을 하는 것은 숫자가 한 사람의 머릿속에 들어오지 않는 장비 규모입니다. 여러 캐비닛의 현금 잔량, 사이트별로 대사해야 하는 카세트 수량, 몇 시간 거리에 있는 머신의 원격 잠금, 감사에 견디는 머신별 원장이 그렇습니다. 캐비닛 하나를 운영한다면 이는 부담이지만, 스무 대를 운영한다면 일정, 대사, 원격 제어가 사업과 서서히 균형을 잃어 가는 캐비닛 더미를 가릅니다. 장비 콘솔은 /products/atm에 있으며, 카세트, 리사이클러, 대사, 정산 같은 용어는 /glossary에 정리되어 있습니다.