知ってる? 暗号資産取引サービスの基本技術。アーキテクチャとセキュリティをコインチェックが解説

知ってる? 暗号資産取引サービスの基本技術。アーキテクチャとセキュリティをコインチェックが解説

暗号資産の仕組みを語るうえで外せない、ブロックチェーンのおさらい

コインチェックは、暗号資産取引サービスのほか、コインチェックで支払ったガス代の一部が暗号資産に還元される「Coincheckガス」や「Coincheckでんき」など、さまざまなサービスを展開する暗号資産交換業者だ。同社が2023年4月時点で取り扱う通貨は19種類。アプリダウンロード数(※)は540万を超え、2023年2月末時点の本人確認済み口座数は約178万、預かり資産額は2,926億円。同社はシステムを内製開発しており、約60名のエンジニアが運営を支えている。

※調査概要

  • 対象:国内の暗号資産取引アプリ
  • 期間:2019年1月〜2022年12月
  • データ協力:App Tweak

 そんな暗号資産取引サービスについて、いろいろ耳にするものの、よく分かっていないという人は案外多い。Developer Summitの講演に登壇したコインチェック、サイバーセキュリティ推進部部長の喜屋武慶大氏はそんな人たちに向けて、取引所を支える技術やアーキテクチャなどの基本を紐解き、さらには自身が専門とするセキュリティ対策について解説した。

コインチェック株式会社 サイバーセキュリティ推進部 部長 喜屋武慶大氏
コインチェック株式会社 サイバーセキュリティ推進部 部長 喜屋武慶大氏

暗号資産取引サービスを理解するにあたって、まずは理解したいのがブロックチェーンだ。ブロックチェーンは、一定の条件に従ってひとつまたは複数の取引をまとめたものをブロックと呼称し、連続した次のブロックに前のブロックのハッシュ値を記録することで、複数のブロックをひとつのデータベースとして管理する技術だ。一連の取引を追うことができ、どのアドレスにどんな送金があったかが確実に分かり、高い透明性と耐改ざん性が特長だ。

ブロックチェーンの概要
ブロックチェーンの概要

ブロックチェーン技術を用いた暗号資産には、Bitcoin、Ethereum、NEMなどさまざまな種類があり、採用されている技術や実装はそれぞれ異なる。たとえば、ブロックを生成して承認するコンセンサスアルゴリズムには、Proof of WorkやProof of Stakeなどがある。Proof of Workは、マイニングによって追加されるブロックが特定の条件を満たすことで、それが正式なブロックとして承認される仕組みだ。大量の計算を行うため、電力消費も大きいという特徴があり、ビットコインで採用されている。一方のProof of Stakeは、一定量以上の暗号資産をステーク(賭ける)することで、ステークした人の中からランダムにブロック生成できる人が選ばれる仕組み。選出されなかった人たちは、そのブロックが正しいかどうかを検証、承認する役割を担う。これはEthereum 2.0で採用されている。

暗号資産取引サービスのアーキテクチャと求められる技術とは

続いて、喜屋武氏は暗号資産取引サービスのアーキテクチャについて説明した。

基本となるアーキテクチャは大きく、オフチェーンとオンチェーンの2パターンに分けられる。ユーザーの暗号資産取引を直接ブロックチェーン上に記録するのが、オンチェーン。データベースなど別の場所に記録するのがオフチェーンだ。ちなみに、コインチェックではオフチェーンを採用している。

「たとえばビットコインは約10分で1ブロックを生成し、理論上は1秒間に7トランザクションが処理できる。だが、Coincheckサービス内だけでも取引は秒間60件以上発生している。すべての取引をブロックチェーン上に書き込もうとしても間に合わない量だ。そのため、Coincheckサービス内で行う取引に関するトランザクションは同社データベース上に記録し、他取引所のアドレス間における取引はブロックチェーン上に記録している」(喜屋武氏)

ユーザー向けのインターフェイスやデータベースなどの運用管理は、一般的なWebサービスと変わらない。コインチェックでは、バックエンドにRuby on Rails、フロントエンドにNuxt.js、インフラにAWSを利用しているという。全体のイメージは、下記の画面のとおりだ。Coincheckサービスから他取引所に送金するときは、コインチェックの署名システムでトランザクションに署名してから、ブロックチェーンネットワーク上にブロードキャストする。

暗号資産取引所のアーキテクチャ
暗号資産取引サービスのアーキテクチャ

これらに加えて、暗号資産取引サービスのエンジニアはブロックチェーン固有の技術を習得することになる。そのひとつが、ノードの運用だ。ノードはブロックチェーンのブロックを管理するソフトウェアで、各チェーンで運用されているノードと同期して最新のブロックデータを取得したり、自社の発行したトランザクションを他ノードにブロードキャストしたりする役割を持つ。

トランザクションやブロックのデータ構造は、ブロックチェーンによって異なる。暗号資産の署名やブロックチェーン上の入出金を正しく検知、処理するには、各ブロックチェーンやトランザクションデータの構造を踏まえて、どのユーザー宛の入金なのかを正確に判定する必要がある。他アドレスに送金する場合も同様で、正確に判定してもらうためのトランザクションを構築しなければならない。

続きは CodeZine へ

事例カテゴリの最新記事