
著者:decentralised.co出典:x、@ecentralisedco翻訳:Shan Ouba、ビットチェーンビジョンレルム
取引の拡大は、常に業界でホットな話題でした。過去数週間で、Monadがトランザクション処理速度(TPS)の改善にどのように役立つかを調査してきました。この記事では、Monadの運用原則を詳細に説明しています。
TPSは、私たちが常に注意を払ってきた尺度の尺度です。ブロックチェーンがより高いTPSをサポートして、より多くのユーザーとアプリケーションに対応できることを願っています。以下の図は、イーサリアムとL2のTPS数を示しています。これまでのところ、100 TPSマークを超えたチェーンはありません。TPSはスケーラビリティを測定するための一般的な用語であることに注意する必要があります。すべてのトランザクションが同じではないため、単純なTPSデータは十分に正確ではありません。しかし、利便性のために、私たちはまだTPSをスケーラビリティを測定する指標と見なしています。
>
TPSを改善する方法は何ですか?
1つの方法は、Solanaのようなゼロから新しいシステムを構築することです。ソラナは、速度のためにEVMとの互換性を犠牲にしました。単一のスレッド実行(アナログマルチコアCPUおよびシングルコアCPUを使用できます)の代わりにマルチスレッド実行を使用し、並行してトランザクションを処理し、異なるコンセンサスメカニズムを使用します。
2番目の方法は、中央のソルターを実行および使用して、チェーンでイーサリアムを拡張することです。
3番目の方法は、EVMを個別のコンポーネントに分解し、スケーラビリティを向上させるために最適化することです。
Monadは、既存のバージョンを直接使用するのではなく、新しく調達したEVMをゼロから構築することを選択した、新しく昇格したEVM互換のL1ブロックチェーンです。Monadは、3番目の方法を使用してスケーラビリティを向上させます。
以下では、Monadによって導入されたいくつかの大きな変更について説明します。
並列実行
Ethereum Virtual Machine(EVM)シリアル実行トランザクション。以前のトランザクションの実行が完了する前に、次のトランザクションを待つ必要があります。例:オートバイアセンブリウェアハウスのプラットフォームを想像してください。ほとんどのトラックはオートバイ部品に輸送されます(各トラックには、50個のオートバイを作るために必要なすべての部品が装備されています)。アセンブリウェアハウスには4つの異なる機能があり、各関数は、分類、分類、組み立て、ロードの原因となります。
>
現在のEVM設定には、商品の積み下ろしに使用されるプラットフォームは1つだけです。したがって、トラックが停止すると、オートバイの部品がアンインストール、分類、組み立て、同じトラックに積み込まれます。分類チームが機能するとき、他のチームが待っています。したがって、仕事が異なるスロットと見なされている場合、各チームは4つのスロットごとに1回だけ動作します。これにより、深刻な効率が発生し、より単純化された方法が強調されています。
今、私は独立した荷重と荷降ろし領域を備えた4つのプラットフォームを想像しています。アンインストールされていないチームが一度に1つのトラックにしか取引できない場合でも、次の3つのスロットが機能するのを待つ必要はありません。彼らは次のトラックに直接移動して作業を開始できます。
同じことが、分類、アセンブリ、ロードチームにも当てはまります。トラックがアンインストールされると、積み込みエリアに運転し、積み込みチームが組み立てられたバイクをロードするのを待ちます。したがって、1つのプラットフォームとロードエリアの倉庫のみがすべての操作を順番に実行しますが、4つのプラットフォームと異なる荷重エリアを備えた倉庫は並行してタスクを処理できます。
>
Monadは、複数のトラックプラットフォームを備えた倉庫インフラストラクチャと見なすことができますが、この例よりもはるかに複雑です。トラック間に依存性があると、複雑さが増加します。たとえば、50のオートバイを製造せずにすべての部品をトラックで作成する必要がある場合はどうなりますか?トランザクションは常に独立しているとは限りません。したがって、Monadが並行して実行される場合、相互に依存するトランザクションを処理する必要があります。
これを行う方法は?楽観的で並行して実行される操作を実行します。契約は、独立したトランザクションのみを並行して実行できます。たとえば、ジョエルのバランスが1 ETHである4つのトランザクションを考慮してください。
-
ジョーは0.2 ETHをサウラブに送ります。
-
SID(SID)はNFTをキャストします。
-
Jorは0.1 ETHを西ドイツに送ります。
-
Shlok(Shlok)Pepeを購入します。
これらのトランザクションはすべて並行して実行され、これらの結果が1つずつ提出されます。処理される出力がトランザクションの元の入力と矛盾している場合、トランザクションは再実行されます。トランザクション2と4は互いに独立しているため、治療することは他のトランザクションの入力と矛盾しません。しかし、1と4は独立していません。
4つのトランザクションはすべて同じ初期状態から始まるため(Joel Balanceは1 ETH)、Joelのバランスがここで懸念されることに注意してください。0.2 ETHを送信した後、ジョエルのバランスは0.8 ETHになります。0.1 ETHを西ドイツに送った後、彼のバランスは0.9 ETHになりました。結果は、出力が入力と競合しないことを確認するために1つずつ送信されます。1の結果を提出した後、JoerのNew Balanceは0.8 ETHになりました。
この出力は、3の入力と競合します。したがって、今すぐ0.8 ETH入力を使用して3を再実行します。3を実行した後、ジョエルのバランスは0.7 ETHになりました。
MonaddB
>
この時点で、明らかな問題は、ほとんどのトランザクションを再実行する必要がないことをどのようにして知ることができますか?答えは、再解剖はボトルネックではないということです。ボトルネックは、イーサリアムの記憶にアクセスすることです。Ethereumは、アクセスステータスを困難にするデータベースに状態を保存していることがわかります(時間を消費して高価)。これは、Monadが改善された別の場所です-monaddb。Monadは、読み取り操作に関連する費用を削減するためにデータベースを構築します。
トランザクションを再実行する必要がある場合、すべての入力がキャッシュメモリを遅くしているため、キャッシュメモリのアクセスははるかに高速です。
Solanaはテストネットワークに50,000 TPSを持っていますが、メインネットワークでは約1,000 TPSしかありません。Monadは、内部テストネットワークで10,000の実際のTPが達成されたと主張しています。これは常に実際のパフォーマンスを表しているわけではありませんが、実際のアプリケーションでMonadのパフォーマンスを見るのが待ちきれません。