『マスタリング・イーサリアム』の翻訳に参加しました。

オフチェーン処理の要「ステートチャネル」の概要を掴む

プロジェクト紹介

ステートチャネルは聞き慣れない言葉だと思いますが、ビットコインのライトニングネットワークやEthereumのRaiden Networkで用いられるペイメントチャネルはステートチャネルの一種と言えます。ブロックチェーン上でなし得る操作を、ブロックチェーンから完全に切り離すことなく、部分的にブロックチェーン外で行う、というイメージでしょうか。ステートチャネルはオフチェーン処理の一手法で、ブロックチェーンの利点を最大限残しつつ、オフチェーン処理を利用することにより、オンチェーンのみでは高コスト且つ低速になってしまう処理を、低コスト且つ高速に行うことを目的とする技術です。

ペイメントチャネルとは?

例えば二者間のペイメントチャネルは、二者の最初と最後の残高のみをブロックチェーンに記録し、その間に行われた取引はブロックチェーン外で処理をします。オンチェーンやオフチェーンという言葉はこの文脈で使われます。ブロックチェーン上に記録を残す操作のことをオンチェーン処理、残さない操作のことをオフチェーン処理と呼ぶことがあります。

何故オンチェーンではなくオフチェーンで操作するかというと、今のところブロックチェーン上での操作はコストが高く、また処理も遅いためです。特に少額を高頻度で決済する必要がある場合には、送金したい額よりも手数料のほうが高いという事態もあり得ます。しかしビットコインやEthereumのパブリックブロックチェーンには、PermissionlessでTrustlessという他の手段では代替できない利点があるため、単純に低コストと高速化のために処理をブロックチェーンから完全に切り離せば良いというものでもありません。ブロックチェーンの利点を保持したまま、ブロックチェーンの欠点を補うようなアイディアが必要になります。

これらの問題を解決するために注目されているのが、ビットコインではライトニングネットワーク、EthereumではRaiden Networkと呼ばれているものです。この記事では詳述しませんが、いずれもデポジットという保証金のようなものをネットワークにロックすることにより、デポジット額以下の送金を手数料なしで高速に行えるというものです。複数の二者間ネットワークを相互に連結させることにより、二者間ネットワークとして直接は繋がっていないネットワークの幅広い参加者の間で、高速且つ無料の送金が行えるようになることが期待されています。現在はライトニングネットワーク、Raiden Network共に開発中の段階で、実用化には至っていません。

ライトニングネットワークもRaiden Networkも最終的には多対多の汎用的な支払いを可能にすることを目標にしていますが、後者は最初の一歩としてμRaiden(マイクロライデン)という多対一のペイメントチャネルの実現を計画しています。多対多のネットワークを実現するためには、複数の二者間ネットワークを相互に連結させ、適切なルートを見つけ出す必要があるため、より複雑なルーティングアルゴリズムが求められます。

ステートチャネルとは?

上述のペイメントチャネルを支払い以外の手段にも用いることができるのがステートチャネルです。むしろステートチャネルのペイメントへの応用がペイメントチャネルと言ったほうが良いかもしれません。ステートとは状態(State)のことです。通常はブロックチェーン上で行われる「状態を変化させる操作」をオフチェーンで行おうというアイディアです。

Jeff Coleman氏のブログではステートチャネルの開閉手順について以下のように説明されています。

  1. ブロックチェーンのステートの一部をマルチシグナチャーかスマートコントラクトでロックし、参加者がそのステートの更新を同意の上で行えるようにする。
  2. 参加者はブロックチェーンに記載することも可能なトランザクションを用いて、ステートを更新する。ただしこの時点でブロックチェーンへの書き込みは行わない。また、新しい更新は古い更新よりも優先される。
  3. 参加者は最終的なステートをブロックチェーンに書き込み、ステートチャネルを閉じ、ステートのロックを解除する。

2の操作=ステートの更新のためにブロックチェーンに書き込む必要がないことに注意して下さい。ブロックチェーンに書き込む必要がないにも関わらず、ここで行われる更新は1と3の操作=チャネルの開閉に挟み込まれているため、パブリックブロックチェーンの利点であるTrustlessの性質を保持しておくことが可能であると言われています。参加者はブロックチェーン上でステートを確定、あるいは公表したい場合にのみ手数料と承認時間を要する操作1と3が必要です。

ステートチャネルの課題

ステートチャネルを安全に稼働させるためには、「参加者はいつでも自由にチェンネルを閉じ、ステートをブロックチェーン上で公表することができる」ことが保障されていなければなりません。そしてそのためには最新のステートを保持している参加者の誰かがオンラインである必要があります。というのも、そうでなければ自分がオフラインの間に、自分にとって不利な”最新ではないステート”の悪用を防げないからです。上の手順の2にもあるように「新しいステートは古いステートよりも優先される」ので、最新のステートを保持している誰かがオンラインで居続けなければならないのです。オンラインで居続けるのが自分自身である必要はないので、最新のステートをスマートコントラクト経由で公表することを同意しているサーバーに配布しておくことも可能です。

またステートチャネルはネットワークのインフラに相当するため、ステートチャネルの開発それ自体から利益を上げることは容易ではありません。そのためステートチャネルの開発に意義があったとしても、経済的見返りの不足から、資金調達に問題が生じます。Raiden Networkを開発するbrainbotはICOを行いましたが、Ethereum創設者のVitalik等から批判を受けました。本記事でも引用したJeff Coleman氏やLiam Horne氏が在籍するL4 VenturesはVitalikからの経済的支援を受け、汎用ステートチャネルの開発を行うようです。またL4にはVitalik自身もメンバーに名を連ねています。


State Channels – an explanation

Generalized State Channels on Ethereum – L4 Media – Medium

L4 Ventures