はじめに
本記事は、過去にコンセンサス・ベイスが主宰していたオンラインサロンの記事です。記事は2017年~2018年にかけて執筆されたため、一部は、既に古くなっている可能性があります。あらかじめご了承ください。
今回の内容
RaidenとPlasmaの目的や技術的特徴について、両者を比較しながら解説します。
ゴール
ブロックチェーンのスケーラビリティ問題の理解と、その解決提案であるRaidenとPlasmaの特徴や相違点について理解します。
ターゲット
ブロックチェーンのスケーラビリティ問題に興味がある方を対象としています。
前提知識
イーサリアムやブロックチェーン技術の基礎を前提知識とします。
第1章 RaidenとPlasmaの動向
2017年の後半から、ブロックチェーンのスケーラビリティ問題を解決するためのプロジェクトが大きく進展してきました。8月24日には、ビットコインでSegwitがアクティベートされ、Lightning Networkによるスケーラビリティ問題の解決が現実味を帯びてきました。イーサリアムでは、スケーラビリティ問題を解決するための主要なプロジェクトとして、8月11日に発表されたばかりのPlasmaや、9月20日に初期実装がテストネットワークでリリースされたRaidenが挙げられます。Raidenについては、9月22日にICOが発表されたことでも反響を呼びました。
RaidenとPlasmaの関係
RaidenとPlasmaは、両者ともイーサリアムにおけるブロックチェーンのスケーラビリティ問題を解決するためのプロジェクトであり、よく比較されます。ここで、両者の関係について一度整理してみましょう。
プラットフォーム | プロダクト | 種類 | 送金 | スマートコントラクト |
Bitcoin | Lightning Network | オフチェーン型 | 〇 | |
Ethereum | Raiden | オフチェーン型 | 〇 | |
Ethereum | Plasma | オンチェーン型 | 〇 | 〇 |
Ethereum | Raidos(Raiden 2.0) | オンチェーン型(サイドチェーン型) | 〇 | 〇 |
ブロックチェーンのスケーラビリティ問題
そもそも、RaidenやPlasmaが解決しようとしている「ブロックチェーンのスケーラビリティ問題」とは何でしょうか?一般的に、分散環境で動作するシステムは、システムの処理量が増大してきたときに、システムに参加するノードの数を増やして処理能力を向上させる「スケールアウト」によってスケーラビリティを担保しています。しかし、現在のブロックチェーンでは、このスケールアウトによる処理能力の向上が実現できません。なぜなら、トランザクションの検証やブロックの生成といったタスクについて、ブロックチェーンに参加している各ノードがそれぞれ同じタスクを処理しており、ノードごとに分担してタスクを処理する訳ではないからです。現在のトランザクションの処理能力は、ビットコインで秒間7トランザクション、イーサリアムで秒間10トランザクションと言われていますが、ビットコインやイーサリアムを支えるノードの数を2倍に増やしても、一つのノードが処理するタスク量は減らないので、システム全体の処理能力は変わらないままです。
スケーラビリティ問題への対応
ブロックチェーンのスケーラビリティ問題を解消するための技術は数多く提案されていますが、大きく分けると「オフチェーン型」と「オンチェーン型」に分類できます。それぞれの特徴とメリットについて簡単に解説します。
オフチェーン型
オフチェーン型の提案では、システムが処理すべきタスクの一部をブロックチェーンの外側(オフチェーン)で処理し、どうしてもブロックチェーンで処理しなければならない処理だけをブロックチェーン上で処理することで、システム全体の処理能力を向上させます。オフチェーンで行われる処理については、ブロックチェーンに参加しているノード全体でデータを共有する必要がないため、高速な処理が実現できます。Lightning NetworkやRaiden、TrueBitなどはこのオフチェーン型の提案です。
オフチェーン型の提案は、単にブロックチェーンで処理すべきタスク量を減らしているだけであり、新しいノードを追加しても1ノードあたりのタスク量が減らないというブロックチェーンの課題を解決している訳ではないので、厳密にスケーラビリティ問題を解決している技術とは言えません。しかし、ブロックチェーンのパフォーマンス上の課題を解決する現実味のある解としては有効だと言えます。なお、少しややこしいですが、Lightning NetworkやRaidenは、ビットコインやイーサリアムとは独立したプラットフォームであり、それら自体はスケーラビリティのあるアーキテクチャとなっています。
オンチェーン型
一般的に、分散システムでスケールアウトを実現するためには、タスクやデータを分割して、分割されたタスクやデータを並列で処理できる必要があります。スケールアウト可能な代表的な技術として、データベースのシャーディングや、分散アルゴリズムのMapReduceなどがあります。これらのアイデアをブロックチェーンにも適用しようとするのが、ブロックチェーンのシャーディングやPlasmaなどのオンチェーン型のソリューションです。
基本用語解説
ここで、Raidenの技術的理解に必要な基本用語について解説します。
マルチシグアドレス
ビットコインのマルチシグアドレスは、秘密鍵を複数紐付けることができるアドレスであり、マルチシグアドレスに送られたトークンにアクセスするためには、あらかじめ設定された数以上の秘密鍵が必要です。M-of-N マルチシグアドレスは、アドレスに紐づく秘密鍵がN個存在し、そのうちM個の秘密鍵でトークンにアクセスできます。秘密鍵の盗難や紛失に備えて、秘密鍵を分散して保存しておく用途に利用されたり、秘密鍵を複数の人で持っておき、M人以上の承認でトークンにアクセスできるようにする、といった利用が可能です。 イーサリアムの場合、複数名の署名はコントラクト上で行われます。ビットコインとの違いは、ステートフルな署名が可能で、柔軟なプログラムを書けることからLinghtning Networkよりシンプルにシステムを構成することができる、と言われています。
ペイメントチャネル
ビットコインにおけるペイメントチャネルは、ある2人の間で2-of-2マルチシグアドレスにデポジットとしてトークンを送り、そのデポジットの範囲内で、高速かつ低コストな送金を実現するオフチェーン技術です。ペイメントチャネルには、送金できる方向が一方通行である単方向ペイメントチャネルと、お互いに送金可能な双方向ペイメントチャネルがあります。 イーサリアムにおいては、ビットコインでのペイメントチャネルをステートチャネルと言います。
単方向ペイメントチャネル
単方向ペイメントチャネルとして、アリスからボブに送金を行う場合の様子を下図に示します。デポジットとして、アリスが保有しているトークンを100だけ、アリスとボブの2-of-2マルチシグ(アリス&ボブ)に送ります。このトランザクションがブロックチェーンに取り込まれれば、アリスとボブの間にペイメントチャネルが開いたことになります。アリスがボブに送金したいときは、アリス&ボブのアドレスから送りたい量だけボブ宛に送金したトランザクションを、直接ボブに送ります。このとき、デポジットされた100トークンの範囲内であれば、何度でもボブに送金できます。ボブは、アリスから送られたトランザクションに自分の署名をつけてブロックチェーンに書き込むことで、入金を確定できます。このとき、アリスからボブに何回送金されていても、ブロックチェーンに書かれるトランザクションは1回だけで済み、トランザクションの手数料を抑えることができます。また、アリスからボブへの送金は、ブロックチェーンに取り込まれることを確認する必要がないため、高速な決済を実現できます。
双方向ペイメントチャネル
ペイメントチャネルを双方向にするためには、アリスとボブがお互いにデポジットを出し、アリス&ボブのマルチシグに送金します。単方向の場合と比べて双方向のペイメントチャネルが難しい点は、どちらかがオフチェーンでの送金を行ったあと、送金する前の状態のトランザクションをブロックチェーンにコミットすることで、オフチェーンでの送金をなかったことにできてしまう点です。そのような不正があった場合は、一定時間内であれば、不正された側がデポジットされたトークンを全額回収できる仕組みを入れることで、不正を防止しています。
次回予告
第2回では、Raidenの技術的特徴の解説と最新動向の紹介を行います。