ポピュラーサイエンス | DeFi スループットの拡大: レイヤー 1 の記事
編集者注: この記事は以下から引用しましたイーサリアム愛好家 (ID: ethfans)編集者注: この記事は以下から引用しました
イーサリアム愛好家 (ID: ethfans)
、著者: Remco Bloemen、翻訳者および校正者: Min Min & A Jian、許可を得て Odaily によって複製されました。
最近 DeFi を使用したことがある場合は、最近の取引手数料の高騰にびっくりするでしょう。現在、イーサリアム取引では数十ドル、さらには数百ドルの取引手数料がかかることも珍しくありません。これほど高額な手数料では、「銀行口座を持たない人々が銀行サービスを利用できるようにする」「許可不要の金融インフラをすべての人に利益をもたらす」という壮大な計画は言うまでもなく、巨大なクジラだけが利益を得ることができます。イーサリアムは富裕層のための場所になりつつあります。
画像の説明
~少額取引の場合、手数料が取引金額の10%を超える場合もございます~
私たちは、すべての価値が自由に流れることができるトークン化された世界を作りたいと考えていますが、ブロックチェーンの制限がこのビジョンの実現を妨げます。そのため、0x Labs はこれらの制限に対するソリューションを開発するために、研究エンジニアの専任チームを編成しました。この記事では、イーサリアムの制限とDeFiユーザーへの影響について探ります。次世代のブロックチェーンについても簡単に紹介します。フォローアップ記事では、別のクラスのソリューション (レイヤー 2) を検討し、DeFi のニーズに対処するための独自の戦略を紹介します。
まず第一に、イーサリアムトランザクションのサイズはガス消費量によって測定されることを知ることが重要です。トランザクションはブロックにパッケージ化され、ブロックは約 13 秒ごとに生成されます。 「ブロックガス制限」と呼ばれるもののため、各ブロックは限られた数のトランザクションしか保持できません。現在、各ブロックのガス制限は 1,200 万です。通常のERC20トークントランザクションでは約50,000Gasを消費する必要があります。これは、1 つのブロックが最大 240 回のトークン転送操作に対応できること、つまり 1 秒あたり約 18 回のトランザクションを完了できることを意味します。 DeFi トランザクションには、簿記操作など複数のトークンの転送が含まれることが多く、コストが 2 倍になり、スループットがさらに制限される可能性があります。ガス容量とブロック時間は、トランザクションに利用できるガスが安定して流れていることを意味します。
まず、イーサリアムの誕生以来のガスの供給と使用量の増加を見てみましょう。
ガス使用量
毎日、約 6,000 ブロックがイーサリアムに追加され、数十億のガス取引に対応します。この量は、主にブロックガスキャップの増加により、時間の経過とともに常に変化し増加しています。同時に、イーサリアム上のトランザクションの数と規模が増加し続けるにつれて、トランザクションによって消費されるGasの総量も増加しています。
イーサリアムの開発の歴史全体を振り返ると、Gasの供給(灰色の部分)と消費(黒色の部分)は次の図のようになります。
画像の説明
グラフが示すように、ビザンチウム、コンスタンティノープル、ミュア氷河のハードフォークの前に、ガス供給はギザギザの落ち込みを見せました。これらは、氷河期としても知られるイーサリアムの難易度爆弾の影響です。氷河期の間、ブロックの生成時間は指数関数的に増加し、その結果、1 日に採掘されるブロックの数が減少し、1 日の総ガス供給量が減少します。もちろん、この状況は非常に悪いため、イーサリアム ネットワークはハード フォークを使用してネットワークを復元する必要があります。それがディフィシティボムの目的であり、イノベーションが停滞しないように改善を導入することを目的としています。コンスタンティノープルのハードフォークがディフィシティボムのリセットを忘れたため、イーサリアムはすぐにミュア氷河のハードフォークを導入しました。その後のベルリンのハードフォークでは、このメカニズムの変更が検討されています (EIP 2515)。
図の黒い部分のGas使用量を見ると、2017年のICOブーム以降、イーサリアムのGas使用量がGas上限の60%以上を占めていることが分かります。それ以来、いくつかのジャンプを経てガス限界は 4 倍になりました。ジャンプするたびに、ガスの使用量もそれに応じて増加します。過去数か月間、イーサリアムのガス使用量はガス制限の 95% で止まっているようです。
イーサリアムのガス利用率が 95% を超えられない理由を理解するには、まず空ブロックとアンクルブロックを理解する必要があります。
副題
空ブロックとおじさんブロック
イーサリアムの開発の歴史を通じて、たとえ供給が需要を上回ったとしても、イーサリアムのGas使用量はGas上限の95%を超えたことはありません。驚くべきことに、残りの 5% のガスは空のブロックで無駄になります。空のブロックは定期的に発生し、約 20 ブロックごとに空のブロックが存在します。含まれるのを待っている有料トランザクションがあるのに、なぜ空のブロックをマイニングするのでしょうか?データを見てみましょう:
空のブロック率は時間の経過とともに着実に増加し、現在は約 5% です。すべてのマイニング プールには空のブロックがあるため、悪意はありません。本当の問題は、ブロックレートが速すぎることです。ブロックのマイニングにかかる時間が 6 秒未満の場合、ブロックが空になる確率は指数関数的に増加します。
説明の 1 つは、マイナーが新しいブロックのヘッダーを受信したが、まだブロック全体を処理していないときに次のブロックのマイニングを開始するということです。これは、ビットコインでは「Simple Payment Verification (SPV)」マイニングと呼ばれており、マイナーはすぐに次のブロックのマイニングを開始できますが、空のブロックのみがマイニングされます。新しいブロックが処理されると、マイナーは次のブロックのパッケージ化とマイニングを開始できます。この説明を裏付けるもう 1 つの証拠は、同じマイナーが 2 つのブロックを連続してマイニングすると、空のブロック率が 25% 減少するということです。
ブロックを空にすることに加えて、新しいブロックを処理しながら (新しい採掘可能なスロットを掘るのではなく) 前のブロックの採掘を続ける別の方法もあります。これにより、複数の新しいブロックがマイニングされる可能性があります。これがイーサリアムで起こった場合、ネットワークは有効なブロックを選択し、他のブロックをアンクルとして扱うでしょう。アンクルブロックを掘り出すマイナーは同じブロック報酬を受け取ります。アンクルブロック率は非常に安定しています:
2018 年にガス使用量がピークに達したとき、おじさんのブロック率もピークに達しました (現在は安定した 5% まで低下しています)。その間、おそらくマイナーが戦略を変更したため、空のブロック率も増加しました。
空ブロック率、おじさんブロック率を下げる方法はいくつかあります。空ブロック率とアンクルブロック率が高い根本原因は、ネットワークやブロック処理の遅延によりマイニングプールが最新のステータスを取得できないことであると考えられます。シンプルな (しかし望ましくない) アプローチは、マイニング プールをより集中化し、最新の状態を 1 か所にまとめることです。より分散化されたソリューションは、bloxroute を使用してマイニング プール間に専用の相互接続チャネルを作成することです。 「スパイ マイニング」にヒントを得たもう 1 つのソリューションは、マイニング プールがマイニングしているブロックを事前に共有することです。他のマイニング プールは、マイニング中のブロックごとに次のブロックを準備でき、特定のマイニング プールがブロックの掘り出しに成功すると、他のマイニング プールは次にどのブロックをマイニングするかを認識し、すぐに切り替えます。より高いレベルでは、ノードの通信プロトコルと処理アルゴリズムを改善することも役立ち、おそらく何らかの利点をもたらす可能性があります。ただし、これまで見てきたように、アンクル ブロック レートとエンプティ ブロック レートを減らすと、1 日あたりのガス供給量が最大 5% 程度増加する可能性があります。
ガソリン価格
このことから、ガスキャップはガス供給量の 95% です。それでは、人々のガス需要がこの上限を超えた場合はどうなるでしょうか?
副題
ガソリン価格
イーサリアムユーザーからのガス需要が上限に近づくとどうなるでしょうか?マイナーは希望に応じて含めるトランザクションを選択できます (詳細は以下を参照)。しかし実際には、採掘者は高いガス価格での取引を優先するでしょう。これにより利益が最大化され、最終的にはガスの最高価格オークションが引き起こされるからです。
ガス価格は供給の非弾力性の好例となっている。イーサリアムネットワーク上のGas利用率が80%を超え、上限の95%に近づくと、Gasの価格が急激に上昇します。需要の増加は、ユーザーがガスを買えなくなるまで、ガスの価格を上昇させるだけです。ガスの価格を下げる唯一の方法は、ガスの供給を増やすか、ガスの需要を減らすことです。最近のガス制限の引き上げは、ガス価格を効果的に引き下げるには十分ではありません。
図のデータは、次のブロックに含めるために支払う必要がある最低価格を表します。もう少し待てばガソリン代はもっと安くなりますよ。最近の過去のデータから判断すると、2分以上待っていただければガソリン価格は下がります。 EIP 1559 は、保険料を削減しながらトランザクションの処理を高速化するのに役立ちます。
ガス制限
副題
マイニング プールによってブロックのガス制限が決まります。マイナーとプールがどのように動作するかを簡単に要約することから始めましょう。ほとんどすべてのマイナーは、自分の計算能力の起源を他のマイナーの計算能力とプールすることを選択します。彼らは、長期間収入がないリスクを冒して一人で採掘するのではなく、リソースをプールして安定した収入を得るでしょう。したがって、各マイナーの貢献を検証し、次のブロックのマイニング タスクを割り当てる責任を負うマイニング プールが登場しました。ほとんどのブロックは大規模なマイニング プールでマイニングされます。以下の図は、イーサリアムの誕生以来、マイニング プールによって生成されたブロックの割合を示しています。
上の図からわかるように、ブロック生成の割合では、Spark Pool、Ethermine、および F2Pool が大きく上回っています。
マイニングプール運営者は、ハードフォークに参加することに加えて、イーサリアムのガス制限を設定するという重要なガバナンス責任も負っています。ブロック時間やガス価格などの特性とは異なり、各ブロックのガス上限を積極的に設定する必要があります。新しいブロックと前のブロックのガス制限の差は 0.1% 以内である必要があるため、各ブロックのサイズはわずかに変動するだけです (黄色い紙: 式 47 を参照)。マイニングプールの運営者が合意に達した場合、ガス制限を大幅に調整することができます。2.5 時間以内に、ガス制限を 2 倍または半分にすることができます。コンセンサスがない場合、ガス制限はマイニング プール サイズの加重中央値になります。
現在、マイナーの実際の行動に関する詳細な情報が不足しているため、私たちは投票システムというより単純なアプローチを採用しています。将来的には、ソフト フォークを通じてこのアプローチをより正確なアルゴリズムに変換できるようになることを願っています。
- イーサリアムの基本的な設計原則 (2015 年 3 月)
文章
画像の説明
最近、世界最大のイーサリアム マイニング プールのうち 2 つが、毎日のガス生産量を 25% 増加するという物議を醸す決定を下しました。この動きの目的は、ガス供給量を増やすことで過度に高額な取引手数料を抑制することです。これまでのところ、ガス制限をどのように引き上げても、ユーザーのトランザクション需要の成長率に追いつくことができないことがわかっています。これは、ガス価格が短期的に下落した後、最終的には再び上昇することを意味します。
ガス制限を増やすと、イーサリアムに多額の隠れたセキュリティコストが発生します。ご覧のとおり、ガス制限を増やすと、おじさんブロックと空ブロックの割合が増加します。通常のトランザクション負荷の場合、この影響は重大ではありません。ただし、セキュリティ上の理由から、通常のケースではなく、極端なケースのみに関心があります。 Perez and Livshits (2019) の研究によると、最悪の場合、処理効率が極端に低いトランザクションのバッチが生成された場合 (そのようなトランザクションの処理速度は、同じ Gas コストの通常のトランザクションの 100 倍遅い)、それをブロックに詰め込むと、ノードはこのブロックを処理するのに 90 秒かかるため、ノードが遅れ、マイニング プールが大量の空のブロックとアンクル ブロックを掘り出します。この研究の発表以来、いくつかの緩和策が明らかになりましたが、問題は完全には解決されていません。したがって、ガス制限を引き上げるという決定は、主要なノード開発者の 2 人、Péter Szilágyi と Alexey Akhunov によって批判されました。
文章
つまり、ガソリンの上限に達するとガソリンの価格は上がりますが、これ以上ガソリンの上限を引き上げる必要はないようです。では、他に何ができるでしょうか?取引に必要なガス代を削減できますか?
副題
ガス消費量
トランザクションのガス消費量は、基本的にその EVM 操作の消費量です。トランザクションは多くの基本的な EVM 操作で構成され、各操作のガス消費量は EIP とハード フォークによって制御されます。過去のハード フォークでは、主要な操作のガス消費量が増加し (EIP 150、160、1884)、減少しました (EIP 1108、2028、2200)。計画されている「ベルリン」ハードフォークでは、いくつかのガス消費量の変更 (EIP 1380、1559、2046、2565、2537) の導入も検討されています。
これは、ストレージが依然として DeFi コストの大きな部分を占めることを意味します。新しい残高の作成には 20,000 ガスの費用がかかり、既存の残高の変更には 5,000 ガスの費用がかかります。送金には少なくとも 2 か月、取引所には少なくとも 4 か月の変更が必要です。より複雑な DeFi トランザクションには、より高価な状態の操作が含まれます。関連するストレージの量とコストを削減するのは実際には簡単ではないようで、この傾向を引き戻すことはできません。しかし、良いニュースは、レイヤー 2 スケーリング ソリューションは、ストレージ集約型かつコンピューティング集約型になるよう努めており、その方が見た目も快適になるということです。
最後に、ブロックのガス制限を増やすことにはセキュリティ上の懸念もあります。ガス制限を増やすことは効果的な方法の中で最悪です。現在の実際の操作の平均コストに純粋に基づいてガス消費量を変更することも非常に危険です (現在の実際の操作の平均コストに合わせてガス コストを単純に最適化することは非常に危険です)。
ここまでで、なぜイーサリアムのスケーリングが難しい問題であるかは明らかになっただろう。あなたが提案した解決策について議論する前に、DeFi ユーザーに損害を与える可能性があるイーサリアムの現在の欠点について議論したいと思います。
副題
マイナーは価値を抽出できる
ブロックプロデューサーはコンセンサスルールによって制約を受けますが、コンセンサスルールはトランザクションの選択や順序付けなど、いくつかの重要な自由も提供します。一般的なトークンの送金では、生産者の自由は大きな影響を与えませんが、取引所取引などのDeFi取引では、フロントランニング(チェーン上の取引を先制して利用するために、より高いガス価格の取引を送信することを指します)により、莫大な経済価値が得られる可能性があります。 。さらに問題を複雑にしているのは、ターゲット トランザクションが 2 つのトランザクションの間に挟まれていることです。 Daian et al. (2019) は、フロントランニング トランザクションから取得できる価値をマイナー抽出可能価値と呼んでいます。
一方で、価格情報送信メカニズムが情報を更新した後に最初にポジションを清算するなど、別のトランザクションの直後にチェーン上に自分のトランザクションを保持することも価値がある場合があります。これをバックランニングといい、最終的には鉱山労働者の収入となります。
マイナーが抽出できる価値は、最終的には一般の DeFi ユーザーから得られ、スプレッドの拡大、価格の悪化、手数料の上昇、取引の失敗の増加という形で現れます。より良い DeFi エクスペリエンスを得るには、この問題を解決する必要があります。解決策の 1 つは、ブロック内のトランザクションをガス価格に基づいて低価格から高価格の順に注文することを要求するなど、トランザクションの注文の自由を制限することです。
現在、私たちはイーサリアムの限界とDeFiへの影響について包括的に理解しています。もちろん、優れたチームはすべてソリューションを開発していますよね?
副題
1 つのレイヤー 1、2 つのビジョン
現在、多くの優れたチームがさまざまなスケーラビリティ ソリューションに取り組んでいます。このソリューションには主に「Layer-1」と「Layer-2」の 2 つの方向性があります。レイヤ 1 ソリューションは、現在のイーサリアムに代わるよりスケーラブルなブロックチェーンを作成することであり、レイヤ 2 ソリューションは、現在のイーサリアムに基づいたよりスケーラブルなインフラストラクチャへのアクセスを試みることです。ここではレイヤー 1 について説明し、レイヤー 2 のソリューションについては次の記事に譲ります。

最も明白なことから始めます。それは、現在のイーサリアム ブロックチェーンのパフォーマンスの向上です。それが「Eth1.x」の同僚たちがやっていることだ。イーサリアム クライアントのパフォーマンスを向上させるという観点だけでも、できることはたくさんあります。ただし、Eth1.x は十分なサポートを受けていないため、進歩が遅れています。この方向でどの程度のパフォーマンス向上が達成できるかについての基本的なアイデアを知りたい場合は、Solana について知るだけで十分です。Solana はイーサリアムの 1000 倍のスループットを達成しており、まだ改善の余地があります。欠点は、フルノードを実行するには非常に高度なハードウェアが必要なことです。
他のソリューションのほとんどには、(1) 仮想マシンとしての WebAssembly の使用、(2) 最小限の状態のアーキテクチャ、そして最も重要な (3) シャーディングという 3 つの共通点があります。現在のイーサリアムはすべてのトランザクションをシリアルに実行します。実際、トランザクションをキューに登録できるようにすることが、おそらくブロックチェーンの重要な点です。ただし、このモデルの欠点は、トランザクションを並行して実行することが難しいため、より多くのリソースを直接投資してもスケーリングの問題を解決できないことです。そして、ブロックチェーンを緩やかに相互接続された複数のフィールドに分割し、スレッドを「シャード」と呼び、並列処理を実現します。シャード内ではトランザクションは引き続き連続的に発生しますが、異なるシャード内のトランザクションは段階的に発生します。これにより、すべてのシャードが並行して実行できるようになり、ネットワークのスループットがシャード数の倍数に拡張されます。ネットワークを分割するために使用するドメインはシャードと 1 対 1 に対応している必要はなく、複数のドメインを同じシャード (スレッド) に割り当てたり、負荷分散のために移動したりすることもできます。シャーディング全般についてより深く理解するには、Near Protocol の「Night Shadow」プロトコル ホワイト ペーパーを参照してください。
チェーンの 2 つのアイテムは、スペクトルの両端を表します。 DFinity はきめ細かい端にあり、各「アクター」が独自のドメインを持ち、各アクター間の対話は非同期です。各コントラクトが独自のドメインを持つ、わずかに大きな Near Protocol。粒度の粗い端にあるのが PolkaDot です。ドメインはシャード全体であり、より具体的には「並列チェーン」と呼ぶべきです。 dApp 開発者の観点から見ると、イーサリアム 2.0 がどのようになるかを判断するのは時期尚早です。 ETH1 EE (実行環境) は粗粒度である必要があり、その境界は現在のイーサリアム (つまり、Eth2 実現後の Eth1 の将来) によって形成されるシャードの境界とまったく同じです。専用の Eth2EE では、よりきめ細かいアプローチを選択する場合があります。詳細なスキームの長所は透過的であることです。シャード境界を越えているかどうかに関係なく、すべてのクロスコントラクト呼び出しを同等に扱うことができます。これにより、シャード間でコントラクトを移動することで負荷分散が可能になります。
しかし、DeFi アプリケーションの場合、非同期 transferFrom 呼び出しはかなりの課題をもたらします。アリスとボブが Eth と Dai を交換したいという 2 つの当事者間の単純な交換を想像してください。基本的な契約は次のようになります。
しかし、今度はエラーを処理できるようにする必要があります。最初のトランザクションが失敗した場合は、トランザクションを中止するだけで済みます。ただし、最初のトランザクションが成功し、2 番目のトランザクションが失敗した場合は、アリスに ETH を返せる必要があります。問題は、ボブがエラーに対処する前にお金を使ってしまった可能性があることです。これを回避する方法の 1 つはエスクローを使用することです。
素晴らしい、これで誰もコインを失うことはなくなりました。しかし現在、ボブはアリスの入札に対して無料の独占オプションを持っています。アリスのお金は管理者によって保管されていますが、そのお金は他の人の取引リクエストを受け入れることも、ボブとの取引が成功することを保証することもできません。この問題は、悪意のある行為を罰することで解決できますが、DeFi 取引ごとに価値が大きく異なるため、適切な罰を決定するのは困難です。すべての市場参加者に最初から同じ貯蓄契約(カストディアン)に資金を預けるよう要求することもできますが、それは国家を再集中化し、シャーディングのポイントを無効にすることになります。
もう 1 つ注意すべき点は、これらの同時実行の問題は扱いにくい場合があるということです。実際の取引では、注文の約定状態を継続的に更新する必要があるため、記述がより複雑になります。イーサリアム 1.0 を悩ませた再入性のバグが、潜在的に大きな影響をもたらす蝶であるとすれば、同時実行性の問題は、どこにでも侵入できる潜在的なバグです。同時実行性のバグは非決定的であり、テストではまったく現れない可能性があります。上記の単純な交換の例で見たように、開発者はトコジラミのようにアーキテクチャ全体をゼロから再考する必要があります。それらを取り除く唯一の方法は、すべてを引き下げて最初から再構築することです。
取引所は残りの DeFi 世界の基礎であり、明らかに継続的なプロセスです。オーダーブックタイプの取引所がどのような課題に直面しているかはすでに見てきました。自動マーケットメーカー取引所は、参加者がすでに資金をカストディアン(コントラクト)に保管しているため、より簡単ですが、このシナリオでは準備金残高自体が並行処理を妨げます。より高速な従来の取引所であっても、決済アクティビティは最終的にマッチング エンジンで順次処理され、同時実行性は使用されません (ただし、従来の取引所でも冗長性を確保できる方が良いです)。従来の取引所がどのように機能するかを詳しく知りたい場合は、Brian Nigito の講演をご覧ください。
文章
参考文献
Daniel Perez & Benjamin Livshits (2019). “Broken Metre: Attacking Resource Metering in EVM.”
Daian et al. (2019). “Flash Boys 2.0: Frontrunning, Transaction Reordering, and Consensus Instability in Decentralized Exchanges.”
Brian Nigito (2017). “How to Build an Exchange.”
Danny Ryan (2020). “The State of Eth2, June 2020.”
Scott Shapiro & William Villanueva (2020). “ETH 2 Phase 2 WIKI.”


