現場ノート

暗号資産ATMフリートの運用:現金、カセット、コンプライアンス

暗号資産ATMは、双方向に動く現金機です。顧客が紙幣を入れて暗号資産を受け取ることも、暗号資産を送って紙幣を受け取ることもできます。そのフリートを運用することは、ソフトウェアのインターフェースをまとったロジスティクス事業です。画面はレートの提示と確認を行いますが、難しいのは物理的な部分です。カセットに収まった現金、自社の目が届かない場所に置かれたマシン、そしてすべての筐体で行われ、1セント単位で照合しなければならない交換取引です。暗号資産ATMをアプリのようなものだと考える人は、簡単な半分しか見ていません。

そこでここでは、運用面の半分を分解して見ていきます。筐体内部の二つのサブシステム、ガラス越しに行われる交換、デモには登場しないカセット、フリートが抱える需要予測の問題、そして目の届かないマシンを制御し照合する運用規律です。

一つの筐体に二つのマシン

暗号資産ATMは実際には、二つのサブシステムを組み合わせたものです。紙幣の受入機、鑑別機、払出機またはリサイクラー、紙幣を収めるカセットからなる現金処理機と、ウォレット、ネットワーク接続、レートを提示して確認する画面からなる暗号資産端末です。購入は現金から暗号資産への流れです。顧客が紙幣を投入し、鑑別機が計数して収納し、マシンが顧客のウォレットへ暗号資産を送ります。売却は暗号資産から現金への流れです。顧客がマシンのアドレスへ暗号資産を送り、送金が承認されると、払出機がカセットから紙幣を数えて払い出します。難しい部分はすべて、この二つの半分が接する場所にあります。紙幣は収納した時点で物理的に取り消せず、暗号資産は承認された時点で電子的に取り消せないからです。マシンは、もう一方が確実になるまで、どちらの側も確定させてはなりません。

画面の前で成立する取引

各マシンでは両替が行われます。その運用は、カウンター端末と同じ「レートロック」の考え方に従います。画面がレートを提示し、カウントダウン付きでセッション中は固定し、顧客はその見積りで取引するか、セッションを再見積りします。安全性の要は順序です。購入の場合、マシンが暗号資産を引き渡すのは紙幣の鑑別と収納が完了してからです。投入されただけでは不十分で、エスクローに残った紙幣はまだ現金とは言えません。売却の場合は、着金の承認数が十分に揃うまで紙幣を1枚も払い出しません。払い出した紙幣は取り戻せないからです。取り消せない処理は、相手側が確定してから必ず最後に行います。この順序を誤ると、受け取っていない紙幣と引き換えに暗号資産を渡したり、着金していない送金に対して現金を払い出したりするマシンになってしまいます。

カセット:デモでは見えない物理の半分

現金はカセットに収まっています。カセットとは、通常は額面ごとに1つずつ、マシンに差し込む着脱式の紙幣ボックスです。リサイクラーは受け入れた紙幣をそのまま払い出せますが、シンプルな ディスペンサーは、オペレーターが補充したカセットからしか払い出せません。各カセットには2つの数字があります。ソフトウェア上の枚数と、物理的に正しい枚数です。オペレーターの仕事は、一文にまとめればこの2つを一致させ続けることです。紙幣を受け入れるたびに帳簿上の枚数が増え、払い出すたびに減り、現金回収の訪問時に実査の枚数でリセットされます。回収時に帳簿上の枚数と実査の枚数がずれていれば、その差分こそフリート運用で最も重要な数字です。計数ミス、紙幣詰まり、あるいはもっと深刻な事態のいずれかであり、それを見つけるのは数えることだけで、期待ではありません。

現金残高と、フリート運用が需要予測の問題である理由

1台なら雑務ですが、フリートになると需要予測の問題になります。ディスペンサーが空になれば顧客は利用できず、紙幣受入機のスタッカーが満杯になれば現金を受け付けなくなります。どちらも稼働停止ですが、通行人が気づくようなエラーランプは点きません。マシンはただ、顧客が望んだ取引を完了できないだけだからです。そのためコンソールはマシンごと・カセットごとに現金残高を追跡し、それをルートに変換します。補充が必要な筐体と回収が必要な筐体を、限界に達する前に洗い出します。うまく回っているフリートの実態は、ほぼ現金輸送のスケジュールです。誰が、どの筐体へ、いくら持って、何日に向かうのか。ソフトウェアは、勘や金曜午後の大慌てではなく、リアルタイムの残高からそのスケジュールを組むために存在します。

リモートロックとコンソールからの操作

マシンが置かれるのは、ロビーや店内、駅構内など、オペレーターのいない場所です。だから操作は遠隔でなければなりません。オペレーターはコンソールから、1台でもフリート全体でも即座にロックでき、ロックされたマシンは新規の取引を一切完了しません。ロックは、紙幣詰まり、故障の疑い、現金の不一致への対応であり、現地へ向かう間マシンを凍結しておくための手段でもあります。鍵とカセットはそのままで、人が解除するまでマシンが取引を止めるだけです。重要なのは、危険な操作は理由を添えてコンソールから行い、ログに残すことです。現場でマシン本体の画面を記録なしにタップするやり方では、後から何がなぜ行われたのか誰にも再現できません。

暗号資産ATMのフリートは、ハードウェアを付けたソフトウェア製品ではありません。前面に画面がついた現金ロジスティクスの事業です。そして画面上のすべての数字は、手に取れる紙幣と突き合わせて合致しなければなりません。
— Protocore · 決済エンジニアリング

目の届かないマシンの照合

照合(リコンシリエーション)は、フリートが誠実であることを示す日次の証明です。マシンでのセッションはすべて記録を残します。紙幣の入金と暗号資産の出金、あるいは暗号資産の入金と紙幣の出金について、ロックされたレート、ウォレットアドレス、承認数が紐づきます。前回の回収以降のセッションを合算すれば、マシンが保有しているはずの現金が分かります。訪問時にカセットを数えれば、実際に保有している現金が分かります。この2つは一致しなければなりません。暗号資産側も同様に、マシンのウォレット残高と照合します。マシンごと・日ごとに照合しているフリートなら、紙幣詰まりやスキミング、計数ミスといった不良筐体を初日に見つけられます。四半期末になって誰にも説明できない穴として発覚することはありません。マシン単位の元帳の意義は、ずれを放置しなかったからこそ監査に耐えられる点にあります。

コンプライアンスはオペレーターの責任。ソフトウェアは執行し、記録する

暗号資産ATMのフリートの義務を負うのはオペレーターです。保有すべき許認可、実施すべき本人確認、遵守すべき取引限度額は、各マシンの設置場所によって異なり、その責任は筐体にもその販売元にもなく、オペレーターにあります。ソフトウェアが行うことは、意図的に機械的なものにとどめています。オペレーターが設定した顧客別・日別の限度額を執行し、オペレーターが定めたしきい値で必要な本人確認ステップを促し、すべての紙幣、送金、限度額の判定を記録します。これにより、オペレーターは後からフリートについて説明責任を果たせます。マシンは方針を決めません。オペレーターの方針をどの筐体でも同じように適用し、何が起きたかを書き留めるだけです。方針を正しく定めるのはオペレーターの務めです。ソフトウェアが担うのは、その方針を、一人では全体を見渡せないフリート全体で統一し、監査可能にすることです。

率直な境界線

1か所に1台だけなら、フリート向けコンソールはほとんど必要ありません。スプレッドシートと週1回の計数で足ります。この仕組みが真価を発揮するのは、数字が一人の頭に収まらなくなるフリート規模です。多数の筐体にわたる現金残高、拠点ごとに照合が必要なカセットの枚数、何時間も離れたマシンのリモートロック、監査に耐えるマシン単位の元帳などです。筐体が1台ならオーバーヘッドですが、20台なら、スケジュール、照合、リモート制御が、事業として成り立つか、少しずつ収支が合わなくなる筐体の山になるかを分けます。フリート向けコンソールは /products/atm にあり、カセット、リサイクラー、照合、決済といった用語は /glossary にまとめています。

システム開発をご検討中ですか?

課題をお聞かせください。アーキテクチャと計画をご提案します。