本文へ移動

ガスとトランザクション手数料

フォークを明示し、ガス単位、固有・実行コスト、EIP-1559 の上限、ベースフィーのバーン、優先手数料、リバート、ガス不足、還付、blob gas、L2 手数料を解説します。

更新日

教育目的の参考情報であり、投資助言や取引助言ではありません。手数料は、対象チェーン、フォーク、トランザクション種別、実行経路、状態、手数料市場、シーケンサーまたはビルダーの方針、採用時点に左右されます。

直接の答え

ガスは実行処理と状態アクセスを測るプロトコル上の会計単位であり、ガス手数料は課金対象のガス単位数と単価から算出する金銭的費用です。EIP-1559 適用後の Ethereum では、effectiveGasPrice = min(maxFeePerGas, baseFeePerGas + maxPriorityFeePerGas)、実行手数料は gasUsed * effectiveGasPrice です。ベースフィー相当分はバーンされ、優先手数料相当分はブロックの手数料受取先を通じて支払われます。ガス上限と手数料上限は最大許容額であり、自動的に全額消費される金額ではありません。

実際のガス使用量は calldata、オペコード経路、メモリ拡張、コールド/ウォーム状態アクセス、ストレージ変更、入れ子の呼び出し、プリコンパイル、成功・失敗、還付、適用フォークに依存します。単価を上げれば採用競争では有利になり得ますが、リバート、ガス上限不足、悪意あるコントラクト、古い見積り、不正な calldata は解決しません。Blob トランザクションや多くの L2 には別建てのデータ費用やプロトコル費用があり、EVM ガスに一括してはなりません。

ネットワーク手数料
0.000462 native
法定通貨換算
$1.39
ベース手数料
22 gwei

結果は教育用の概算です。明示されない限り、取引所ルール、税、遅延、オラクル動作、固有のプロトコル条件は含みません。

仕組み

  1. チェーン、フォーク、ブロックまたは状態タグ、トランザクション種別、送信者、nonce、宛先、送金価値、calldata、アクセスリスト、blob フィールド、ガストークン、手数料通貨を固定します。見積りが L1 取引、L2 実行、データ公開、出金、複合経路のどれかを記録します。
  2. 実行前に固有ガスを再構成します。トランザクション形式、calldata のバイトコスト、コントラクト作成とアクセスリストの料金、種別固有の負担を含みます。ガス上限が固有ガス未満、または送信者がプロトコルの最大費用に関する有効性検査を満たさない場合、トランザクションは採用・実行前に拒否され、採用後のリバートにはなりません。
  3. 対象フォークの規則で実行を追跡します。オペコードの動的コスト、メモリ拡張、コールド/ウォームのアカウントとストレージスロット、SSTORE、呼び出しガスの転送、価値移転、プリコンパイル料金、ログ、還付を測定します。同じ ABI 関数でも、状態により分岐と使用ガスが変わります。
  4. 結果を区別します。成功した実行は効果を確定します。REVERT は失敗したスコープを巻き戻し、その呼び出しフレームの未使用ガスを返す場合があります。ガス不足による例外停止は通常、フレームに渡されたガスを使い切ります。採用済みのトップレベル失敗は、コントラクト状態、価値移転、ログを巻き戻しても、送信者の nonce と課金ガスを消費します。
  5. 実行ガスを価格化します。タイプ 2 では、ベースフィー、優先手数料上限、総額上限から実効ガス価格を算出し、課金ガスをバーンされるベースフィーと優先手数料に分けます。未使用ガス、未消費の上限余力、適格な状態整理により生じて適用中の還付上限に制約されるプロトコル上のガス還付を区別します。
  6. 他の手数料市場を別々に計算します。Blob トランザクションは実行ガスに加えて blobGasUsed * blobGasPrice を支払い、maxFeePerBlobGas の制約を受けます。blob のベースフィーには独自の調整経路があります。L2 利用者手数料は L2 実行、圧縮後の L1 データまたは blob 費用、運営者・プロトコル料金、マージンを含む場合があり、式と係数はデプロイ先とアップグレードごとに異なります。
  7. 見積り、採用、レシートを照合します。署名前に、送金価値と最大許容手数料に対して残高を検査し、固定した状態でシミュレーションして上限を設定します。採用後はガス上限、レシートのガス使用量、実効価格、ベースフィー、優先手数料、還付の影響、blob gas、L2 手数料フィールド、ステータス、残高変動を記録し、見積り誤差、置換、ファイナリティを別々に扱います。

計算例

  • タイプ 2 の成功と上限。 ガス上限は 120,000、使用量は 70,000、ベースフィーは 25 gwei、優先手数料上限は 3 gwei、総額上限は 40 gwei です。実効価格は min(40, 25 + 3) = 28 gwei、実費は 70,000 * 28 gwei = 0.001960 ETH で、0.001750 ETH がバーンされ、0.000210 ETH が優先手数料です。実行手数料の最大許容額は 120,000 * 40 gwei = 0.004800 ETH です。未使用の 50,000 gas と未消費の上限余力は、状態整理に対するプロトコル還付ではありません。
  • REVERT とガス不足。 採用された二つの呼び出しは、いずれもガス上限 100,000、実効価格 30 gwei です。呼び出し A が REVERT した時点で、レシートのガス使用量は 60,000、費用は 60,000 * 30 gwei = 0.001800 ETH です。呼び出し B は上限を使い切り、費用は 100,000 * 30 gwei = 0.003000 ETH です。いずれもコントラクトの効果を巻き戻して nonce を消費しますが、REVERT は未使用ガスを残せる一方、ガス不足では残りません。
  • 還付上限。 EIP-3529 のフォークに限定した教材例で、還付前の実行が 100,000 gas、還付カウンターが 30,000 gas とします。適用できる上限は 100,000 / 5 = 20,000 gas なので、課金ガスは 100,000 - 20,000 = 80,000 gas です。20 gwei なら費用は 0.001600 ETH となり、還付前の 0.002000 ETH より 0.000400 ETH 少なくなります。対象操作と還付規則はフォークにより変わり得ます。
  • 独立した blob 手数料市場。 仮想の blob トランザクションが実行ガス 100,000 を価格 20 gwei で使い、blob を二つ持つとします。131,072 blob gas/blob なら blob gas は 262,144、価格が 5 gwei なら blob 手数料は 262,144 * 5 gwei = 0.00131072 ETH です。実行手数料は 0.002000 ETH、プロトコル手数料合計は 0.00331072 ETH です。5 gwei は例示値であり、blob 手数料はバリデーターへの優先手数料でも、L2 利用者の全費用でもありません。

リスク

  • チェーン、フォーク、ガストークン、取引種別、手数料通貨を取り違える。
  • ガス単位、wei、gwei、ETH、法定通貨換算を混同する。
  • ガス上限を見積り額または実費とみなす。
  • 固有ガスまたは最大費用の実行前検査に失敗する。
  • 状態、ベースフィー、calldata の変更後も古い見積りを使う。
  • 実際の分岐に必要な量よりガス上限を低くする。
  • ガス単価を上げればリバートを防げると考える。
  • REVERT、ガス不足、不正オペコード、実行前拒否を混同する。
  • トップレベルのステータスが 1 でも、捕捉された子呼び出し失敗を見落とす。
  • コールド/ウォームアクセスや不完全なアクセスリストを誤って価格化する。
  • メモリ拡張、呼び出しガス転送、プリコンパイル、ログを無視する。
  • 古いストレージ還付規則を使う、または還付上限を超える。
  • 未使用ガスや上限余力をプロトコル還付として数える。
  • 最大手数料を採用ブロックのベースフィーより低くする。
  • ビルダーやシーケンサーの方針を知らずに優先手数料を払いすぎる。
  • 他の資産を保有していてもネイティブガストークンがない。
  • blob gas、blob 上限、データ可用性費用を除外する。
  • 一つの L2 の実行、データ、係数、運営者料金を普遍化する。
  • 置換、nonce、ドロップ、残高予約の競合を無視する。
  • 支払済みまたは成功した取引を安全性やファイナリティの証明とみなす。

よくある誤解

  • ガスは送金価値に対する割合で課金される。
  • ガス上限を上げれば実費も必ず増える。
  • 高い最大手数料や優先手数料は実行成功を保証する。
  • 未使用の許容額と状態整理による還付は同じ仕組みである。
  • L2 手数料はローカル EVM ガスだけで、blob 手数料は通常の実行ガスである。

関連トピック

出典

ナビゲーション

Wiki を検索...