暗号通貨とブロックチェーン研究所

暗号通貨とブロックチェーンに関する技術やトレンド情報を解説していきます。

Plasmaの課題を解決するPlasma Cashと今後の発展(Plasma XT、Plasma Debit、More Viable Plasma)

Plasma Cashは2018年3月9日にイーサリアム創始者のVitalik Buterin氏によって発表されたイーサリアムのスケーラビリティ問題を解決するための技術のことで、Plasmaの抱える課題を改善することでさらなるスケールが期待されています。

youtu.be


Plasmaに関してはこちらの記事をご覧ください。

tomoyaishida.hatenablog.com

Plasmaの課題を整理

ユーザーによるチェーンの監視が必要

Plasmaではネットワークの参加者はプラズマチェーンを監視し続けなければなりません。なぜなら監視をしないと不正が起きた際に気づくことができない上に不正の証明ができないからです。

ユーザーはPlasmaチェーンのデータを全てダウンロードしなければならない

上述した不正の証明を行うためにユーザーはPlasmaチェーンのデータを全てダウンロードしなければなりません。なぜなら、そのPlasmaチェーンのどこに不正なトランザクションが含まれているかわからないからです。ユーザーによるチェーンの監視を常時行うことは現実的ではないため全てのデータをダウンロードしてチェックする必要が生まれています。しかしデータサイズが大きくなればなるほどユーザーに負担がかかりユーザビリティが損なわれてしまいます。

※Plasmaでは子チェーンにおけるコインの管理方法はイーサリアムのようなアカウントベースではなく、UTXOベースで行われています。

Plasmaの課題を解決するPlasma Cashの仕組み

プラズマチェーンにデポジットしたトークンを固有のidで管理

Plasma Cashでは、Plasma Cashチェーン上にデポジットした全てのトークンにユニークなidを振り分け、それぞれを固有の物(No Fungible Token)として扱います。また、トークンに振られるユニークなidのことをトークンIDと呼びます。

f:id:tomoya415:20180729131959p:plain

一つ一つにidが振られたユニークなトークンをNo Fungible Token(NFT)といい、区別されることのない代替可能なトークンをFungible Tokenといいます。NFTを取り扱うことができる規格にERC721があり、最も有名なDappsであるCryptoKittiesに実装されています。

Plasma Cashチェーンの構造

Plasmaでは、トランザクションのインデックス順にマークルツリー構造が成り立っていましたが、Plasma Cashではデポジット時に付帯されたトークンIDと各ノードのインデックスが対応するようにマークルツリー構造が成り立っています。これによりユーザーは自身のトークンIDとインデックス番号を照会することで、そのトークンが有効性を証明できるようになりました。よってPlasma Cashではトークンの有効性を証明をするためにデータを全てダウンロードする必要がなくなったのです。

f:id:tomoya415:20180729132332p:plain

トークンが使用され、そのトランザクションが正常に処理されると、使用されたトークンIDに対応した位置(インデックス)のノードにトランザクションのデータが保持されます。そのため、二重支払いを防ぐ(トークンが使われていないことを証明)ためには、トークンIDに紐づくインデックス番号のノードが空であることにより、未使用トークンだと証明することができます。

Plasma Cashのメリット

監視の効率化

PlasmaではMerkle Tree全体を監視しなければなりませんでしたが、Plasma CashではMerkle Treeの中でも自身のトークンIDを持つノードとそれに関するPlasmsチェーン(Merkle Proof)のみを監視すれば良いので、監視が効率的になりました。

検証の効率化

PlasmaではPlasmaチェーンのデータを全てダウンロードし不正がないか検証しなければなりませんでしたが、Plasma Cashでは自身のトークンIDを持つノードとそれに関するPlasmaチェーンのみ検証すれば良いので、ユーザーの負担が軽減されました。

残高確認の効率化

Plasmaでは処理されたトランザクションを親チェーンに反映させるには、マークルルートが親チェーンにトランザクションとして送信され、ブロックに取り込まれることで、Plasmaチェーンに承認されることになります。そしてトランザクションがPlasmaチェーンに取り込まれたら送信者と受信者双方のアカウント残高を更新しなければならないので、送信者は受信者に対してPlasmaチェーンを監視しブロックが取り込まれた段階で確認メッセージを送信する必要がありました。そして受信者が確認メッセージを受け取った段階で両者の残高は更新され受信者は受け取ったETHを使えるようになるのです。

しかしPlasma Cashではこの確認作業を行う必要はありません。なぜなら、デポジット時に付帯されたトークンIDを用いてExitを要求するため、悪意の第三者によるトークンの生成や二重使用を防ぐことができるからです。

Plasma Cashの課題

トークンの分割送金

前述したようにPlasma Cashにはデポジットしたトークンに固有のIDが割り当てられています(NFT)。しかし、NFTは分割不可能であるため利用する上で制約が生まれてしまいます。
例えば現状のPlasma Cashでは10ETHデポジットし、そのうちの3ETHだけ使用することが現状できません。ユーザービリティの観点から考えるとこれでは多くのユーザーにとっては使用不可の状態にあると考えられます。またDEXなどの大量取引にも向いていません。
ユーザーが分割や結合をする際に新たなトークンIDに書き換える方法なども提案されていますが未だベストな解を見いだせていないのが現状です。

データサイズ

Plasma Cashになったとしてもまだデータサイズが大きいという問題があります。Plasmaが抱えていたデータサイズの問題と比べるとかなり削減されたものの、今後スマホなどのモバイル端末やIoTデバイス等ストレージに制限がある端末での活用を想定した場合さらなる削減が必要だと考えられています。

複雑なExit

ExitとはPlasma Cashチェーンからイーサリアムのメインチェーンにトークンを戻す行為のことを指します。Plasma CashのExitの仕組みを説明すると、まずExitをする際には少額の保証金(Security Deposit)が必要になります。これは不正を防ぐための仕組みであり、例えばAliceがPlasmaチェーン上に5ETHしか持っていないのに、10ETHをメインチェーンに戻そうとした場合に、ネットワークを監視しているすべてのノード (ユーザー)は不正の申告ができ、本当に不正が行われていた場合は、不正を発見したノードは保証金を受け取ることができます。

また、Exitをする際にはトークンのトランザクション履歴を二つ提出しなければなりません。なぜ二つなのかというと、ブロック生成者が不正なデータを含めてトークンを引き出そうとした場合に、不正なデータは最新のトランザクションと次のトランザクションの間に含まれるからです。

このように現状のPlasma CashではUXの課題がまだまだたくさんあります。これはイーサリアム以外のブロックチェーンにも言えることですがユーザービリティが改善されることで一般ユーザーへの普及が進んでいくでしょう。

Plasma Cash活用事例

Loom Network

CryptoZombiesでお馴染みのLoom Network

github.com

medium.com

Omise GO

東南アジアを中心に決済ネットワークを形成する長谷川氏率いるOmise GO

github.com

最新のPlasmaの動向

f:id:tomoya415:20180729133711p:plain

Plasma界隈は開発が盛んに行われているので、ものすごい速さでアップデートされていきます。

Plasma XT

Plasma XTはPlasma Cashのデータサイズ問題を解決するために提案されました。ブロックのMerkle Treeとトークンの所有者情報(アドレス、署名)を一定のチェックポイントごとに証明データとして提出する仕組みで、チェックポイントが正しい場合において、不正を証明するためにはチェックポイント以降のデータを使うだけで済み、Plasmaチェーン全体を監視する必要がなくなります。これによりPlasma Cash以上のデータ削減が期待されています。

詳細はこちらの記事で詳しく紹介されています。

scrapbox.io

Plasma Debit

Plasma DebitはPlasma Cashのトークンの分割送金ができない問題を解決するために提案されました。Plasma Debitにはデポジット額の残高管理をする仕組みがあり、例えばAliceが10ETHをデポジット(オペレーターに5ETH、残高5ETH)し、Bobが6ETH(オペレーターに3ETH、残高3ETH)をデポジットした場合、5ETH(Alice)+3ETH(Bob) = 8ETHがオペレーターの残高になります。

AliceからBobへの1.5ETHを想定した場合、Aliceの残高を3.5ETHに減らし、Bobの残高を4.5ETHにし、オペレーターはトランザクションによってそれぞれの合計残高が変化しないことを確認後トランザクションを承認し残高を更新します。

これはビットコインのライトニングネットワークにも使われている双方向ペイメントチャネルという仕組みで一定のトランザクションをまとめてから定期的にメインチェーンへと書き込込みを行います。

ペイメントチャネルに関してはこちらの記事で紹介しています。

tomoyaishida.hatenablog.com


ライトニングネットワークを理解している人は、ライトニングネットワークの仕組みをイメージしてみるとわかりやすいかもしれません。

More Viable Plasma

More Viable PlasmaはPlasma MVPのexit priotrityの算出基準を変更したもので、Confirmation Signatureが不要になりました。ただし、Plasma cashが改善した、ユーザーがPlasmaチェーンのデータを全てダウンロードしなければならない問題と不正の監視をしなければならない問題をMore Viable Plasmaは抱えています。またMore Viable Plasmaでは定理証明を行い、正当性を証明しています。

詳細はこちらの記事で詳しく紹介されています。

scrapbox.io


どの技術も研究段階ではあるものの着実に前に進んでいる印象です。最新の情報を知りたい方はEthreum Researchをのぞいてみましょう。Vitalikなども参加して質の高い議論が行われています。

ethresear.ch

参考

Plasma#3に参加してPlasmaをもっと知りたいと思い調べていた内容をようやくまとめる時間が取れました。最新のPlasmaの動向で紹介した3つの実装に関してはまだまだResearchできていないのが現状です。認識違い等ございましたら遠慮なくご指摘ください。

ツイッターのフォローもよろしくお願いいたします!

twitter.com