Author: Takumi Yamashita Stake Technologies

Abstract

Plasm Network のミッションはすべての開発者にスケーラブルな分散アプリケーションの開発メソッドを提供することを通して新しい Web のあり方 "Web3.0" を実現することです。このドキュメントでは Plasm Network の目的、ブロックチェーン業界で必要とされる背景と発展に寄与する理由、そして、Plasm Netowrk を通して実現する社会についての概要を記載します。さらに、Plasm Netowrk を達成するためのプロダクトについての設計概要を記載します。

Introduction

私達はブロックチェーンを活用することで Web3.0 の実現を目指しています。既存の社会では権力者による情報や富の独占と、自分達に有利なルールを作ってきた歴史があります[^1]。また、公平な仕組みを謳っていてもそこに透明性が無く信頼に依存して成り立っている仕組みと言えるでしょう。そのような既存社会に対してブロックチェーンは、分権的なガバナンスを用いることでプラットフォーマーが管理しない透明性と公平性のある Trustless なシステムを実現します。何故なら、ブロックチェーンは誰もが閲覧、検証、運用可能なシステム上でフォールトトレラント性と高い改ざん耐性を実現できるシステムだからです[^2]。

ブロックチェーンのプロトコルを作るとして実際にユーザーにその恩恵を届けるためにはアプリケーションが必要になります。アプリケーションとは一種のOSとユーザーを繋ぐインターフェイスであるからです。ブロックチェーン上のアプリケーションを一般に Decentalized application(Dapps) と言います。現在、様々なブロックチェーンでスマートコントラクトやチェーンコードといった形で Dapps が開発、デプロイされてユーザーに提供されています。しかしながら、ブロックチェーンの分散冗長化された仕組み上 Dapps の処理性能は決して高いものではありません。最も規模の大きいスマートコントラクトを搭載したブロックチェーンである Ethereum[^3] のトランザクションスループットは秒間15トランザクションです[^4]。一方で世界中に多くのユーザーを保有する VISA や Alipay ではそれぞれ秒間1700トランザクション[^5]、256,000 トランザクションを処理しています[^6]。多くのユーザーが Dapps の恩恵を受けるためには現状の処理性能があまりに不十分であることが分かります。そこでブロックチェーンでは様々なスケーリングソリューションが考え出されました。

ブロックチェーンのスケーリングソリューションはいくつか存在します。例えば、Segwit などのブロックサイズを圧縮するソリューション[^7]、ユーザー同士がオフチェーンでいくつかの取引をまとめて行い最終状態のみをブロックチェーンに記述するステートチャネル[^8]、複数のノードでトランザクションの分散処理を行うシャーディング[^9]、そして別のチェーンにトランザクション処理を行わせてルートハッシュのみをメインチェーンに保存する Plasma などがあります[^10]。私達はその中でもまず、メインチェーンの外でトランザクションを処理するレイヤー2ソリューションに焦点を当てました。レイヤー1 は EthereumやBitcoinと言ったパブリックブロックチェーンのことを指します。それらはトランザクションが飽和している問題を抱えています[^11]。このことから、10年後のブロックチェーンの使用法は今までとは大きく異なり、レイヤー1がトラストレイヤー、レイヤー2がトランザクションレイヤーとして使用されることになると予想されます。

私達がその中でも初めに Plasma に焦点を置いた理由は、Plasma がメインチェーンの処理性能に最も依存しないスケーリングソリューションだからです。Plasma では単一の Aggregator と呼ばれる運営者がサイドチェーンの運営を行います。つまり、合意形成プロセスの不要な中央集権的管理方法で多くのトランザクションを処理することができます。それは、既存の中央集権的システムで使われているスケーリングソリューションをそのまま転用できることを意味するため分散台帳では不可能な高い処理性能を実現することができるのです。Plasma のアプローチは全ての分散台帳に飛躍的な処理性能の向上を行えるためこの先、必要不可欠な技術になっていくと言えるでしょう。

Plasma が高いスケーラビリティを誇ることは分かりました。しかしながら、Plasma の運用には未だいくつかの問題を抱えています。一つは Plamsa を使ったアプリケーション(Plapps)で出来ることに制限がある点です。Plasma で出来ることは一階述語論理(以下、Predicate)で記述可能であることが明らかになりました[^12]。もう一つは Plasma は複数のコンポーネントにより構成されている複雑なシステムであるという点です[^13]。単純にスマートコントラクトを記述しデプロイしただけでは Plapps を構築することは出来ません。具体的には Plapps は親チェーンコントラクト、子チェーン、Aggregator、ユーザーの4つのコンポーネントから成り立っておりそれぞれについて処理を記述しなければならなりません。私達はこれらの問題を Plasm Network を通して解決していきます。Plasm Network では Predicate を正しく記述できるように標準規格を設けてライブラリ化します。そして最終的に複数のコンポーネントを簡単にデプロイできるためのクラウドサービスを構築します。Plasm Network が提供するプロダクトを通して開発者が Plapps を開発する過程を手助けします。

また、Plasma を扱う上で私達は OVM[^ovm] という技術を用います。これは、前述した Plasma を記述するために使用するプロトコルです。さらに、OVM は Plasma だけでなくすべての Layer2 Solution を抽象化した存在です。Layer2 Solution には前述した State channel や、Plasmaの無限のスケーラビリティとトレードオフに取引履歴の可用性に関する問題を解決した Optimistic Rollup などがあります。OVM を用いることでこれらのような Plasma 以外の Layer2 Solution も扱えるようにする発展性を持ち合わせることが出来ます。

私達はこれらのシステムを Polkadot[^14] を軸に展開しようと考えています。Polkadot は複数の異なるブロックチェーンを束ねるプロトコルです。Polkadot によって今まで独立だった複数のブロックチェーンが透明で分権的なガバンスのもと相互運用性を得ることができます。さらに、Substrate[^15] と呼ばれるブロックチェーンを作るためのフレームワークがあります。 Polkadot が束ねるチェーンや Polkadot 自体も Substrate を使って作られます。一つの理想的なブロックチェーンですべての用途を賄うことは現実的ではありません。ブロックチェーンを使う理由はユーザーごとに多様であり、すべてのニーズを満たすガバナンスの構築ないし可用性を維持することが難しいからです。それ故に、今まで900を超えるパブリックブロックチェーンが作られてきました。Polkadot と Substrate は人々が用途に応じてブロックチェーンを作っていく時代にさらに拍車を掛けていくでしょう。私達はこの大きな流れに賭けることにしました。当然、Polkadot においても Plasma は必要不可欠な役割です。故に私達は Plasma を展開する先に Polkadot × Substrate を選択しました。

Plasm Network

Plasm Network archtecture

Plasm Network archtecture

Plasm Network はすべての開発者にスケーラブルな分散アプリケーションの開発メソッドを提供するためのプロジェクトです。私達はこれを上記のアーキテクチャにより実現します。

Plasm Network は Substrate を用いて構築された Layer1 のパブリックブロックチェーンです。その上にスケーラブルな Dapps を乗せるための独自の機能と、OVM のモジュール、そして Plasma アプリケーションに必要なスマートコントラクトの標準実装が搭載されています。また、これは Plasma Defauct Standard Chain として機能する Parachain になることを想定しています。一般に Plasma アプリケーションをデプロイする時のデフォルトチェーンとして Plasma Network を選びます。Plasm Network はランタイムに独自の機能を搭載することで Plasma アプリケーションに新たな可能性と快適なユーザビリティを提供します。また、Plasm Network では革新的なトークン発行アルゴリズムを用いてUser/Developerファーストなトークンエコノミーを設計しています。

それをサポートする形で幾つかの Plasma の ブロックチェーンに乗らない 実装と Plasma as a Service が展開されます。Plasma as a Service は Plasma アプリケーションを簡単にデプロイするための Platform as a Service です。メインチェーンを選んで GUI を通してカスタマイズした子チェーンをデプロイ、管理する機能が提供されています。これらは Cryptoecnomics Lab[^cel] が提供する Plasma Rust Frameworks [^plasma_rust] を利用して実装される予定です。

次の各セクションでそれぞれのサービスについての概要と技術詳細を解説していきます。

Substrate

Substrate はブロックチェーンを開発するためのフレームワークです。これは Parity Technologies とWeb3 Foundation らによって開発されています。Web サイトを作るための Web フレームワークとして Ruby on Rails や Django などがあるように、ブロックチェーンを作るためのフレームワークとして Substrate があります。Subtrate はブロックチェーンを構築するために必要なコアの機能が予め用意しておくことで、ブロックチェーンをゼロからフルスクラッチすることが大変な作業である問題を解決します。Substrate のコア機能にはデータベース、P2P 通信、合意形成アルゴリズム、トランザクションプール、WebAssemblyのExecutorなどブロックチェーンを動かす上で欠かせない様々な要素があります。また、Rust 言語で書かれており、高速、メモリ安全、並列処理、WASMへのコンパイルが容易といった特徴を持ちます。さらに、ブロックチェーンのアップデート時にハードフォークが起こらない、開発目的に応じてプライベート、コンソーシアム、パブリック全てのブロックチェーンを作成可能、将来的には Polkadot との連携により異なるブロックチェーンと相互運用とセキュリティのシェアが可能などのメリットがあります。