メインコンテンツへスキップ

ガスとフィー(手数料)

最終編集者: , Invalid DateTime

イーサリアムネットワークにとってガスは切り離せないものです。 ガスは車にとってのガソリンのようにイーサリアムを稼働させるための燃料として使われます。

前提知識

このページをよく理解するためには、まずトランザクションEVMを読むことをお勧めします。

ガスとは

ガスとは、イーサリアムネットワーク上で特定の操作を実行するために必要な計算労力を測定する単位のことです。

各トランザクションは実行するために計算リソースを必要とするため、トランザクションにはフィー(手数料)が必要になります。 そこでガスはイーサリアムで正常にトランザクションを行うための手数料として用いられます。

EVMを実行する際にガスが必要な箇所を示す図 (opens in a new tab) イーサリアム EVM(opens in a new tab)からの図解

実際にはガス代はイーサリアムのネイティブ通貨であるイーサ(ETH)で支払われます。 ガス代は ETH を表す単位の一つである gwei で表されます。gwei は 0.000000001 ETH(10-9 ETH)と等価です。 例えば、0.000000001 ETH の費用がかかるとは、1 gwei かかるということを意味します。 「gwei」という単語自体は「ギガウェイ」を意味し、10 億 wei と同じです。 wei はb-money(opens in a new tab)の創始者であるWei Dai(opens in a new tab)か名前を付けられ、ETH の最小単位です。

ロンドンアップグレード前

イーサリアムネットワークのトランザクションフィーの算出方法は、2021 年 8 月のロンドンアップグレードに伴って変更されました。 ロンドンアップグレード前の計算方法を次に示します。

例えば、Alice が Bob に 1 ETH を支払う必要があるとしましょう。 トランザクションでは、ガスリミットは 21,000 ユニット、ガス価格は 200 gwei です。

フィーの総額はガスユニット(リミット)*単位当たりのガス価格です。 つまり、21,000 * 200 = 4,200,000 gweiまたは 0.0042 ETH です。

ロンドンアップグレード後

例えば、Jordan が Taylor に 1 ETH を支払わなければならないとしましょう。 トランザクションでは、ガスリミットは 21,000 ユニット、ベースフィーは 10 gwei です。 Jordan は 2 gwei のチップを追加します。

料金の合計は次のようになります。使用ガスユニット * (ベースフィー + プライオリティフィー) ここで、ベースフィーはプロトコルにより設定された値、プライオリティフィーはバリデータへのチップとしてユーザーが設定した値です。

つまり、21,000 * (10 + 2) = 252,000 gweiまたは 0.000252 ETH です。

Jordan が送金すると、1.000252 ETH が Jordan の口座から差し引かれます。 Taylor は 1.0000 ETH を受領します。 バリデータは、0.000042 ETH のチップを受け取ります。 ベースフィーは 0.00021 ETH です。

さらに、Jordan はトランザクションの最大のフィー(maxFeePerGas)を設定することもできます。 最大フィーと実際のフィーの差額は、Jordan に返金されます。 つまり、返金= 最大フィー - (ベースフィー + プライオリティフィー)になります。 トランザクションが実行時のベースフィーの「払い過ぎ」を心配することなく、トランザクションに支払う最大金額を設定することができます。

ブロックサイズ

ロンドンアップグレード前は、イーサリアムのブロックサイズは固定されていました。 ネットワーク需要が高い時期には、これらのブロックは全能力を使って稼働していました。 その結果、ブロックに追加されるには、全体の需要が減るのを待たなければならないことが多く、ユーザーエクスペリエンスが損なわれました。

ロンドンアップグレードで、イーサリアムに可変サイズのブロックが導入されました。 各ブロックの目標サイズは 1,500 万ガスですが、ブロックの上限である 3,000 万ガス(目標ブロックサイズの 2 倍)までは、ネットワークの需要に応じてブロックのサイズが増減します。 このプロトコルは、 tâtonnementのプロセスを通じて平均 1,500 万の平衡ブロックサイズを実現します。 つまり、ブロックサイズがターゲットブロックサイズよりも大きい場合、プロトコルは次のブロックのベースフィーを増加させます。 同様に、ブロックサイズがターゲットブロックサイズより小さい場合、プロトコルはベースフィーを減らします。 ベースフィーが調整される金額は、現在のブロックサイズとターゲットまでの差に比例します。 ブロックの詳細

ベースフィー

各ブロックにはベースフィーがあり、これは最低価格です。 ブロックに含まれるには、ガスあたりの提供価格がベースフィー以上である必要があります。 ベースフィーは現在のブロックとは別個に計算され(その前のブロックにより決定)、おおよそのトランザクションフィーを予測できます。 ブロックがマイニングされると、このベースフィーが「消費」され、流通から削除されます。

ベースフィーは、前のブロックのサイズ(すべてのトランザクションに使用されるガスの量)とターゲットサイズを比較して計算されます。 ターゲットブロックサイズを超えると、ベースフィーは 1 ブロックあたり最大 12.5%増加します。 この指数的な増加により、ブロックサイズが無期限に高いままであることが経済的に不可能になります。

ブロック数含有ガス増加されるフィー現在のベースフィー
115M0%100 gwei
230M0%100 gwei
330M12.5%112.5 gwei
430M12.5%126.6 gwei
530M12.5%142.4 gwei
630M12.5%160.2 gwei
730M12.5%180.2 gwei
830M12.5%202.7 gwei

ロンドンアップグレード前のガスオークション以前の市場と比較して、このトランザクションフィーの仕組みの変更により、手数料をより信頼性高く予測できるようになりました。 上の表により、ブロック数 9 のトランザクションを行う場合、次のブロックに追加される最大ベースフィー現在のベースフィー * 112.5%つまり202.8 gwei * 112.5% = 228.1 gweiであるとウォレットがユーザーに通知できます。

また、フルブロックの状態だとベースフィーの上昇速度が上がるため、フルブロックのスパイクが長くは続かないことにも注意してください。

ブロック数含有ガス増加されるフィー現在のベースフィー
3030M12.5%2705.6 gwei
......12.5%...
5030M12.5%28531.3 gwei
......12.5%...
10030M12.5%10302608.6 gwei

プライオリティフィー(チップ)

ロンドンアップグレード前、ブロックに含まれるトランザクションから得られるガス代の合計額は、マイナーが受け取っていました。

ロンドンアップグレードによる新しいベースフィーでは、マイナーがトランザクションをブロックに追加するインセンティブを与えるためにプライオリティフィー(チップ)が導入されました。 チップがなければ、マイナーは空のブロックをマイニングした方が、同じブロック報酬を得られるので経済的に有利となります。 通常の状況では、少額のチップは、マイナーがトランザクションを行うための最小限のインセンティブとなります。 同一ブロック内の他のトランザクションよりも優先的に実行される必要があるトランザクションの場合、競合するトランザクションよりも優先的に実行されるためには、より高いチップが必要となります。

最大フィー

ネットワーク上でトランザクションを実行するために、ユーザーはトランザクション実行に支払うフィーの上限を指定できます。 このオプションのパラメータは、maxFeePerGasとして知られています。 トランザクションを実行するためには、最大フィーはベースフィーとチップの合計を超えなければなりません。 トランザクションの送信者には、最大フィーからベースフィーとチップの合計額を差し引いた差額が返金されます。

フィー(手数料)の計算

ロンドンのアップグレードで得られた主なメリットの 1 つに、トランザクションフィーを設定する際のユーザーエクスペリエンスの向上があります。 アップグレード対応ウォレットでは、ユーザーがトランザクションを成立させるためにいくら支払うかを明示するのではなく、ウォレット提供者が推奨トランザクションフィー(ベースフィー+推奨プライオリティフィー)を自動的に設定し、ユーザー側の複雑さを軽減します。

EIP-1559

ロンドンアップグレードでEIP-1559(opens in a new tab)が導入されたことで、トランザクションフィーの仕組みは従来のガス代オークションよりも複雑になりましたが、ガス代の予測がしやすくなり、結果的にトランザクションフィー市場がより効率的になるというメリットがあります。 ユーザーはガスの市場価格(baseFeePerGas)以上の金額を支払うことなく、トランザクションの実行に支払うmaxFeePerGasを設定してトランザクションを送信でき、チップを差し引いた余剰分は返金されます。

EIP-1559 とそのメリットについて説明するビデオ:

より正確な情報は、 EIP-1559 の仕様(opens in a new tab)をご覧ください。

EIP-1559 リソース(opens in a new tab)でさらに詳細情報を調べる。

ガス代の必要性

簡単に説明すると、ガス代はイーサリアムネットワークを安全に保つのに役立ちます。 ネットワーク上のそれぞれの計算処理に手数料を課すことで、ネットワークに対する攻撃を防止します。 コード内の偶発的または敵対的な無限ループ、またはその他の過剰計算による損失を防ぐために、 各トランザクションはコード実行の計算ステップ数(1 トランザクションにおける計算量)を制限する必要があります。 計算の基本単位は「ガス」になります。

トランザクションには制限がありますが、トランザクションで使用されなかったガスはユーザーに返却されます(例: 最大フィー - (ベースフィー + チップ)が返金)。

未使用ガスの返金方法を示す図 (opens in a new tab) イーサリアム EVM(opens in a new tab)からの図解

ガスリミット

ガスリミットとは、1 回のトランザクションで消費できるガスの最大量のことです。 スマートコントラクトを含む複雑なトランザクションでは、単純な支払いよりもより多くの計算作業が必要なため、高いガスリミットを必要とします。 標準の ETH 送金には、21,000 ユニットのガスリミットが必要です。

例えば、簡単な ETH 送金に 50,000 のガスリミットを設定した場合、EVM は 21,000 を消費し、残りの 29,000 が戻されます。 ただし ETH 送金に、例えば 20,000 など少なすぎるガスリミットを指定する場合は、EVM はトランザクションを満たそうとして、20,000 のガスユニットを消費しますが、完了はしません。 EVM は変更を元に戻しますが、20,000 ガスユニットに相当する作業はすでにマイナーが実施済みのため、その分のガスは消費されます。

ガス代が高い理由

高いガス代はイーサリアムの人気の高さが原因です。 イーサリアム上で動作するにはガスの消費が必要であり、ブロックごとにガススペースが制限されています。 フィーには計算、データの保存、操作、トークンの転送、それぞれの消費量が異なる「ガス」量が含まれます。 分散型アプリ(Dapp)機能がより複雑になるにつれて、スマートコントラクトが実行する操作数も増え、各トランザクションは限られたサイズのブロックの多くのスペースを占めます。 需要が高すぎる場合、他のユーザーのトランザクションよりも高いチップをオファーする必要があります。 チップをより高くすることで、トランザクションが次のブロックに入る可能性が高くなります。

ガス代だけでは、特定のトランザクションにどれだけの金額を実際に支払う必要があるかを決定できません。 トランザクションフィーを計算するには、使用されたガスにベースガスフィー(gwei)を掛ける必要があります。

ガス代削減への取り組み

イーサリアムのスケーラビリティ・アップグレードは、最終的にいくつかのガス代の問題を解決し、ひいてはプラットフォームが毎秒数千のトランザクションを処理し、グローバルにスケールアップできるはずです。

レイヤー 2 のスケーリングは、ガス代、ユーザーエクスペリエンス、スケーラビリティを大幅に向上させるための主要なイニシアチブです。 レイヤー 2 スケーリングの詳細

ガス代を低減するための戦略

ETH のガス代を削減したい場合は、トランザクションの優先度を示すチップを設定できます。 マイナーは、ガスあたりのチップが高いトランザクションを処理して実行します。ユーザーが支払うチップを獲得できるため、チップが低く設定されたトランザクションは実行したくないためです。

ETH をより安く送れるようにガス代を節約したい場合は、次のような様々なツールを利用できます。

参考文献

この記事は役に立ちましたか?