現時点では、イーサリアムは 1 秒あたり約 15 件のトランザクションしか処理できません。これが意味するのは、バリデーターはまだ確認されていないトランザクションプールから一連のトランザクションを選択することになり、これらのトランザクションを選択する方法が実際に利益に関係しているということです。したがって、一度に処理できるトランザクションの数には限りがあるため、自分のトランザクションが含まれるように戦わなければなりません。
ご存知のとおり、バリデーターは、トランザクションをブロックに含めると手数料を受け取ります。ここでバリデーターの観点から考えてみましょう。現在、トランザクション プールには 2 つのトランザクションがあり、バリデーターによる取得を待っています。 1 つのトランザクションは 10 ドルを支払いますが、もう 1 つのトランザクションは手数料として 1 ドルしか支払いません。どの取引を選択しますか?
10ドルのやつですよね?なぜなら、このトランザクションをブロックに含めると、手数料として 10 ドルを受け取ることになるからです。
これを簡単に説明しましょう。イーサリアム ネットワークと対話するときは、通常、特定のスマート コントラクトを呼び出します。スマート コントラクトは一連の命令です。それらをプログラムとして考えてください。各命令にはある程度の計算能力が必要です。
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract HelloWorld { string public message; constructor() { message = "Hello World"; } function getMessage() public view returns (string memory) { return message; } function setMessage(string memory newMessage) public { message = newMessage; } }
あなたが
このコントラクトをデプロイすると、最初に呼び出されるのはそのコンストラクターであり、 message
変数を"Hello World"に設定します。これにより、ブロックチェーンの状態が変化します。状態の変更には手数料がかかります。文字列を変数に格納するのに 1 ドルかかると仮定しましょう。
メッセージを別のものに設定したい場合は、たとえば「Kishan の記事へようこそ」とします。コントラクト内でsetMessage()
メソッドを呼び出して、必要なメッセージを渡す必要があります。これには、やはりいくらかの料金が必要になります。状態を変えている。もう一度 1 ドルが必要だったとしましょう。
メッセージが何であるかを確認したい場合はどうすればよいですか? getMessage();
状態は変更されないため、手数料はかかりません。それを説明したところで、議論に戻りましょう。
何らかの理由で、現在トランザクション プール内にあったトランザクションがこのHelloWorld
スマート コントラクトを呼び出し、メッセージをあなたの名前に設定したとします。
ここで、仮にバリデーターがあなたのトランザクションを選択すると、バリデーターはあなたが手数料を 1 ドルに設定していることを確認し、スマート コントラクト自体の呼び出しには 1 ドルかかります。つまり、彼自身は何の見返りも得られなかったのです。すべての料金は、スマート コントラクトとの対話によって使用されました。なぜ彼はそれを拾うのでしょうか?このトランザクションは、バリデーターがそれを処理してチェーンに含めるインセンティブがないため、拒否されます。したがって、バリデーターを誘惑してトランザクションを選択させるために、より高い手数料で再試行する必要があります。
多くのユーザーがイーサリアムで取引している場合、ガス料金は非常に競争力のあるものになる可能性があります。はい、手数料を手動で設定することもできますが、バリデーターは利益となるトランザクションのみを選択するため、確認に時間がかかる可能性があることに注意してください。
取引が時間に敏感な場合(たとえば、できるだけ早く取引を終了したい場合)、清算されるリスクが生じます。このシナリオでは、手数料をできるだけ高く設定するか、数秒以内に取引を確認できる手数料の見積もりを提供するウォレットのいずれかを使用することをお勧めします。なぜなら、ガスを節約するとポートフォリオ全体が台無しになる可能性があるからです。
これらの高額な手数料により、多くの暗号通貨愛好家がイーサリアムでの取引を躊躇しており、この問題に対処するために他にも多くのレイヤー 1 が導入されています。しかし、それらはすべて分散化が欠けているため、誰もが Web3 に移行することになります。
私たちはイーサリアムが提供する分散化とセキュリティを利用したいと考えていますが、同時に、こうした高額な料金で私腹を失うことも望んでいません。
これらの問題に対処する 1 つの方法は、レイヤー 2 スケーリング ソリューションであるロールアップです。
ロールアップは、トランザクションを集約してオフチェーンで処理し、結果をオンチェーンにパブリッシュする方法です。
このオフチェーンとオンチェーンのすべてを理解するのに疑問が生じるかもしれないので、もう少し明確にしましょう。ロールアップは、イーサリアム ブロックチェーンの手数料と混雑を大幅に軽減できるプロセスと考えてください。この仕組みは、トランザクションの大規模なバッチをまとめてロールアップ (集約) し、それらをパラレル チェーンや VM などのオフチェーンに移動することによって行われます。これらのパラレル チェーンは、Arbitrum、 zkSync 、楽観主義など
集計はロールアップ オペレーターと呼ばれるエンティティによって行われ、その主な仕事はさまざまなユーザーからトランザクションを収集し、オフチェーン環境で実行することです。繰り返しになりますが、オフチェーンは、仮想マシン、サイドチェーン、その他のレイヤー 2 プロトコルなど、実装に応じてさまざまな意味を持ちます。
トランザクションを実行すると、正しく実行されたという証拠とともに、集約されたデータ(ロールアップ ブロック)をコールデータとしてイーサリアム チェーンに送信します。ここまでは明らかですが、 calldata とは何ですか?
calldata は、実行されたり状態に影響を与えたりすることなく、イーサリアムに保存できる特別なタイプのデータと考えてください。
ロールアップ オペレーターは、通話データをブロックに含めるためにイーサリアム バリデーターに料金を支払う必要があります。組み込まれたら。ロールアップ オペレータは、ロールアップ コントラクト(次のセクションで説明) を監視し、他のユーザーまたはバリデータからの異議や異議を監視します。紛争があれば、それに応じて対応します。
ロールアップ契約は、ロールアップ オペレーターによって送信された通話データに含まれる取引データと証明を検証する責任があります。これは、ロールアップの状態とロジックを管理するイーサリアム上にデプロイされるスマート コントラクトです。
ロールアップ コントラクトは、ロールアップ オペレーターからトランザクション データとプルーフを呼び出しデータとして受け取り、それらを検証し、ロールアップの状態を更新し、状態の変化に対してイベントを発行します。
これまで学んだことをすべて組み合わせて、例を使用してまとめてみましょう。
ロールアップを使用して友人の Ram に 1 ETH を送信したいとします。
Ram のアドレスとウォレットに送金する金額を指定し、トランザクションに署名します。
その後、トランザクションをロールアップ オペレーターに送信します。ロールアップ オペレーターは、さまざまなユーザーからのトランザクションを集約し、オフチェーン実行環境で実行する責任を負います。
ロールアップ オペレーターは、トランザクションを他のトランザクションといわゆるロールアップ ブロックにバンドルし、それをcalldataとしてイーサリアム チェーンに送信します。その後、ブロックに含めるための料金をバリデーターに支払います。
ここで、ロールアップのタイプに応じて、ロールアップ オペレータはコールデータとともにロールアップ ブロックの有効性の証明または追加のアサーションを提出する必要がある場合があります。
それが完了すると、ロールアップ ブロックはロールアップ コントラクトによって処理されます。ロールアップ コントラクトは、ロールアップの状態とロジックを管理するイーサリアム チェーン上にデプロイされたスマート コントラクトです。コントラクトは証明またはアサーションを検証し、ロールアップ ユーザーの状態を更新し、状態の変化に対してイベントを発行します。
最後に、Ram はロールアップ アカウントであなたから 1 ETH を受け取ります。
楽観的なロールアップは楽観的です。私が言いたいのは、バッチ内のすべてのトランザクションが有効であると想定しているということです。しかし、落とし穴があります。トランザクションが無効であると考えるユーザーまたは検証者が不正防止を提出することで異議を申し立てることができる猶予期間が与えられます。その後、イーサリアムのメインネットがそれを検証し、チャレンジが成功した場合、ロールアップ ブロックは拒否され、不正なオペレーターは重く罰せられます。
猶予期間終了後に異議がなければ、トランザクション バッチはイーサリアムに固定され、トランザクション バッチに含まれる状態変更が確定します。
スケーラビリティが向上し、ガス料金が削減されますが、猶予期間を待つ必要があるため、トランザクションのファイナリティに遅れが生じます。
このレースには主力馬が2頭いる。
zk-rollups について説明した詳細な記事を書きましたので、参照してください。とにかく、それが何であるか、そしてそれがどのように機能するかについて簡単に説明します。
zk ロールアップは、楽観的ロールアップとは異なり、有効であることが証明されるまですべてのトランザクションが無効であると想定します。 「ゼロ知識証明」を使用して、トランザクションの信頼性を検証します。バッチ内のすべてのトランザクションが完了すると、ロールアップ コントラクトが簡単に検証できることの証明とともに、単一のトランザクションがイーサリアムに送信されます。
オプティミスティック ロールアップと比較して安全性が高くなります。猶予期間がないため、暗号証明によって有効性がすでに証明されているため、トランザクションは即座に完了します。ただし、証明を生成するには、それを実装するために多大な計算能力と専門知識が必要です。これにより、オプティミスティック ロールアップと比較して複雑さが増す可能性があります。
出走馬は主に以下の2頭です。
この記事をお読みいただきありがとうございます。
参考文献: