見出し画像

Sei v2 - 初の並列化されたEVMブロックチェーン

この記事は、Seiのブログ「Sei v2 - The First Parallelized EVM Blockchain」(2023年11月29日付)の日本語訳です。もし記事内に不自然が表現を感じられる場合、併せて原文を確認することをお勧めします。本記事では、"Sei"はプロジェクト及びブロックチェーンの名前を指し、"SEI"はSeiにおけるトークンを指します。


さらに詳細なテクニカルノートは、Sei開発者フォーラムのこちらをご覧ください。

この投稿で、Sei Labsは初の並列化EVMである Sei v2へのアップグレードを紹介し、提案します。

Sei v2は、Seiの実績ある利点を活かし、EVM開発者のグローバルな基盤にアクセスできるようにします。これにより、SeiはSolanaとEthereumの長所、つまりEVM周りのツールとマインドシェアの恩恵を受ける超最適化実行レイヤーを獲得することになります。

非技術的な概要

Seiは2023年8月からメインネットのベータ版で稼働しており、この間、グローバルに分散されたノードの集合でこれまで可能と考えられていたことの限界に挑戦してきました:

  • Seiは一貫して390ミリ秒でブロックをファイナライズしており、現存する最速のチェーンとなっています。

  • Seiは一貫して45TPS以上のアクティビティを記録しており、現在稼働中のチェーンとしては1秒あたりの取引成功数が2番目に多いチェーンとなっています[備考1]。

これらはすべて、機能停止や予期せぬネットワークのダウンタイムなしに行われました。これにより、統合型のブロックチェーンはモジュラーチェーンを使用するよりも実質的に優れたパフォーマンスをもたらすという、根本的な技術的な主張が強化されました。

Seiは現在、Rustで記述されたCosmwasmスマートコントラクトを可能にしています。Seiが開発者の関心を集め続ける中、開発者からの最大の要望は、Seiがサポートする実行環境の柔軟性の追加でした。特に、EVMのサポートは多くの開発者にとって最重要課題です。

その結果、Sei v2を提案します。Seiの最初のメジャーアップグレードは、初の完全並列化EVMとなります。このアップグレードにより、Seiは以下の機能を持つことになります:

  • EVMスマートコントラクトの後方互換性 - 開発者はコードを変更することなく、EVM互換ブロックチェーンから監査済みスマートコントラクトをデプロイできます。

  • MetaMaskのような、使い慣れた、広く使われているアプリケーションやツールの再利用性があります。

  • 楽観的な並列化 - 開発者が依存関係を定義することなく、チェーンが並列化をサポートできるようになります。

  • SeiDB - ステートの肥大化を防ぎ、ステートの読み書きのパフォーマンスを向上させ、新しいノードがステートの同期とキャッチアップを容易にするためのストレージレイヤーが改善されます。

  • 既存のチェーンとの相互運用性により、EVMとSeiでサポートされるその他の実行環境とのシームレスな統合が可能になります。

パフォーマンスの観点から、Sei v2は毎秒2万8300件のバッチトランザクションのスループットを提供し、同時に390ミリ秒のブロックタイムとファイナリティを提供します。これにより、Seiは既存のブロックチェーンよりもはるかに多くのユーザーとインタラクティブな体験をサポートすることができ、同時にトランザクションあたりのコストははるかに安くなります。

Seiのメジャーアップグレードは、現在ほぼコード化されています。監査が完了すれば、このアップグレードは2024年第1四半期に公開テストネットでリリースされ、2024年上半期にはメインネットに展開される予定です。

[備考1] この数字はアクティビティを表しており、Seiが処理できるトランザクションの最大しきい値ではありません。

どのように動くのか?

Seiはさまざまなソフトウェアコンポーネントで構成されており、それぞれが互いに連携してブロックチェーンをサポートしています。これらのコンポーネントの中には、コンセンサスレイヤーに関連するものもあれば、実行レイヤーに関連するものもあります。

Sei v2では、実行レイヤーの動作方法を変更し、楽観的な並列化と最適化されたステートの保存をサポートします。さらに、EVMスマートコントラクトをサポートする新しいコンポーネントも作成されます。これらのEVMスマートコントラクトは、コンセンサスと並列化に加えられたすべての変更の恩恵を受け、また既存のCosmwasmスマートコントラクトと相互作用できるようになります。

変更案の概要

後方互換性

Sei v2は、開発者がSei上にデプロイするためにスマートコントラクトを完全に書き直すことを要求するのではなく、後方互換性を念頭に構築されています。つまり、Ethereum上に存在するすべての主要なコントラクトは、コードの変更なしにシームレスにSei上に再デプロイできます[備考2]。

技術的な観点から、Seiチェーンバイナリの一部として、Seiノードは自動的にEthereum仮想マシンのGo実装であるGethをインポートします。Gethはイーサリアムのトランザクションを処理するために使用され、その結果生じる更新(ステートの更新、またはEVMに関連しないコントラクトの起動)は、SeiがEVM用に作成した特別なインターフェイスを使用して行われます。

Core Sei Binaryの一部としてのGethの実装

このアプローチにより、バイトコードの完全な互換性が実現され、Gethで実行できるものはすべてSeiで簡単に処理できるようになります。さらに、SeiのRPCインターフェースはEVMと同じであるため、Ethereumの既存のツールをシームレスに再利用できます。例えば、ユーザーは接続するRPCを切り替えるだけでMetaMaskを使用でき、開発者はFoundry、Remix、Hardhatなどのツールを使用できます。

[備考2] Ethereum レイヤー1とSei v2の最大の違いは、ステートの保存方法です。Ethereumはパトリシア・マークルツリーを使用するのに対し、SeiはIAVLツリーを使用するため、ステート証明が必要なものはすべて書き換える必要があります。

楽観的な並列化

Seiは現在、スマートコントラクト開発者に、スマートコントラクトが使用するステートをオプションで定義することを求めています。このオプションのアプローチは、残念ながら開発者に大きな摩擦をもたらします。

Sei v2では、開発者自身がステートへのアクセスを定義する必要がなくなります。その代わりに、チェーンはすべてのトランザクションを楽観的に並列実行します。競合(同じステートに触れるトランザクション)が発生するたびに、チェーンは各トランザクションがストレージのどの部分に触れているかを追跡する。ストレージの異なる部分に触れているトランザクションは並列に再実行され、同じステートに触れているトランザクションは順次再実行されます。これは、計算しきれない競合がなくなるまで再帰的に続けられます。トランザクションはブロック内で順番に並べられるので、これはチェーンレベルでの並列化を維持しながら開発者のワークフローを楽にする決定論的なプロセスとなります。

楽観的な並列化で競合が発生した場合のトランザクションのライフサイクル

最適化された並列化は、Seiネイティブトランザクション、Cosmwasmトランザクション、EVMトランザクションを含む、Sei上で実行されるすべてのトランザクションに適用されます。技術的な実装の詳細については、こちらをご覧ください。

SeiDB

Seiは現在、非常に非効率的なIAVLツリーデータ構造で構成されたバニラデータベースレイヤーを使用しています。このデータ構造は、そのスキーマと不必要なメタデータのために、ストレージとレイテンシーの両方の観点から非効率的であり、書き込みの増加とディスクアクセスの遅延につながります。

Seiは、異なるユースケースに最適化するために、ストレージインターフェースを再構築しました。Seiは、単一のIAVLツリーを2つのコンポーネントに分割することで、これを実現しました。それらは、ステートストアとステートコミットメント(モチベーション)です。ステートストアレイヤーは、生のキー・バリューペアに対する低レイテンシーの直接アクセスを提供し、RPCノードがクエリにより良く応えるのに役立ちます。履歴データを生のキー・バリューペアとして保存することで、冗長なメタデータのオーバーヘッドを排除し、ディスク使用量を桁違いに削減するのに役立ちます。ステートストアは、クラッシュ時の回復に役立つように、ライトアヘッドログも使用しています。ステートコミットメントレイヤーは、高度に最適化されたインメモリのIAVLツリーを使用しており、データのコミットを担当しています。これにより、ディスクアクセスの量が減るため、バリデーターはより速くコンセンサスに達するのに役立ちます。

この変更に加え、業界をリードする様々なデータベースで厳密なベンチマークが実施され、Sei v2ではGoLevelDBの代わりにPebbleDBを使用する方向に移行し、その結果、マルチスレッドアクセスでの読み取り/書き込み性能が大幅に向上しました。

技術的な実装の詳細については、こちらをご覧ください。

相互運用性

Seiは統合されたチェーンであるため、Seiの異なるコンポーネント(Cosmwasm、EVM、Bank、Staking)に向かうすべてのトランザクションは、相互に通信することができます。これらのトランザクションは目的は異なりますが、最終的にはガス、送信者、トランザクション本体など多くの類似した特徴を持ちます。チェーンがこれらのトランザクションを受信すると、それらはSeiネイティブトランザクションとして処理され、ストレージの適切なセクションに転送されます(例:CosmWasmトランザクションはwasmモジュールに送られ、実行されます)。EVM開発者はネイティブトークンやステーキングなどの他のチェーン機能に簡単にアクセスできます。

仮想マシンとトランザクションタイプの相互作用

パフォーマンス指標

本稿執筆時点で、SeiDBと楽観的な並列化はコードが完成しています。EVMの実装はまだ進行中であり、今後2~3ヶ月でコードが完成する予定です。その結果、Sei v2は2024年初頭のテストネット立ち上げを見込んでいます。

SeiDBと楽観的な並列化の初期性能は以下の通りです。

パフォーマンス指標

これらのテストは、オハイオ、カリフォルニア、フランクフルト、アイルランドに均等に分割された20ノードのクラスタで実行されました。各ノードはAWSの8xlargeで、32コア、64GB RAMを搭載しています。

まとめ

この提案は、Seiが最初の並列化されたEVMから始めて、複数の仮想マシンをサポートし、スーパーチャージするための道筋を概説するものです。

現在、どのEVMチェーン上でも構築されているアプリケーションは、Sei上にデプロイすることで、既存のブロックチェーン上よりもはるかに多くのユーザーとWeb2のようなインタラクティブな体験をサポートできるようになります。

さらに、トランザクションあたりのコストがはるかに安くなり、スループットが向上し、集中化のトレードオフや複雑さ、Ethereumレイヤー2ロールアップの運用にかかるオーバーヘッドを一切受けずに済みます。

このように、SeiはEVMを再びシンプルにしようとしています。

この提案について議論し、投票するためのガバナンス提案が、今後数週間のうちに提起される予定です。

さらに詳しいテクニカルノートは、Sei開発者フォーラムのこちらでご覧いただけます。

この記事が気に入ったらサポートをしてみませんか?