8月1日より始まった毎日投稿のニュースレターも今日で31日、ちょうど1ヶ月が経ちました。14,000PVを突破し300人超えの登録を頂いています。今後も脳内アウトプットを目標にした独り言ニュースレターを続けて行きますので、もしよければサブスクの登録や支援をいただけると今後の活動の励みになります!
いつもPolygonってなんですごいの?って聞かれたら「Bizが強い」って言ってたんですがようやく他の部分でも頭ひとつ抜きん出たものを発表しました。
ここ数年の界隈のトピックで熱が冷めないものの一つ「interoperability」、日本語で言うと「相互運用性」に関するプロダクトでかなり目を引く発表がありました。
Polygon自体は複数のチェーンを合わせた総称である一方、世間のイメージはというとPolygon=Polygon PoSでPolygon PoS以外の知名度と期待感は他の類似プロジェクトと比較して劣るものが正直ありました。
先日「Polygon 2.0」と掲げて、tickerの変更(MATIC→POL)など目に見える部分も目に見えない部分も大きくリブランディングを始めたPolygon、Supernetsに次いで期待感の高まるチェーン開発キット「Polygon CDK」の解説に先立ち、「Polygon PoS」の「Plasma」について一緒に復習をしましょう。
Polygonの歴史
まず始めにPolygonの歴史から話していこうと思います、いまに繋がるいくつかの情報が隠されているので探しながら一緒に見てみましょう(polygon.technology)。
まずPolygonの前身となる「Matic Network」をインドのMumbaiで創業したのは、遡ることいまから6年前の2017年のこと。Polygonのtestnetは軒並み「Mumbai」と付けられていますが立ち上がった地名が由来になっています。
継続的な開発の末、2019年4月1日からBinanceのIEOで総供給量の19%にあたる「1,900,000,000 MATIC」を「1MATIC=0.00263ドル」で販売し、4,997,000ドルの資金調達を完了。
2020年6月にはEthereumのPlasmaベースでmainnetをローンチ。ローンチ時点でchainIDは「137」だったのでPolygonへのリブランディングの予定はすでにあったのかもしれない(ポケモンの図鑑番号の137は「ポリゴン」だから)。
2021年2月に「Matic」から「Polygon」へとリブランディングを実施。スケーリングの拡張とインフラ的なソリューションを提供するという意味で「多角形」を意味するPolygonになったとのこと。
2021年8月にzk-rollupの「Hermez Network」を2億5,000万ドル分のMATICで買収し合併。後の「Polygon Hermez」となる。
2022年2月に4億5,000万ドルの超大型資金調達を名だたるファンドから完了。このラウンドはSequoia Capital Indiaが主導し、SoftBank Vision Fund 2、Galaxy Digital、Galaxy Interactive、Tiger Global、Republic Capital、Alameda、Animoca Brands、USV、Celsius、Spartan、Sino capitalなどの計40社が参加。
2022年4月にはカーボンニュートラルの実現に向けたロードマップを発表。ブロックチェーン維持の電力問題に真摯に向き合う姿勢を提示。
2022年10月にPolygon zkEVMのtestnetを始動。EVMと完全に互換性のあるzk-rollupとしては世界で初めてのローンチ実績を獲得。
おおまかにではありますが、このような流れでPolygonは成長を続けてきました。間でも継続的な企業コラボの獲得や提携のニュースは途絶えず、国内でもNFT界隈からはガス代の低さから多くの指示を得てきました。
Plasmaについて
Polygonについて昔の情報や詳しい内容を探していると必ず出てくるのが「Plasma」の言葉、よくある間違いとしてPlasmaというチェーンがMaticになったわけではなく、Plasmaという仕組みでありEthereumの最初のスケーリングソリューションの提案です。その仕組みを順番に解説します。
まずEthereumが公式に提唱しているスケーリングソリューションはいくつか存在しています。有名なものだと「L2」や「Sidechains」ですがもう少し細分化してみます。
Sharding
Optimistic rollups(OPRU)
Zero-knowledge rollups(zkRU)
State channels
Sidechains
Plasma
Validium
より細かい部分で区分けすると更にありますが、大きく分けて上記の7個に分類できます。Plasmaはスケーリングのための一つの手段ということです。ちなみにPolygon PoSがサイドチェーンかL2かの議論が起こる理由はここにあります。ここからは本題の「Plasma」の解説に入ります。
EtehreumのPlasmaは、Ethereumの創業者である「Vitalik Buterin」氏とBitcoinのスケーリングソリューションのLightning Networkを提案した「Joseph Poon」氏によって2017年にコミュニティに提案されました。
Plasmaの根本的な目的は親チェーン(root chain)にあたるEthereumとの通信や相互作用をなるべく減らした「secondaly chain」を確立させることです。root chainの上に階層的に子チェーンを形成できる一方でサイドチェーンとは異なるものです。
Plasmaの基本的な構造は「smartcontracts」と「merkle tree」の2つを活用しています。子チェーンはroot chainの一つのカスタマイズ可能なcontractからなるので、root chainのセキュリティを借りながらチェーン上に無制限の独立したチェーンを立ち上げられるということ。加えてEthereumの外側でトランザクションを実行し処理能力を向上させることができるというわけです。
オフチェーンでの処理
スケーリングに関してガス代を削減したり処理時間を早くすることが表に出がちですが、そもそもEthereumの場合などは処理能力のキャパがあるので仮にいまの10倍のトランザクション数になったら確実にさばけないです。なのでEthereumで処理される予定だったトランザクションの一部を外部に任せることで、エコシステム全体での処理能力を高めることを原点的な「スケーリング」と呼ぶことを忘れないように。
Ethereumのconsensus mekanismは強力で高いセキュリティを維持するために必須ですが、あらゆるユースケースで必要かというとそれは違いますよね。例えば信頼関係にある2者間の取引や少額の取引を頻繁に行うケースに置いて、全ての処理をEthereumで担うには非効率だと感じませんか?現にガス代の都合で、10ドル以下の取引をEthereumで行うのはかなり高コストだと感じるでしょう。
高いセキュリティを得るために高いインセンティブが発生しているわけで、このセキュリティを維持したままガス代を安くすることは現実的ではないからこそこのようなアプローチが考えられているわけです。PlasmaやL2ではEhereumの外(Ethereumから見てオフチェーン)で取引の処理を行うことで、Ethereumで実行される量や書き込む量を最低限に抑えることができるということです。
Fraud proofで不正証明
子チェーンとroot chainの通信は「Fraud proof」という不正証明を行う仕組みで保護されているため、ネットワークの安全性を保ちながら悪意のある攻撃者を罰する仕組みを備え、チェーンのカスタマイズ性を向上させれています。
なのでそれぞれの子チェーンは独自のコンセンサスアルゴリズムを利用可能です。例えばPolygon PoSの場合は「Proof of Stake(PoS)」を採用し、validator、block producerの選択、EthereumとPolygonとの同期メカニズムを担うconsensus layerにはCosmos-SDKとTendermintベースのPeppermintの「Heimdall」を。合意形成の部分にはClique由来の「Bor」を使用しています。
話を戻して「Fraud proof(不正証明)」について、この仕組みは現在はOptimistic rollupを使用したL2で主に利用されています。トランザクションの処理スピードを向上させるために複数のtxをbatchにrollupし1つのtxとしてEthereumに刻むことで、ガス代を安価にし処理能力を向上させることができます。これらのtxは一般的に有効とみなされるが、不正が疑われた時にchallengeという異議申し立て的なことを行える仕組みになっています。同じくL2で使われるちょっと似た仕組みで「validity proof(有効性証明)」というものも存在しています。
Plasmaとroot chain間の資産移動
次にPrasmaとroot chain間の資産の移動方法について見てみましょう。Polygonが提供している「Polygon bridge」ではこちらの方法が採用されています。
Plasmaチェーンへroot chainにある資産を送りたい場合は、plasma contractにまずはETHやその他のERC-20をtransferします。contractへのtransferを監視しているPlasmaのoperatorによって同額のトークンがPlasmaチェーンのアドレスに送付されます。子チェーンで受け取ったトークンはPlasma上で確認を行う必要があり、確認が完了していない状態ではトークンに対するtransfer等の操作を行うことはできません。
Plasmaチェーンから逆にroot chainへ資産を移動したい場合はを見てみましょう。ここでいくつかの問題が発生します。なぜならPlasmaの状態をroot chainが保持しているものの、root chainからPlasmaチェーンの情報の正しさを検証することができないからです。Plasma上の取引はPoSやその他のアルゴリズムによって検証が行われていますが、重要なのはPlasma側がroot chainに影響を与えるケースですね。
ここで先程紹介したFraud proofが活用されます。例えば「ta1suke.ethは10ETH持っている」と悪意のあるユーザーが述べて、この主張を裏付けるための嘘の証拠を提出したらどうなるか、まずこういうことができちゃう可能性があるということ。
上記のようなことを防ぐために「challenge期間」というバッファを設け、すべてのユーザーがto rootchainのtxに対して異議申し立てを行えるようになっています。この異議申し立てが認められれば出金リクエストが却下されるという流れです。
また不正なリクエストを行うことへのディスインセンティブとして引き出したい資金に加え一定数のdeposit(bond)を行う必要があり、不正な取引だと判断された場合はこの資金が異議申し立てを行った人へと送られます。
一般的に1週間に指定されているchallenge期間に不正証明が行われなかった場合、出金リクエストが承認されPlasma上の資産がroot chainへと移動されます。これはOptimismなどのOPRUを使用したチェーンにも利用されている一般的なモデルです。
データの可用性による問題
非常にスマートな仕組みに一見される一方で、その仕組みに少しもんだいがあるからL2に置き換わりいまのスタンダードになっていないという捉え方もできます。その問題を紐解くための重要なキーワードが「データの可用性(Data Availability)」。
一つのチェーンですべての役割を担うEthereumのようなモノリシックなチェーンでは、フルノードでtxのデータを保有しているのでデータの正確性を自身で検証することができ、そのノードが悪意のあるtxを受け入れる可能性はなくなりますが、L2などの役割の一部を外部のチェーンや仕組みを利用するものやライトクライアントでは、データの可用性を検証することが困難になります。
要するにノードがすべてのブロックチェーンデータをダウンロード(利用)でき、相互に信頼することなくtxを検証できる状態を「データの可用性がある」といい、それができない状態を「データの可用性がない」といいます。
ここらへんの話はまたの機会に「Celestia」の話をしたいですね。
結局データの可用性がPlasmaでどうなのかって言ったら、「Plasmaがデータの可用性がない」ことに起因していくつかの問題が起こってしまっている現状があること。
先程出てきたroot chainとのやり取りを行うoperatorがroot chainへの出金時ももちろん出動するわけで、そのtxデータの保存は主にoperatorが行うためoperatorから提供されるデータにデータ元を依存せざるを得ません。
普通だったらoperatorを正しい情報を渡してくれているという前提のもとネットワークが成り立っていますが、仮にoperatorが悪意を働いたとしたらどうなるでしょう。そのtxの有効性を確かめることは難しくなりますよね。データの渡す渡さないの判断を単独で決めることができるので可用性なんてものが存在しないからです。
1ユーザーが攻撃を仕掛けるよりも経済的なディスインセンティブが小さいかつ、不正証明の仕組みでは回避できない攻撃なので、悪意のあるoperatorがいた場合には全員の資金をroot chainに退避させるしか方法がなくなってしまいます。
一方で全ての資金を移動させることはroot chainにかなりの負荷をかけてしまうことに加え、Plasmaでスケーリングを行っている手前、root chainよりも肥大化したデータ群が想定されるので現実的ではありません。データの可用性に起因する問題がこのような形で発生してしまっています。
さいごに
ざっと話しましたが自分も一部今回の執筆にあたり復習したところもありましたし、わからないところは詳しい人に教えてもらっている状況なので、一緒に詳しくなっていけると嬉しいです。データの可用性周りはどっかでまた解説します。
冒頭でも触れましたが今日でなんとニュースレター1ヶ月です。これからも毎日投稿を何事も無ければ続けていく予定なので、ぜひメールアドレスの登録ともし応援いただけるようであればサブスクやFounding Memberになっていただけるとめちゃくちゃ嬉しいです。
ではまた明日の9月のニュースレターでお会いしましょう。