なぜイーサリアムのガス代が突然大幅に下がったのか?
この記事は律動Blockbeatsに掲載され、著者:0x88。
前言:4月25日、データによるとイーサリアムのガス代が約50gwei下落し、2021年以来の新低となりました。以前はガス代が高騰し、オンチェーン手数料が一時1500gweiに迫ることもありました。しかし最近、イーサリアムのガス代が急落した理由は、イーサリアムがブロックのガスリミットを引き上げたことに関連している可能性があります。4月22日、イーサリアムはブロックのガスリミットを約1250万Gweiから1500万Gweiに引き上げ、約20%の増加となりました。それでは、イーサリアムのガス代に影響を与える要因は何でしょうか?この記事がその答えを提供します。
注:この記事は2020年9月23日に初めて公開され、その一部のデータは当時のものです。読者は、今日の発表時点でのデータが大きく変動している可能性があることに注意してください。
Uniswapが20万以上のユーザーアドレスに資金を配布しているとき、多くの人が喜びの中で思っていたのは、「このガス代は高すぎる」ということかもしれません。
その日はイーサリアムの歴史において記念すべき日であり、ガス代の推奨最高値は1000GWEIに達しました。これは当時の歴史的最高点です。
歴史を目撃し、全員がエアドロップを受け取ったその日の午前、多くの人がガス代に関する問題に直面しました。ガス代が高いことはもはや問題ではなく、問題は、ウォレットが推奨する最大値でガス代を支払っても、計画通りに取引が成立しないことです。皆のMetamaskには「pending」と表示され、回転し続ける様子がイライラを引き起こします。
なぜデフォルトのガス代を使用しているのに、即時取引ができないのでしょうか?この記事では、イーサリアムの取引手数料メカニズムと、イーサリアムで取引を開始する際に直面する問題について詳しく説明します。
ガスの論理
この話はまずイーサリアムアカウントから始めましょう。
イーサリアムネットワークには2種類のアカウントがあります。外部アカウント(Externally Owned Account)と契約アカウント(Contract Account)です。
外部アカウントは、ユーザーが使用するアカウントで、秘密鍵の所有者によって制御されます。契約アカウントは、アプリケーションロジックを持つスマートコントラクトで、契約コードによって制御されます(通常はプロジェクト側が所有)。ユーザーはDeFiアプリを使用する際に、自分のアカウントを使ってDeFiプロジェクトのスマートコントラクトと相互作用しています。
さまざまなアカウント間で自由に相互作用が可能で、ウォレット間での送金や契約間での相互呼び出しができます。各チェーン上の相互作用には一定の計算量が必要で、その計算量の消費量は計算の難易度によって決まります。そして、ガスは計算量の計量単位です。例えば、加算演算は比較的簡単で、3ガスを消費し、除算演算は相対的に複雑で、5ガスを消費します。
各ガス単位には対応する価格があり、それがガス価格(Gas Price)です。ガス価格はWei単位で表示されます。ユーザーはETHを購入してガス代を支払う必要があります。1 ETH = 1e18 Weiであり、通常見られる単位GWeiは1e9 Weiです。通常、ウォレットソフトウェアは過去のガス価格を基に、ユーザーが発起する取引の費用を予測します。
全ノードの集中を避けるため、分散型のブロックチェーンは各ブロックの容量を厳しく制限します。例えば、ビットコインのブロックサイズリミットやイーサリアムのブロックガスリミットです。律動BlockBeatsが執筆している時点で、イーサリアムの各ブロックのブロックガスリミットは約12,000,000ガスであり、これは各ブロックの総計算量の上限です。平均して15秒ごとに1ブロックが生成されます。取引需要がブロック容量を超えると、ユーザーは自分の取引を迅速にブロックチェーンに確認させるために、ブロック内のリソースを競争する必要があります。この時、ユーザーはガスの入札を行い、マイナーはガス価格が高い取引を優先的にブロックに組み込みます。
通常、ユーザーが送金を行う際、ウォレットは調整可能なガスリミットのオプションを提供します。ブロックガスリミットとは異なり、ガスリミットは1つの取引に対してユーザーが受け入れられるガス使用量の上限を指します。時には契約内に脆弱性が存在することがあり、1つの取引が無限ループで計算を続けることがあります。ガスリミットがなければ、この取引はユーザーのウォレット内のすべてのETHを消費してしまいます。そして、マイナーが通常受け取る手数料は、取引実行時に消費された計算量(Gas Used by Transaction)に基づいて計算され、ガスリミット内に残ったETHはユーザーのアカウントに戻ります。
したがって、消費されるETHの量(Ether Cost)= 取引手数料(Gas Fee/Transaction Fee)= 各取引で消費されるガスの量(Gas Used By Transaction) * ガス価格(Gas Price)ということができます。
イーサリアムの手数料メカニズムとアカウントタイプを理解したところで、ユーザーが取引時にしばしば直面する問題を見てみましょう。
確認待ちの取引(Pending)/取引の加速?
ユーザーが取引を開始するたびに、その取引は取引プール(Mempool)に入れられます。前述のように、マイナーはプール内のガス価格が最も高い取引を優先的にパッケージ化します(マイナーの利己性)。したがって、ユーザーが設定したガス価格は取引がパッケージ化され実行される速度を決定します。ネットワークが混雑していると、ガス価格が急騰し、ユーザーの取引が長時間確認待ちの状態になることがあります。待機中の取引を早く処理するために、ユーザーはより高いガス価格を支払って取引を加速することを選択できます(律動注:マイナーにより多くの報酬を支払って割り込みを狙うと理解してください)。
取引を加速するにはどうすればよいのでしょうか?取引を加速するロジックをより詳細に理解するために、もう1つのパラメータ:Nonceを理解する必要があります。各アカウントが発信する取引には、順番に並べられた取引番号—Nonceがあり、0から始まります。取引を1回発起するたびに、そのアカウントのNonce値は1増加します。
ユーザーが取引を加速したい場合、イーサリアムウォレット内で取引加速オプションを選択できます。この時、より高いガス代を支払うよう求められ、ユーザーが同意すると、新しい取引が発起されます。この新しい取引は、確認待ちの取引と同じNonce値を持ちます。
イーサリアムネットワークの規定により、Nonce値は連続しており飛ばすことはできず、同じアドレスの各取引のNonce値は重複できないため、マイナーは新しく生成された取引をパッケージ化します。新しい取引がパッケージ化され確認されると、以前の低ガス価格の取引は無効になります。
ユーザーが取引を加速したくない場合、その取引が取引プール内にあり未パッケージ化のままであれば、ユーザーはいつでも取引をキャンセルすることができます。キャンセル取引のロジックは加速取引と同じで、ユーザーはより高いガス価格を設定した取引を発起しますが、確認待ちの取引と同じNonceを持ち、取引金額は0になります。したがって、本質的にキャンセル取引のコストは加速取引のコストと同じです。
注意すべきは、確認待ちの取引が完了する前に、後続の取引はすべて待機する必要があるため、ユーザーは待機時間が長すぎるからといって複数の取引を繰り返し発起しないことです。
取引失敗(Fail)
律動BlockBeatsは、現在最も一般的な取引失敗の原因は取引ガスが尽きた(Out of Gas)ことであることを発見しました。つまり、この取引の計算量がユーザーが設定したガスリミットを超えたということです。一般的にこの場合、取引の状態は失敗として表示され、ガスが尽きたと通知され、支払ったガスは返金されません。
一部のユーザーはこれが不公平だと考えるかもしれませんが、本質的にマイナーは計算作業を行っており、途中でガスが不足したために作業を続けられなくなっただけです。しかし、以前の作業には「報酬」が必要であるため、支払ったガス代が返金されないのは理解できるかもしれません。このような状況に遭遇した場合、ユーザーは再度取引を発起し、その取引のガスリミットを引き上げる必要があります。
もう一つの取引失敗のケースは、ユーザーがスマートコントラクトに対して取引を発起したが、何らかのエラーによりコントラクトを実行できない場合です。この場合、取引はBad Instructionを返します。
例えば、ユーザーがクラウドファンディング活動に参加する際、次のような状況が発生する可能性があります:
定員に達した;
またはユーザーがホワイトリストに含まれていない;
またはユーザーがトークンを過剰に購入するなどの状況。
この場合、ユーザーが設定したガスリミットはすべて消費され、最終的に取引が失敗します。
ただし、イーサリアムのバイザンチンハードフォーク後、新しいオペレーターReverted(EIP-140)が追加されました。コントラクト内にエラーが発生し取引が失敗した場合、取引は設定されたガスリミットのすべてのガスを消費せず、コントラクトは実行を停止し、残りのガス代を返金し、ユーザーにエラーの原因を通知します。
もちろん、ユーザーのウォレット内のETHの量がガス代を支払うのに不足している場合、取引も失敗と見なされます。
ホットな状況がないとき、イーサリアムネットワークは平穏であり、すべての送金コスト、時間と金額は制御可能ですが、風が吹くと、ユーザーはネットワーク内でさまざまな問題に直面します。ガス代の論理は、新人がウォレットを使用する際の最大の障害です。
基本的に、ガス代に関するすべての問題はこの記事でカバーされています。オンチェーン取引は複雑ではなく、簡単に言えば、すべての操作に問題があれば、追加の費用を支払うことで解決できます。
この運動は現在、イーサリアム上の流動性マイニングの熱潮が一段落したように見えます。この運動は泡沫を生み出すだけでなく、より多くのユーザーがウォレットの使用に慣れるきっかけとなり、ウォレットはついに高頻度使用のツールとなりました。
また、オンチェーン取引で発生する問題は、ウォレットの最適化のためのスペースを提供し、新人に「ワンクリック加速」や「ワンクリックキャンセル」といったサービスを提供することが、ますます多くのウォレットで見られるようになるかもしれません。