Last Updated on 2026年3月24日 by Co-Founder/ Researcher
イーサリアム(Ethereum)のガス代(Gas Fee)は、スマートコントラクト実行やトランザクション送信時に必要な手数料です。2026年2月現在、イーサリアムメインネット(Layer 1)のガス代は、ネットワーク混雑時に1トランザクションあたり数千円~数万円に達する場合があり、多くのユーザーにとって利用の障壁となっています。
ガス代は、EVM(イーサリアム仮想マシン)の計算資源を消費する「コスト」を数値化したものです。しかし、ガス代には数学的計算式、EIP-1559による動的調整メカニズム、ストレージコストの非対称性等の複雑な構造が存在します。本記事では、ガス代の技術的メカニズム、計算方法、高騰の原因、および最適化テクニックを客観的に解剖します。
目次
- 1 本記事の目的
- 2 記事内容
- 3 FAQ
- 4 まとめ:構造理解のためのフレームワーク
- 5 Crypto Verseからのメッセージ
- 6 データ参照元・出典
- 7 重要な注記
- 8 関連記事
- 9 Crypto Verseの視点
- 10 免責事項
本記事の目的
本記事の目的は、ガス代の節約テクニックを推奨することではありません。ガス代の技術的メカニズム、EVM命令ごとのコスト構造、EIP-1559の動的調整アルゴリズム、および最適化の数学的根拠を客観的に提供することです。
読者が表面的な「ガス代が高い」という理解に留まらず、Gas Limit、Gas Price、Base Fee、Priority Feeの数学的関係、ストレージ操作のコスト非対称性、バッチ処理の効率性を技術的に理解できるようになることを目指します。
記事内容
ガス(Gas)の技術的定義
ガスは、イーサリアムにおける「計算資源の消費単位」です。
技術的定義: ガスは、EVM(Ethereum Virtual Machine)で実行される各命令(Opcode)の計算コストを測定する抽象的な単位。1 Gasは「計算量1単位」を意味し、ETHとは独立した概念です。
ガスの目的:
- DoS攻撃防止:無限ループ等でネットワークを攻撃できない(ガスが枯渇するとトランザクション失敗)
- 計算資源の公平配分:複雑な処理ほど高コスト
- マイナー(バリデータ)への経済的インセンティブ:ガス代は報酬として分配
重要な理解: ガスは「燃料」のメタファーで説明されますが、実際には「計算量の測定単位」であり、物理的な燃料とは異なります。
ガス代の計算式:2つの時代
イーサリアムのガス代計算は、2021年8月のEIP-1559実装を境に大きく変化しました。
【EIP-1559以前】レガシーモデル(~2021年8月)
計算式:
Transaction Fee = Gas Used × Gas Price
パラメータ:
- Gas Used:実際に消費されたガスの量(トランザクション実行後に確定)
- Gas Price:ユーザーが設定する1 Gasあたりの価格(単位:Gwei)
実例:
Gas Used: 21,000 gas(単純なETH送金)
Gas Price: 100 Gwei(ユーザー設定)
Transaction Fee = 21,000 × 100 Gwei
= 2,100,000 Gwei
= 0.0021 ETH
≈ 368円(1 ETH = 17.5万円と仮定)
問題点:
- ガス代の予測が困難(オークション形式)
- 過払いが頻発(高めに設定して確実に承認を得る)
- 価格変動が激しい
【EIP-1559以降】現在のモデル(2021年8月~)
計算式:
Transaction Fee = Gas Used × (Base Fee + Priority Fee)
パラメータ:
- Gas Used:実際に消費されたガスの量
- Base Fee:ネットワークが自動設定する基礎手数料(ブロックごとに変動)
- Priority Fee(Tip):ユーザーがマイナー(バリデータ)に支払うチップ
実例:
Gas Used: 21,000 gas
Base Fee: 50 Gwei(ネットワーク自動設定)
Priority Fee: 2 Gwei(ユーザー設定)
Transaction Fee = 21,000 × (50 + 2) Gwei
= 21,000 × 52 Gwei
= 1,092,000 Gwei
= 0.001092 ETH
≈ 191円(1 ETH = 17.5万円と仮定)
重要な変更点:
- Base Feeはバーン(焼却)される → ETHのデフレ圧力
- Priority Feeのみバリデータに支払われる
- ガス代の予測が容易(Base Feeは公開情報)
EIP-1559の動的調整メカニズム
EIP-1559の核心は、Base Feeの自動調整アルゴリズムです。
調整ルール:
if ブロックガス使用量 > Target Gas Limit:
Base Fee ↑ 12.5%増加
if ブロックガス使用量 < Target Gas Limit:
Base Fee ↓ 12.5%減少
技術的パラメータ:
- Block Gas Limit:1ブロックあたりの最大ガス量(約3000万 gas)
- Target Gas Limit:理想的なガス使用量(約1500万 gas、Block Gas Limitの50%)
実例(ブロック単位の変化):
| ブロック | ガス使用量 | Target比 | Base Fee変化 | 新Base Fee |
|---|---|---|---|---|
| N | 2000万 gas | 133%(混雑) | +12.5% | 56.25 Gwei |
| N+1 | 2500万 gas | 167%(高混雑) | +12.5% | 63.28 Gwei |
| N+2 | 1000万 gas | 67%(空き) | -12.5% | 55.37 Gwei |
数学的特性:
- 指数関数的変化:連続して混雑すると、Base Feeは急激に上昇
- 自己調整メカニズム:Base Feeが高騰すると需要が減少し、自然に下降
Gas Limit vs Gas Used:2つのパラメータ
Gas Limit: ユーザーが設定する「最大ガス消費量」。トランザクション送信時に指定します。
Gas Used: 実際に消費されたガスの量。トランザクション実行後に確定します。
関係性:
Gas Used ≤ Gas Limit
重要な理解:
- Gas Limitを高く設定しても、実際の手数料はGas Usedで決まる
- ただし、Gas Limitを低く設定しすぎると、トランザクションが失敗し、消費したガスは返還されない
実例(失敗ケース):
Gas Limit: 20,000 gas
実際の必要ガス: 21,000 gas
→ トランザクション失敗
→ 20,000 gas分の手数料は没収(返還されない)
EVM命令(Opcode)ごとのガスコスト
イーサリアムの各EVM命令には、固定のガスコストが設定されています。
主要命令のガスコスト表:
| カテゴリ | 命令 | ガスコスト | 説明 |
|---|---|---|---|
| 基本演算 | ADD(加算) | 3 gas | 2つの数値を加算 |
| MUL(乗算) | 5 gas | 2つの数値を乗算 | |
| SUB(減算) | 3 gas | 2つの数値を減算 | |
| DIV(除算) | 5 gas | 2つの数値を除算 | |
| スタック操作 | PUSH(プッシュ) | 3 gas | スタックにデータを追加 |
| POP(ポップ) | 2 gas | スタックからデータを削除 | |
| メモリ操作 | MLOAD(読み取り) | 3 gas | メモリから読み取り |
| MSTORE(書き込み) | 3 gas | メモリに書き込み | |
| ストレージ操作 | SLOAD(Cold) | 2,100 gas | ストレージから初回読み取り |
| SLOAD(Warm) | 100 gas | 同一トランザクション内の2回目以降の読み取り | |
| SSTORE(初回書き込み) | 20,000 gas | ストレージに初めて書き込み(0→非0) | |
| SSTORE(更新) | 5,000 gas | 既存データを更新(非0→非0) | |
| SSTORE(削除) | Refund | データ削除でガス還付(非0→0) | |
| 外部呼び出し | CALL(コントラクト呼び出し) | 700~2,600 gas | 他のコントラクトを呼び出し |
| その他 | KECCAK256(ハッシュ) | 30 + 6/word | SHA3ハッシュ計算 |
| LOG0~LOG4(イベント) | 375 + データ量 | イベントログ記録 |
重要な補足:
- Cold vs Warm Access(EIP-2929):初回アクセス(Cold)は2,100 gas、同一トランザクション内の2回目以降(Warm)は100 gasと大幅に削減されます
- SSTORE条件分岐(EIP-2200):ストレージ書き込みコストは、既存値と新値の組み合わせにより変動します
重要な観察:
- ストレージ操作が圧倒的に高コスト(SSTORE初回: 20,000 gas)
- 基本演算は極めて低コスト(ADD: 3 gas)
- Cold/Warm Accessの差は21倍(2,100 gas vs 100 gas)
ストレージコストの非対称性
ストレージ操作は、イーサリアムで最も高コストな操作です。
コスト構造(EIP-2200準拠):
| 操作 | ガスコスト | 理由 |
|---|---|---|
| 初回書き込み(0 → 非0) | 20,000 gas | ブロックチェーンに永続的にデータを記録 |
| 更新(非0 → 非0) | 5,000 gas | 既存データの上書き |
| 削除(非0 → 0) | Refund | ストレージを解放(ガス還付) |
| 読み取り(SLOAD Cold) | 2,100 gas | ストレージから初回読み取り |
| 読み取り(SLOAD Warm) | 100 gas | 同一トランザクション内の2回目以降 |
ガス還付制度(EIP-3529):
- ストレージ削除(非0→0)により、ガスが還付される
- 重要な制限:還付額はトランザクション全体のガス使用量の最大20%まで
- 例:Gas Used = 100,000の場合、最大還付 = 20,000 gas
技術的背景:
- 永続性コスト:ストレージはブロックチェーン全体に永続的に保存されるため、コストが高い
- ガス還付制度:ストレージ削除を奨励し、ブロックチェーンの肥大化を防ぐ
最適化の原則:
┌────────────────────────────────────┐
│ ストレージ最適化の鉄則 │
│ │
│ 1. 可能な限りメモリを使用 │
│ 2. ストレージ書き込みを最小化 │
│ 3. 不要データは削除してガス還付 │
│ (ただし還付は最大20%まで) │
└────────────────────────────────────┘
トランザクション種別ごとのガス消費量
典型的なトランザクションのガス消費量(2026年2月時点):
| トランザクション種別 | Gas Used | Base Fee (50 Gwei) | Priority Fee (2 Gwei) | 合計手数料(ETH) | 合計手数料(円) |
|---|---|---|---|---|---|
| ETH送金 | 21,000 gas | 1,050,000 Gwei | 42,000 Gwei | 0.001092 ETH | ≈191円 |
| ERC-20送金 | 約65,000 gas | 3,250,000 Gwei | 130,000 Gwei | 0.00338 ETH | ≈592円 |
| Uniswap V2 Swap | 約150,000 gas | 7,500,000 Gwei | 300,000 Gwei | 0.0078 ETH | ≈1,365円 |
| Uniswap V3 Swap | 約180,000 gas | 9,000,000 Gwei | 360,000 Gwei | 0.00936 ETH | ≈1,638円 |
| OpenSea NFT購入 | 約200,000 gas | 10,000,000 Gwei | 400,000 Gwei | 0.0104 ETH | ≈1,820円 |
| スマートコントラクトデプロイ | 1,000,000+ gas | 50,000,000+ Gwei | 2,000,000+ Gwei | 0.052+ ETH | ≈9,100円+ |
備考:
- Base Fee = 50 Gwei、Priority Fee = 2 Gwei、1 ETH = 17.5万円と仮定
- 実際のガス代はネットワーク混雑度により大きく変動
- Uniswap等のDEX操作は、プールの状態により120,000~220,000 gasの範囲で変動
ガス代高騰の技術的メカニズム
高騰の3つの要因:
要因1:ネットワーク混雑(需要 > 供給)
イーサリアムのBlock Gas Limitは約3000万 gasに固定されています。需要が供給を超えると、Base Feeが自動的に上昇します。
数学的関係:
連続混雑ブロック数 → Base Fee上昇率
1ブロック: +12.5%
2ブロック: +26.6%
5ブロック: +80.2%
10ブロック: +225.7%
20ブロック: +1,042%
実例(NFTミント時): 2021年、Bored Ape Yacht ClubのNFTミント時、Base Feeが一時的に500+ Gweiに達し、1トランザクションあたり数万円のガス代が発生しました。
要因2:複雑なスマートコントラクト
スマートコントラクトが複雑になるほど、Gas Usedが増加します。
コスト比較:
単純なETH送金: 21,000 gas
ERC-20送金: 65,000 gas (約3倍)
Uniswap V3 Swap: 180,000 gas (約8.6倍)
複雑なDeFi取引: 500,000+ gas (約24倍+)
要因3:ストレージ操作の多用
ストレージ書き込み(SSTORE)を多用するコントラクトは、ガス代が急増します。
実例:
// 高コスト:ループでストレージ書き込み
for (uint i = 0; i < 100; i++) {
data[i] = value; // SSTORE × 100回 = 2,000,000 gas
}
// 低コスト:メモリを使用
uint[] memory temp = new uint[](100);
for (uint i = 0; i < 100; i++) {
temp[i] = value; // メモリ操作は低コスト
}
ガス最適化の技術的手法:8つのパターン
手法1:ストレージからメモリへの移行
原則: ストレージ(SSTORE: 20,000 gas)ではなく、メモリ(MSTORE: 3 gas)を使用。
実装例:
// 非効率(ストレージ多用)
function sumArray() public view returns (uint256) {
uint256 total; // ストレージ変数
for (uint i = 0; i < array.length; i++) {
total += array[i];
}
return total;
}
// 効率的(メモリ使用)
function sumArray() public view returns (uint256) {
uint256 total = 0; // メモリ変数(暗黙的)
for (uint i = 0; i < array.length; i++) {
total += array[i];
}
return total;
}
ガス削減:約50-80%
手法2:変数のパッキング
原則: Solidityは32バイト(256ビット)単位でストレージを管理。複数の小さな変数を1スロットに詰め込む。
実装例:
// 非効率(3スロット使用)
uint256 a; // スロット0
uint256 b; // スロット1
uint256 c; // スロット2
// 効率的(1スロット使用)
uint128 a; // スロット0の前半
uint64 b; // スロット0の後半前半
uint64 c; // スロット0の後半後半
ガス削減:SLOAD/SSTOREが3分の1に削減
手法3:不要な変数削除でガス還付
原則: 使用済みストレージを削除(0に設定)すると、ガスが還付される(ただし最大20%まで)。
実装例:
function completeTask(uint taskId) public {
// タスク処理
processTask(taskId);
// 不要データを削除してガス還付
delete tasks[taskId]; // ガス還付(最大Gas Usedの20%まで)
}
手法4:バッチ処理
原則: 複数のトランザクションを1つにまとめて、固定コスト(21,000 gas)を削減。
実装例:
// 非効率(3トランザクション)
transfer(user1, 100); // 21,000 + 処理 gas
transfer(user2, 200); // 21,000 + 処理 gas
transfer(user3, 300); // 21,000 + 処理 gas
// 合計:63,000 + 処理 × 3
// 効率的(1トランザクション)
batchTransfer([user1, user2, user3], [100, 200, 300]);
// 合計:21,000 + 処理 × 3(42,000 gas削減)
手法5:短いエラーメッセージ
原則: エラーメッセージの長さがガスコストに影響。
実装例:
// 高コスト
require(balance >= amount, "Insufficient balance for this transaction");
// 低コスト
require(balance >= amount, "Insufficient");
// 最低コスト(カスタムエラー)
error InsufficientBalance();
if (balance < amount) revert InsufficientBalance();
手法6:uncheckedブロックの使用
原則: Solidity 0.8以降、オーバーフロー検査が自動化されたが、uncheckedブロックで無効化可能。
実装例:
// 通常(オーバーフロー検査あり)
for (uint i = 0; i < 100; i++) {
// 各イテレーションでオーバーフロー検査
}
// unchecked(検査なし)
for (uint i = 0; i < 100;) {
unchecked { i++; } // オーバーフロー検査スキップ
}
注意:安全性を確認した上で使用
手法7:immutableとconstantの活用
原則: immutable、constant変数はストレージではなく、バイトコードに埋め込まれる。
実装例:
// ストレージ使用(高コスト)
address public owner; // SLOAD: 2,100 gas
// immutable使用(低コスト)
address public immutable owner; // バイトコード埋め込み: 数gas
手法8:ERC-20のapprove不要化
原則: Permit(EIP-2612)を使用し、approveトランザクションを削減。
通常のフロー:
1. approve()トランザクション(ガス代発生)
2. transferFrom()トランザクション(ガス代発生)
Permitフロー:
1. オフチェーン署名(ガス代なし)
2. permitとtransferを1トランザクションで実行
EIP-4844(Proto-Danksharding)の影響
2024年3月のDencunアップグレードで実装されたEIP-4844により、レイヤー2のデータ公開コストが大幅に削減されました。
技術的変更:
- Blobという新しいデータ領域を導入
- レイヤー2がトランザクションデータをBlobに記録
- Blobは独立したガスマーケットを持ち、calldataより大幅に安価
影響:
- レイヤー2のガス代が90%以上削減
- レイヤー1のガス代には直接影響なし
ガス代の予測と監視ツール
主要ツール:
| ツール | 機能 | URL |
|---|---|---|
| Etherscan Gas Tracker | リアルタイムBase Fee、推奨Gas Price | https://etherscan.io/gastracker |
| ETH Gas Station | ガス代予測、履歴データ | https://ethgasstation.info |
| Blocknative Gas Estimator | トランザクション別ガス見積もり | https://blocknative.com |
2026年の技術的動向
動向1:Dankshardingの完全実装
EIP-4844(Proto-Danksharding)の次段階として、完全なDankshardingが計画されています。これにより、レイヤー1のデータ可用性が大幅に拡張され、レイヤー2のガス代がさらに削減される見込みです。
動向2:Account Abstraction(ERC-4337)
ガス代代払い(Paymaster)、ガス代のERC-20トークン支払い等が標準化されつつあります。
動向3:レイヤー2の主流化
Arbitrum、Base、Optimism等のレイヤー2がガス代削減の主要な解決策として定着しています。
FAQ
Q. ガス代はいつが安いですか?
A. 統計的に、週末(特に日曜日)の日本時間午前中(UTC深夜~早朝)がBase Feeが低い傾向があります。ただし、NFTミント、大型DeFiイベント等により突発的に高騰する場合があります。リアルタイムでEtherscan Gas Trackerを確認することが推奨されます。
Q. Gas Limitを高く設定すれば、確実にトランザクションが成功しますか?
A. いいえ、Gas Limitは「最大消費量」であり、実際に必要なガスが不足すれば失敗します。ウォレット(MetaMask等)が自動推定するGas Limitは、通常10-20%の余裕を持たせています。手動で変更する場合、推定値の1.1~1.2倍程度が安全です。
Q. Priority Feeを0に設定できますか?
A. 技術的には可能ですが、バリデータが優先的に処理する理由がないため、トランザクションが長時間ペンディング状態になる、または永久に承認されない可能性があります。最低でも1-2 Gweiの設定が推奨されます。
まとめ:構造理解のためのフレームワーク
本記事では、イーサリアムガス代を以下の視点で考察しました。
技術的構造: Gas Used × (Base Fee + Priority Fee)の数学的関係、EIP-1559の動的調整メカニズム(±12.5%)、ストレージコストの非対称性を理解することが基礎となります。
EVM命令コスト: 基本演算(3-5 gas)、ストレージ読み取り(Cold: 2,100 gas、Warm: 100 gas)、ストレージ書き込み(20,000 gas)の圧倒的なコスト差を認識することが重要です。
最適化の8手法: ストレージからメモリへの移行、変数パッキング、ガス還付(最大20%制限)、バッチ処理、短いエラーメッセージ、unchecked、immutable/constant、Permitの各手法を適切に組み合わせることで、ガス代を50-90%削減できる可能性があります。
Crypto Verseからのメッセージ
「ガス代が高い」という表面的な不満は、EVM命令コスト、ストレージの永続性コスト、ネットワーク混雑の数学的メカニズムという技術的現実を反映していません。一方で「レイヤー2で解決」と断じるのも、メインネットの技術的必然性とトレードオフを無視した議論です。
Crypto Verseは、特定のイデオロギーに与することなく、技術的メカニズムと「検証可能な事実(FACT)」のみを提示し続けます。SSTORE命令のコストを理解するのか、EIP-1559の動的調整を検証するのか。「Don’t trust, verify(信じるな、検証せよ)」――この原則こそが、適切なガス最適化を実現するための羅針盤となります。
データ参照元・出典
本記事の技術的背景および事実確認において、以下のデータ等を参照しています。
- Ethereum Yellow Paper(EVM仕様): https://ethereum.github.io/yellowpaper/paper.pdf
- EIP-1559(Fee market change): https://eips.ethereum.org/EIPS/eip-1559
- EIP-2200(SSTORE gas cost): https://eips.ethereum.org/EIPS/eip-2200
- EIP-2929(Cold/Warm access): https://eips.ethereum.org/EIPS/eip-2929
- EIP-3529(Gas refund reduction): https://eips.ethereum.org/EIPS/eip-3529
- EIP-4844(Proto-Danksharding): https://eips.ethereum.org/EIPS/eip-4844
- Ethereum.org Gas Documentation: https://ethereum.org/en/developers/docs/gas/
- EVM Opcodes: https://ethereum.org/en/developers/docs/evm/opcodes/
- Solidity Documentation: https://docs.soliditylang.org/en/latest/
- Etherscan Gas Tracker: https://etherscan.io/gastracker
重要な注記
ガス代の変動性:ガス代はネットワーク混雑度により大きく変動します。本記事の数値は2026年2月時点の推定値です。
最適化のトレードオフ:ガス最適化はコードの可読性、安全性とトレードオフの関係にあります。過度な最適化は、バグのリスクを高める可能性があります。
レイヤー2の重要性:本記事はレイヤー1のガス代を解説していますが、多くのユースケースでレイヤー2(Arbitrum、Base、Optimism等)の利用が実用的な解決策となります。
関連記事
イーサリアムレイヤー2の選び方:図解で理解する最適なインフラ選択 → ガス代削減の実用的解決策を理解
スマートコントラクトの仕組みとは:「Code is Law」を実現するWeb3の自動執行プロトコル → ガス消費の発生源を理解
ブロックチェーンの技術的構造:分散型台帳・コンセンサス・暗号技術の完全解剖【2026年版】 → ガス代の基盤技術を理解
Crypto Verseの視点
┌─────────────┐
複雑なWeb3の世界を、
もっとも信頼できる「地図」へ
└─────────────┘
Crypto Verseが目指すもの:
- 構造を正確に伝える
- リスクを隠さず明示する
- 統計的現実を提示する
本記事は、構造的に理解するための専門コンテンツであり、特定のガス最適化手法の利用を推奨するものではありません。
免責事項
本記事は、イーサリアムガス代の技術的構造に関する客観的情報提供を目的としており、投資助言を提供するものではありません。ガス最適化には、コードの安全性低下、バグのリスクが伴います。最終的な判断は、ご自身の責任で行ってください。

