暗号資産取引サービスのアーキテクチャと求められる技術とは
続いて、喜屋武氏は暗号資産取引サービスのアーキテクチャについて説明した。
基本となるアーキテクチャは大きく、オフチェーンとオンチェーンの2パターンに分けられる。ユーザーの暗号資産取引を直接ブロックチェーン上に記録するのが、オンチェーン。データベースなど別の場所に記録するのがオフチェーンだ。ちなみに、コインチェックではオフチェーンを採用している。
「たとえばビットコインは約10分で1ブロックを生成し、理論上は1秒間に7トランザクションが処理できる。だが、Coincheckサービス内だけでも取引は秒間60件以上発生している。すべての取引をブロックチェーン上に書き込もうとしても間に合わない量だ。そのため、Coincheckサービス内で行う取引に関するトランザクションは同社データベース上に記録し、他取引所のアドレス間における取引はブロックチェーン上に記録している」(喜屋武氏)
ユーザー向けのインターフェイスやデータベースなどの運用管理は、一般的なWebサービスと変わらない。コインチェックでは、バックエンドにRuby on Rails、フロントエンドにNuxt.js、インフラにAWSを利用しているという。全体のイメージは、下記の画面のとおりだ。Coincheckサービスから他取引所に送金するときは、コインチェックの署名システムでトランザクションに署名してから、ブロックチェーンネットワーク上にブロードキャストする。
これらに加えて、暗号資産取引サービスのエンジニアはブロックチェーン固有の技術を習得することになる。そのひとつが、ノードの運用だ。ノードはブロックチェーンのブロックを管理するソフトウェアで、各チェーンで運用されているノードと同期して最新のブロックデータを取得したり、自社の発行したトランザクションを他ノードにブロードキャストしたりする役割を持つ。
トランザクションやブロックのデータ構造は、ブロックチェーンによって異なる。暗号資産の署名やブロックチェーン上の入出金を正しく検知、処理するには、各ブロックチェーンやトランザクションデータの構造を踏まえて、どのユーザー宛の入金なのかを正確に判定する必要がある。他アドレスに送金する場合も同様で、正確に判定してもらうためのトランザクションを構築しなければならない。