Plasma, Zk Rollup, Optimistic Rollup

Plasma, Zk Rollup, Optimistic Rollup

はじめに

本投稿は、自身のイーサリアムのスケーリング技術動向のまとめであり、イーサリアムのレイヤー2ソリューションとしての概要を掴むために寄稿しました。
※本文では説明が割愛されている部分や、間違っている部分がある可能性があります。

 目次

・Plasmaの概要

・Plasmaの問題

・Zk Rollupの概要

・Zk Rollupの問題

・Optimistic Rollupの概要

・Optimistic Rollupの問題

・Meta Transactionの概要

・Meta Transactionの問題

・まとめ

 

Plasmaの概要

Plasmaは、イーサリアムを親チェーンとして、そこへ階層的な子チェーンを追加します。その子チェーンで行われた取引は、子チェーンのオペレータによって集約され、その集約されたデータをコミットメントとして親チェーンへ書き込む手法です。この子チェーンをPlasmaチェーンと呼びます。

親チェーンへはコミットメント(ハッシュ値)のみが記録されるので、親チェーンが保有するデータ量を削減することができます。ただし、子チェーンで行われる取引データは、その子チェーンの参加者が保持する必要があります。また、子チェーンのブロック生成者(オペレータ)が不正なブロックを生成しないか常に監視する必要があります。

Plasmaを使う流れは以下になります。

  1. 入金:Plasmaチェーンへ入るためにコントラクトへコインを入金する。
  2. 取引:コインの送金などの取引データをオペレータへ送信する。オペレータは受信したデータを集約し、そのコミットメントを親チェーンへ送信する。
  3. 出金:Plasmaチェーンから親チェーンへコインを出金する。

Plasmaはオフチェーンソリューションとしてのプロトコルで、さまざまな実装が存在しており、Plasma MVPやPlasma Cash、また日本企業が開発しているPlasma Chamberなどがあるみたいです。

Plasmaの問題

  • 参加者はオフチェーン用データを保持する必要がある
  • 参加者はオンラインでいる必要がある

Plasmaは子チェーン参加者が各自取引データを保持しないといけないという制約があります。これはライトニングネットワークに似ている特性ですね。

 

Zk Rollupの概要

Plasmaの問題点を補うために提案されたZk Rollupは、1つのトランザクションの中に複数の取引データを入れる(ロールアップする)手法です。1つのトランザクションに含まれる各取引データは以下のフォーマットを採用しており、これにより実際の取引データよりもデータ量を削減することができます。また、このトランザクションはzk-SNARKとよばれるゼロ知識証明を使って有効性が証明され、このデータには前のステートのハッシュ値を含めて親チェーンへ書き込みます。これによってPlasmaでは書き込まれなかった取引データを親チェーンへ書き込むことができるようになります。

上記のフォーマット図を見ても分かるとおり、Zk Rollupはコイン送金に特化した技術とも考えられます。

現在、Loopring.ioというDEXでこのZk Rollupが活用されているみたいです。

Zk Rollupの問題

  • ゼロ知識証明の計算が大変
  • 初期セットアップに信用が必要
  • コイン送金以外の汎用化が難しい

 

Optimistic Rollupの概要

Zk Rollupでは汎用化が難しいという問題を解決するために考案されたOptimistic Rollupは、Zk Rollupと同じくデータをオンチェーンへ書き込みますが、その証明にzk-SNARKを使いません。その替わりにここでは全員が正しい行動をとるという楽観的な仮定をとることで、取引を汎用化することができる技術です。もし、不正ブロックを親チェーンへ書き込んだ場合は、ユーザーはそれを証明することで、レイヤー2のブロックをまき戻し、不正がなかったブロックから再開することができます。

現在、unipig.exchangeaでOptimistic Rollupを取り入れたPoCを試すことができるみたです。また、2020年の春にはSynthetixがOptimistic VMを使った取引所のデモを公開していたみていです。その内容と結果はこちらより確認できます。

Optimistic Rollupの問題

  • スループットがPlasmaやZk Rollupよりも低い
  • 最低1人の正直な事業者(アグリゲータ)が必用

 

Meta Transactionの概要(おまけ)

メタトランザクションとは、ユーザーは送金したいデータをメッセージとして作成・署名し、そのデータを第三者へ渡し、第三者が実際の取引データを作成して、Gas代を含めて実行する技術です。メタトランザクションの流れは以下のようになります。

  1. ユーザーはMessage(from, to, valueなど)に署名し、第三者へ渡す(メタトランザクションを渡す)
  2. 第三者がメタトランザクションを含む新しいトランザクションを生成し、Proxyと呼ばれるスマートコントラクトへ渡す
  3. Proxyがメタトランザクションの有効性を確認し、トランザクションを実行する

上記の第三者が所謂、リレイヤーであり、リレイヤーのデファクトスタンダードがOpenzeppelinが開発・提供するGSN (Gas Station Network)となりつつあるみたいです。

Openzeppelinが提供するデモをここから試すことができます。

Meta Transactionの問題(おまけ)

メタトランザクションはProxyへ予めGasとなるETHを入金する必要があるため、悪意あるユーザーは不必要な送金をしてそのGasを使い切ることができてしまいます。スマートウォレットのArgentは当初はGasフリーな送金をサポートしていましたが、Gas価格高騰および不正利用によりその機能を停止してしまったみたいです。

 

まとめ

Plasmaはデータをクライアントサイドで保持・管理することから、データオフチェーン技術と呼ぶことができます。一方で、Zk RollupやOptimistic Rollupはデータをオンチェーンに書き込むので、データオンチェーン技術と呼ぶことができます。Plasmaの場合はデータをオフチェーンで保持しないといけない制約がある代わりに、大幅なスケーリングが期待できるかもしれません。また、Zk Rollupはコントラクトの汎用化が難しい反面、コイン送金に特化すれば、データをオフチェーンで管理する必要がない利点があります。Optimistic Rollupは他の技術と比べるとスループットの制約はありますが、コントラクトの汎用化ができるという利点が、ワールドコンピュータの代名詞をもつイーサリアムとしての本命馬なのかもしれません。

 

用語集
  • 親チェーン:イーサリアム本体のブロックチェーンを指す。またオンチェーンとも呼ばれる。
  • zk-SNARK:ゼロ知識証明の1つで、非対話的に証明ができる手法。
  • コミットメント:あるデータをハッシュ化して公開することで、そのデータの実在性を公約すること
参考文献

 

100