イーサリアム・スケーリングの現状
2018年3月のEthCCよりハイライトーPlasma Cash、Minimum Viable Plasmaなど
本記事は、The State of Ethereum Scaling, March 2018(Georgios Konstantopoulos) の翻訳です。万一誤訳などありましたらPrivate Note機能でお知らせ下さい。
2018年3月8~10日、世界中のイーサリアムのプロフェッショナルや研究者、投資家、そして愛好家たちがイーサリアム・コミュニティ・カンファレンス(EthCC)のためにパリを訪れた。
EthCCのオーガナイズは、Assethという2016年初めよりイーサリアムに関する知識やそのエコシステムの共有を進めてきたフランスの非営利団体によって行われた。
合計800名以上が出席した(私も!)。
ガバナンス、セキュリティ、プライバシーから、DApp開発、ゲーム、分散型取引所と幅広いテーマについて、3日間で100以上の講演が行われた。 次のスプレッドシートにて、ほとんどの公演を見つけることができる。
各講演についての説明はこの記事では行わないが、 Loom Networkはスケーラビリティに注力しているので、この記事ではEthCCのスケーラビリティに関する講演にフォーカスしていこう。
Plasma、Plasma Cashとシャーディング
2日目にKarl FloerschがPlasmaとShardingに関する最新の進捗を発表した。この講演は、先週彼がアップロードしたPlasmaの説明動画よりも少し詳細なバージョンである。
この講演は私好みのものだったが、それは主にそこで説明されたコンセプトに対するKarlのエネルギーや熱意のためであろう。現時点では、Plasmaは単純なトークンのトランスファー(ERC20 / Ether)向けに設計されているが、ERC721といったより複雑なトークン、またはより一般的なステート遷移へと拡張できる。
プラズマはプロトコルではなく、設計パターン、そして技術であることは理解されるべきだ。重要な要件は、Plasma Chainはルートチェーンと同レベルで安全でなければならないということだ。
Plasma技術の裏にある主なセキュリティ・メカニズムは「Plasma Exit」というもので、これはPlasma Chainに参加しているユーザーがチェーンへの参加をストップし、彼らの資金をルートチェーンに戻すプロセスである。 全プラズマチェーンは、それぞれの「Plasmaオペレーター」によって管理されている。
ユーザーがプラズマチェーンにて取引していてメインチェーンに資金を移したい場合、「Exitトランザクション」の送信を行う(つまり彼らのトランザクション履歴のマークル値が、ユーザーがある金額を所有していることを証明する)。そのとき「チャレンジ期間」というものがある。
チャレンジのメカニズムは、ほとんどのオフチェーンソリューションにおいて見られている。 基本的には、主張が無効であるとマークする証明を送ることで、誰でもあなたの主張にチャレンジすることができる(これはPlasmaではトランザクション履歴のマークル証明、そしてペイメント・チャンネルでは他者からの署名付きメッセージである)。
さらに、チャレンジ可能なトランザクションを行う場合、人々があなたの行動に悪意があると思っているなら、多少の報酬を付け加えることであなたにチャレンジするインセンティブを与えることも求められる。 これは、何かを盗んで「もし私を捕まえられたら5ドルを払う」といったようなことだ。
通常の場合は、もしボブが5 PETH(Plasma Ether)をルートチェーンに送り返したいと思った場合、彼はExitトランザクション(担保としての報酬もプラス)を送信し、もしそれがチャレンジされなければルートチェーン上の5ETHを請求することができるようになる。 もしボブのExitトランザクションがうまくチャレンジされれば、それはキャンセルされて、挑戦者が報酬を得る。
より危険なケースは、Plasmaオペレーターが彼らのチェーンをExitしたい場合だ。 説明された攻撃ベクトルは、Plasmaオペレーターが、任意の量のPETHを彼らに与えるブロック採掘を行ったあとExitを試み、すべてのETHがスマート・コントラクト内にロックされてしまうというものである。 このシナリオでは、SamとAliceのPETHは、PlasmaオペレーターのPETHよりも早く作られている。
Plasmaコントラクトを排除しようとする場合、Plasma OperatorがExitを送信すると、SamとAliceはそれに気づき同じくExitを送信する。 より古いトランザクションから処理されるので、安全にPETHをETHに交換することができ、またPlasmaオペレーターのExitが無効なものとして処理されると、コントラクトは空となる。
Karlのプレゼンテーション第2部はPlasma Cashについてであり、以下のVitalikのプレゼンテーションで説明されている。
最終部はシャーディングとフェーズ0、フェーズ1についてであった。
シャーディング・フェーズ0:
- ハードフォークしない
- バリデーター・マネージャー・コントラクトは、シャード・バリデーターのセットと100までのイーサリアム・シャード、またデータ可用性の保証を持つ
シャーディング・フェーズ1:
説明されているように、シャーディングには3種のエンティティが存在する。
- ユーザー: トランザクションを送信するエンティティ
- ブロック提案者: ステート遷移の計算とブロックの提案を行うエンティティ
- バリデーター: ブロックを検証し、データ可用性を保証する。
ブロック提案の行われ方について詳しい説明がされているので、Karlの講演を見て欲しい。きっと気に入ることだろう。
Minimal Viable Plasmaのステート
David KnottはPlasmaのUTXOモデルを発表している。 UTXOモデルはビットコインと同じく、未使用アウトプットのトランザクションの合計を持つユーザーがいて、そして未使用アウトプットトランザクション(UTXO)の合計がユーザーの残高を構成するというものである。 ユーザーは何千ものUTXOを持つことができ、証明のサイズを増加させてしまうため、これは証明を作成しようとする場合は非効率である。 このケースでは、アカウントのシュミレートは、ユーザーが全UTXOを自分宛に送信し、それらを1つに圧縮することで完了する。
ユーザーがPlasmaコントラクトにEtherをデポジット(ロック)する場合、UTXOがその量だけ生成される。そしてユーザーは高速な承認と安価な手数料のメリットを享受しながら、Plasmaチェーン上に望むだけ多くのトランザクションを作成できる。退出したい場合は、そのUTXOをルートチェーンのコントラクトに送信し、ロックされたEtherを元に戻す。
目標とするのは、PlasmaチェーンのPlasmaチェーンを持つことが可能となり、それぞれに異なる機能を持たせることである。そのセキュリティは裁判と同じようなメカニズムで維持される。争いとなった場合、ルートチェーンによって紛争が最終的に解決される最悪のシナリオとなるまで、次のレベルの権限が呼び出されていく。
Plasma Cash
最後に、Vitalik Buterinはサプライズ講演を行い、「ユーザーあたりのデータチェックがはるかに少ないPlasma」としてPlasma Cashについて明らかにした。 会場は完全満員だったため、同時にKarlが屋外で即興トークを行った。 その様子はこちらで見ることができる。この講演は、ethresear.chのフォーラムで行われている議論のライブバージョンである。
基本的にPlasma Cashは、Plasmaに次の修正を加えたバージョンである¹:
- すべての単一のデポジットは特有のコインIDに対応している。 トークンは分割不可能であり、マージされることができない。
txindex
の順番でバイナリのマークルツリーにトランザクションを格納する代わりに、それらをスパースでシンプルなマークルツリー、またはパトリシアツリーのいずれかに格納する必要がる。そのとき使われたコインのIDをインデックスとして付け足す。
これはコインにいくつか代替不可能な性質を与えて、次にその履歴の証明の最適化を可能にする。 この構成では、ユーザーは見ているコインの履歴(マークルパス、以下のUTXOモデル)を検証するだけでよいので、チェーン全体のすべてのコインのトランザクションを検証する必要がなくなり、より効率よく証明することを可能にする。
ステートチャンネル
ステートチャンネル界の3つのメインプレーヤー、Funfair、SpankChain、Raiden Networkを比較することにフォーカスしていこう。
FunfairとFate Channels
これはギャンブルのユースケースであるため、ランダム性のソースが必要となる。 プレーヤーとカジノ間でペイメントチャンネルが開かれるとRNGはプレーヤとカジノの両方に伝えられ、より安全なエントロピーソースが確保される。 Fate Channelsは現在、非公開ソースであるが、これは競争優位性を保つ手段であるとJezは説明している。
FunFairは「チューリング完全なステートチャンネル」を実行することができるが、これはSpankChainのステートチャンネルに似ており、任意のステート遷移を行うことができる(支払い専用に作られたRaidenとは対照的だ)。
チャンネルを開くのにも、終了するにも1トランザクションが必要とされる。中間のトランザクションは、いくつであってもオフチェーンで発生する。Fate Channelsも、ゲームセッションの間だけ続く短命なものだ。
SpankChainと一般化されたステートチャンネル
AmeenがSpankChainのエコシステムの概要を説明した後、Nathan GinneverがSpankChainのステートチャンネル実装について深く掘り下げた。 一般化されたステートチャンネル及び「反動的インスタンス化」とは、L4やCounterfactualにより造りだされた用語である。
その概念とは、ステートチャネルに参加している双方がスマート・コントラクトのバイトコードの署名及び共有をし、いつでもそれをブロックチェーンにデプロイできるということである。 いつでもトリガーを引けるということは、不誠実な行為を抑止し、またコントラクトがデプロイされていなくても双方をコントラクトのルールに従わせるのに十分である。
このため、両クライアントが期待どおりの行動をしている場合、オンチェーントランザクションをゼロにすることが可能だ。
チャレンジが発生すると、違った状況となる:
ボンドマネージャー・コントラクトは、チャネルのオープンとクローズを担っている。 このコントラクトは、結合されたEtherとトークン、そして残高を保持するが、その残高は閉じられたサブチャネルの最終ステートを、オフチェーン・クライアントによって解釈することで決定される。
Raiden Networkとペイメントチャンネル
Lefteris KarapetsasによるRaiden Networkの講演では、進捗状況とロードマップのアップデートがなされた。Raidenはイーサリアムにおける Lightning Networkだと考えることができる。
Raidenには、Ethereumノードを常時実行できるコンピュータが必要だ。 低電力のIoTデバイスはEthereumノードを実行できないため、これはまず難しいタスクである。 さらにネットワークのカバレッジやエネルギー制限のため、まだ常時どこでもオンラインであることは難しい。
モバイルクライアントがRaidenノードを稼働できないといったような、ユーザビリティの課題は未だに存在している。低電力デバイスを対象とした場合、適切なセキュリティを追加するための余計なオーバーヘッドもかかる。ウィスパーのように現在利用可能な通信プロトコルはスケーラブルではなく、またRaidenがMatrixを使用できるほど十分な低レイテンシでもない。
このコードは複数のリポジトリにリファクタリングされていて、RaidenのGithubで見ることができる。μRaidenから学んだ教訓を生かして、新しいスマートコントラクトは、読みやすさとセキュリティ、そしてガスの最適化により重きを置いて書かれている。
実用最小限の製品(MVP)の各モジュールは完成間近であり、テストネット上でのテストと外部監査を受けた後、Raidenはついにメインネットにローンチする。もしあなたが開発者であれば、広範なドキュメンテーションがあるので、リポジトリのどれかをフォークしてプルリクエストを送信することでRaidenにコントリビュートが可能だ。
次のグラフは、各ステートチャンネルのソリューションを並べて比較したものだ:
検証されたオフチェーンの計算
これについては十分議論されていないと私は思う。Oraclizeは、いかなる外部データソース(Web APIなど)とブロックチェーンアプリケーション(Ethereumのコンテキストではスマートコントラクトなど)との間に安全な認証チャンネルを提供する¹。これをさらに拡張して、計算リソースをオフチェーンにオフロードすることはできるが、オンチェーンでの有効性を60,000 gasのコストで検証することは依然として可能だ。
これについては、OraclizeのDevcon3の講演でさらに説明されている。 どんなSolidityの関数でもオフチェーンで実行し、その結果をOraclize経由で取得し、その信頼性を検証することができる。その証明が認められればあなたは単に多くのgasを使わずに済み、認められなければトランザクションをオンチェーンで実行できる(これはTruebitを思い出させる)。
ペイメントチャンネルを強化するためのOraclize使用方法についても言及されたが、詳しい説明はされなかった。
Casper Correct by Construction (CBC)、バイナリコンセンサスからシャーディングへ
Vladの講演及び研究は、よく定義されていて「correct-by-construction(CBC)」でありうるプロトコルを作成することにフォーカスしている。このコンセプトはやや直感に反するものだ。 従来のアプローチでは、まずプロトコルを作成しその分析を行うが、 CBCは分析を最初に行ったあとでプロトコルを作成する。
CBCの方法とは:
- 形式的に、だが部分的にしかプロトコルを指定しない
- プロトコルが満たすべきプロパティと証明を定義する
- プロトコルを満たすと証明された方法でより多くのプロトコルを引き出す
その目標はほぼ些細なプロトコルの正しさを証明することである。
この場合、数学的な規則のセットが定義されていて(この部分でオートマトン理論が役立つだろう)、プロトコルはそれらの規則を重視して設計されている。
Vladの講演は、合意の安全性といったルールと用語の定義で始まった:
2つの状態σ1とσ2が共通の将来のプロトコル状態σ3をもつ場合、σ1とσ2間の順方向安全性とσ3とσ2間の逆方向一貫性を用いることで、σ1で行われた全決定はσ2で行われた決定と一致する。このことで、σ1はσ2との合意安全性を持つこととなる。
合意の安全性についてのより詳細な説明は、この論文の定理(Theorem)1を参照すること。
最後に講演のシャーディングの部分では、マージされたブロックはシャード間の共有履歴の「チェックポイント」として考えることができると説明された。
私が強くお勧めするしたいのは、この講演(スライド)と、CBCの論文、そしてイーサリアム・ベルリン・ミートアップでのVladのCBCプロトコルに関する他の講演を見ることだ。これはまだ研究段階であり、メインネットへのリリース予定はない。
私はVladの講演は、フォローしていくことは難しいが知識を得るのに非常に有益であると思うし、しばしば講演を観直すことに完全フォーカスすることを必要としている。なのであなたも講演の理解に時間を取るべきであろう。これはカンファレンスで最も長い講演であったが、Casper CBCとプロトコル設計はかなり複雑なフィールドだと思っているので、将来単体の記事でカバーしていきたい。
Loom Networkとは?
スケーラビリティに関して、DAppチェーンを構築可能にするためのソフトウェアSDKを開発しています。DAppチェーンとはノンファイナンシャルなユースケース向けに特別に形成されたサイドチェーンのことです。LoomのDAppChainsについて、最近の記事を読んでもっと学びましょう:
今回は長い記事となりました! 各スケーラビリティプロジェクトの状態と状況の進捗を今よく知っておくべきです。 すべてのプロジェクトはオープンソースなので、ぜひコントリビュートしてください。
次のステップは:
- 質問がありますか?DelegateCall.comで尋ねてみましょう!私たちのブロックチェーンベースのQ&Aサイトで、貢献するとERC20トークンをゲットできます!
- Loom Networkのメーリングリストに参加して、私たちから直接アップデートを受け取りましょう!
- イーサリアムのスケーリングについてお話ししませんか?私たちのTelegramに参加して会話してみましょう!
Loom Network は、イーサリアムのハイスケーラブルなDPoSサイドチェーン構築のためのプラットフォームで、大規模ゲームやソーシャルアプリにフォーカスしています。
さらなる情報は こちらから.
あなたがブロックチェーンゲームのファンであれば、 Zombie Battlegroundをチェック!世界初・独自のブロックチェーン上でフルに稼働するPC & モバイルカードゲームです。
そしてもしこの記事をお楽しみいただけ、最新情報の受け取りをご希望であれば、私たちの プライベートメーリングリストへの登録や、Telegram、Twitter、GithubやQiitaのフォローをお願いします!