380億円を調達したLayer1、Monadは何がすごいのか?
みなさん、Gmonad💜
この記事では、グローバルに注目を集めている、新しいLayer1ブロックチェーンMonadを解説します。 Monadは高速処理+開発のしやすさを兼ね備えた注目の技術「パラレルEVM」を実装したプロジェクトです。
簡単にいうと、MonadはEthereumとSolanaを融合させた新しいLayer-1であり、開発者にパフォーマンスと完全なEVM互換性という両方の長所を提供します。
技術的に優れた面がある一方でMonadにはもう一つ大きな特徴があり、それがコミュニティ・ファーストであるという点です。コミュニティ活動に非常に重点をおいており、さまざまな形で貢献した人に与えられる数多くのディスコードロールが用意されています。
ロールを獲得したらどうなるのか?はいまいちはっきりしていませんが、Monadの「nads」というロールの所持者はWormholeのエアドロップがもらえるという事例がありました。
記事を書く、Xでスレッドを書く、アートワークを作るなどの他、ディスコードでたくさんコミュニケーションをしたり、ポーカーイベントや腕立て伏せバトルイベント(?!)なんてものまで・・・
2024/6/29にはMonadの日本コミュニティ・ミートアップも開催されます。
コミュニティ活動に興味がある方は、まずはコミュニティが運営している、日本語Xをフォローし、テレグラムにジョインしてみるのがおすすめです。
さて、本記事の内容は、以下の動画を抽出したものになっていますので、より深くMonadを理解したい方は、動画をぜひご覧ください。
Monadってなに?
Monadの特徴を簡単にまとめると、以下のようになります。
- パイプライン化・非同期インプット/アウトプットをコンセンプトとし、ハイスループットおよびノード間コミュニケーションの効率化を図っているLayer1ブロックチェーンである
- EVMと完全な互換性を持っており、10,000 TPS、ファイナリティ1秒を標榜している。現在のテストネットでは10,000TPSを実現しており、最終的な目標は400,000TPSである
- Asynchronous execution(非同期実行)、Parallel execution(並列実行)、MonadDBという技術
によりこれらの目標を実現する - ハードウェアに必要なのは32GB RAMで、ノードとして参画しやすい要件になっている
- 現在までに約380億円を資金調達している。前回のラウンドのリードはParadigm、評価額は4500億円である
Monadの共同創業者であるKeone Hon氏の最新の講演も参考になるかもしれません(全編英語です)
イーサリアムにおけるスケーラビリティの課題
イーサリアムは、昨今の利用者数の増加に伴い、トランザクション数が増え、簡単にいうと「ネットワークが詰まる」という状態になっています。このような状態だと、ネットワークの利用者は、低い手数料でトランザクションが承認されるのを待つか、高い手数料を払うことになります。
2024年3月13日を例にあげると、1日で消費されたガスは42億円にものぼります。
このような状況ではブロックチェーンのマスアダプションには程遠く、安くて早いブロックチェーンが求められており、これまでも様々なブロックチェーンが生まれてきています。ひとたびEVMを離れれば高性能なチェーンというのは多くありますが、Monadは開発者にとって構築がしやすいEVM環境下で、かつ高性能なチェーンを構築しています。
現在のブロックチェーンパフォーマンスにおけるボトルネック
では現在のブロックチェーンのパフォーマンスでボトルネックになっているのは何か、について説明をします。
ここで、ブロックチェーンの機能と構成は、主に4つのフェーズに分けられるということを補足しておく必要があります。
実行(Execution):トランザクションの状態の変更の処理
決済(Settlement):証明検証と紛争解決、ブリッジハブ及び流動
性の提供合意形成(Consensus):トランザクションの順序に関する共通の合
意を確立するプロセスデータ可用性(Data Availablity):状態遷移の有効性の検証に
必要なデータの保存・公開がなされ、データが利用可能かの確認を行う
イーサリアムにおいて、現在Execution(トランザクションの実行)には1.25M gas/秒という制限があります。その理由は、
- 記憶領域(ハードディスクやメモリ)へのアクセスが効率的でない
- 処理方法がシングルスレッド(要は1つのCPUしかないような状態)
- Consensusに時間がかかるため、Executionにあてられる時間が限られている
- ステート(取引の状態)へのアクセスコスト増加の懸念がある
といったものが挙げられます。
Monad はこういった問題に対して 、 Asynchronous execution 、 Parallel execution 、MonadDBというアプローチを用いて、解決します。
Asynchronous execution(非同期実行)
イーサリアムの場合、ブロックタイムは約12秒ですが、そのうちExecutionに割り当てられるのは、わずか0.1秒です。これは、Consensusにかかる処理がリードタイムとなっており、ブロックタイムの大部分を占めるからです。
そこでMonadでは処理の流れをパイプライン化し、ConsensusとExecutionの順番を入れ替えることで高性能化を実現しています。
順番に見ていきます。
まず、パイプライン化とは、並列処理可能な状態にタスクを分割し、並列処理を実装する手法のことです。
洗濯物を例に挙げると、洗濯・乾燥・たたむ・保管という4つの作業に分割できます。パイプライン化されているというのは、洗濯が終わり乾燥に入る段階で、次の洗濯を開始できるという状態のことで、作業の効率化が可能になります。
これをブロックチェーンに当てはめようと考えると、最初のExecutionが終わったら次のExecutionを実行して・・・、ということになります。が、Monadはもう一工夫加えています。
MonadではExecutionとConsensusの順番を入れ替えているのです。ExecutionとConsensusの順番を入れ替え、さらに作業をパイプライン化したことで、Executionにかける時間を伸ばせます。Executionにかける時間が伸ばせるということは、処理できる情報が増えるということなので、チェーンの性能は飛躍的に向上することになります。
Parallel Execution(並列実行)
並列実行とは簡単にいうと、複数のトランザクションを同時に処理するということです。
しかし同時に処理すると矛盾が生じることがあります。例えばAさんが100ドル持っていて、Bさんに100ドル送ると同時にCさんにも100ドル送るとどうなる?!ということです。
そこで「Optimistic Parallel Execution」を導入します。
- 先ず、トランザクションを並列に実行し、入力とその結果を保留とする
- その後、因果関係のあるトランザクションを調べる
- 修正が必要なトランザクションに関して、再度実行する
つまり、「いったん処理して問題があった時だけ見直そう」という仕組みです。この時、トランザクション実行に必要なステートはメモリ内に保存されているため、このようなやり直しの処理も非常に高速にできるようになっています。
Monad DB(Parallel State Access)
Monadは前述の通り、並列にトランザクションを処理するため、そのトランザクションの処理が終わる前に、別のトランザクションのために必要なデータを読み込んでおかないといけません。たくさんのデータに高速でアクセスする必要があるということです。
ここで、イーサリアムのデータ構造は、容量を減らすためにツリー構造をしています(マークルパトリシアツリーと呼ばれる)が、ツリー構造をしたデータにアクセスするのに何度も読み込みをしなければならず、時間がかかるという問題があります。
MonadDBは、マークルパトリシアツリーをメモリおよびSSDにネイティブ
に保存することを可能としたカスタムステートデータベースです。クライアントは何度も連続で読み込みを行う必要が無くなります。
また、非同期インプット/アウトプットを採用しているため、Parallel State Access(直訳すると並列にステートにアクセスする)が可能となっているのです。
おわりに
Monadは高性能EVM Layer1で、非同期処理・並列処理を実装することで、高スループットを実現しました。また、MonadDBによりノードに要求されるスペックを低く抑えることもでき、誰でもノードを走らせることができます。
さて最後にMonadがなぜ10,000TPS(1秒間あたり10,000のトランザクションを処理できる)という数字を掲げているか、理由を紹介して終わろうと思います。
1億人のユーザーが1日に10回のトランザクションを実行するとすると、
1億 × 10回/日 ÷ 24時間 ÷ 3600秒 ≒ 10,000 回/秒
Monadはこのように、ブロックチェーンがマスアダプションされた未来において必要不可欠なインフラを提供しようとしているのです。Monadに興味が出てきたという方は、ぜひSNSなどで情報を追ってみてください。
Monadソーシャルリンク
Webサイト:https://www.monad.xyz/
Discord:https://discord.com/invite/monad
Monad日本コミュニティソーシャルリンク
テレグラム:https://x.com/japanads_