仮想通貨関連の用語|ガス代、gas、gas limit、base fee、priority fee、max fee、gwei、gas price

要約:

  • ガス代とは、送金などのトランザクションを実行するために必要な手数料です。トランザクション手数料とも言われますが、イーサリアムやEVM互換のチェーンではガス代と呼ばれることも多いです。
  • ガス代はETHなどのネイティブトークンで支払われます。払われたガス代の一部はブロック生成を行うバリデータに報酬として渡され、また一部はバーンされます。
  • ガス代に関する用語は多く、ややこしいです。ただし、メタマスクなどは最適な金額を自動計算してくれるので、細かなことを理解しなくても利用できます。

イーサリアムのガス代とは

イーサリアムなどのガス代とは、ブロックチェーンを利用する際に必要な手数料のことです。英語では「gas fee」や「gas cost」と表現します。

トランザクション手数料(transaction fee)とも呼ばれます。

より具体的には、ETHを誰かに送金したり、スマートコントラクトでスワップしたりといったトランザクションを送信する際に必要になります。

ガス代はなぜ必要?

ガス代には、ブロックチェーンネットワークのセキュリティを高めるという役割があります。

もしコードが無限に作動し続ける無限ループ状態になってしまったら、それが偶発的なものでも悪意的なものでも、ネットワークに悪影響を与えます。トランザクションを処理をするには、プログラムの実行や検証・承認などの作業が必要なためです。

また手数料があると、ユーザーは不用意にトランザクションを送らないようになるはずで、この点でもネットワーク維持につながります。

「ガス」とは?

ガスは気体のことですが、「天然ガス」「ガス燃料」という言葉もあり、エネルギー源といった意味合いも持ちます。「トランザクションの処理作業に必要なエネルギー」ということで、ガスと呼ばれるのかなと思います。

ちなみに、トランザクションによって必要な処理作業は違います。例えば、トークンを送るだけなら作業量は少ないですが、スマートコントラクトを実行するとなると処理作業は増えます。

イーサリアムでは、この処理作業の量(大変さ)は「gas」という単位で表される決まりです。例えばトークンを送るだけなら2万gas、スマートコントラクトを使うなら5万gas といったふうに表現されます。

実際に払うガス代の計算方法

実際に払うガス代は、以下の計算式で算出されます。

消費されたgasの量 × 1gasあたりの料金

消費されたgasの量は、「units of gas used」と表現されます。

gasとは、トランザクションを実行するのに必要な仕事量のことでした。このgasが多ければガス代は高くなるし、1gasあたりの料金が高くてもガス代は高くなるというわけです。

これは、車で外出するのにかかるガソリン代と似ていますね。例えば、外出先まで距離が離れていれば、消費するガソリンが多くなり、ガソリン代は高くなります。また、給油したガソリンの値段が高くても、必要なガソリン代は高くなります。

実際に比較してみたいと思います。下の画像の青枠部分は、トークンを送るだけのトランザクションに対して提案されたガス代です。

下の画像の青枠部分は、スマートコントラクトを利用するトランザクションに対して提案されたガス代です。

スマートコントラクトを利用するトランザクションは、ガス代が高くなることがわかりますね。

消費されたgasの量はどう決まる?

gasは、処理が行われる都度消費されます。消費される都度カウントされていき、処理が完了したらどれだけ消費されたかが分かるという仕組みです。

例えば、以下のような処理が実行されるとします。

  1. ユーザーがスマートコントラクトを呼び出す
  2. スマートコントラクトが処理を実行する

このとき、1でも2でもgasが発生して、消費されています。

ちなみに消費されるgasの量は、以下のようにあらかじめ決められています。※ERC20トークンの場合です。

  • アプルーブ(承認):45,000 gas
  • トークンの送付:21,000 gas

「https://www.cryptoneur.xyz/en/gas-fees-calculator」など、トランザクションの種類を選ぶと、gasやガス代を計算してくれるサイトもあります。

1gasあたりの料金はどう決まる?

1gasあたりの料金は、以下のように計算できます。

base fee(基本料)+ priority fee(優先手数料)

base feeは基本料金のようなもので、そのブロックごとに決まっています。priority feeはバリデータに支払うチップで、これはユーザーが自分で決めることができます。priority feeを高くするほど、バリデータは早く処理してくれます。

改めてになりますが、実際に支払うガス代は、以下の式で計算可能でした。

消費されたgasの量 × 1gasあたりの料金

1gasあたりの料金の内訳は、base feeとpriority feeなので、上記の計算式は以下のようにも記載できます。

消費されたgasの量 ×(base fee + priority fee)

先払いするガス代の計算方法

ガス代は、「消費されたgasの量」と「1gasあたりの料金」で算出されることを紹介しました。しかし、ガス代は先払い制なので、確定値が出るのを待ってからではダメなのです。

ガソリンが入っていないと車を動かせないのと似ていますね。

そこで、トランザクションの送信前に推定値を計算しておき、それを先に支払います。ガス代の推定値は、以下のように計算されます。

gas limit ×(base fee + priority fee)

「gas limit」という言葉が出てきますが、実際に払うガス代の計算方法と大きく変わりません。以降ではbase feeとpriority fee、gas limitについてそれぞれ見てみたいと思います。

実際には、メタマスクなどが自動で計算してくれます。たいていはそれに従うだけで大丈夫です。

gas limitとは?

gas limit(maximum amount of gas units)とは、そのトランザクションを実行するために、消費されても許せるgasの量のことです。

別の言い方をすると、「この量までなら、消費されても大丈夫」というgasの量です。または、「この量まで消費したら、もう処理は中止でいいから、それ以上消費しないで」というgasの量とも言えます。

実際に消費されたgasの量が、gas limitより少ない場合、あとから返金してもらえます。しかし、処理をしていくうえで、途中でgas limitに到達してしまった場合は、その処理は中止(out of gas)となるにも関わらずガス代は返金されません。

gas limit不足でもガス代を消費する

途中でgas不足となり、トランザクションを最後まで実行してなかったら、返金してくれても良さそうじゃないでしょうか?しかしよく考えてみると、返金は不可能です。

これは車での外出を考えるとイメージしやすいです。

例えば、車で街まで出ようとしたとします。また、その日は雪の影響で通行止めであり、運悪く街までいけないとします。このケースでは、目的地まで到達できていません。しかし、途中までは車を走らせたので、ガソリンは消費しています。

gas不足の場合も同様です。gasは処理を行うごとに都度消費していく仕組みですので、途中でgas limitに到達してしまったら、そのあとの処理が出来なくなってしまいます。

base feeの計算方法

少し話がそれてしまいましたが、ガス代はトランザクションの送信前に計算しておく必要があるのでした。そして、その計算式に含まれるbase feeやpriority feeについて詳しく見てみるという話でした。

gas limit ×(base fee + priority fee)

base feeはブロックごとに決まっています。1つ前のブロックに含まれるgasが、ターゲットとするgasの量とどれだけ離れているかによって、そのブロックのbase feeが決まる仕組みです。

イーサリアムの場合、1つのブロックに含まれるgasのターゲット量は15百万です。もし、ブロックのgasが15百万なら次のブロックのbase feeも同じ、gasが15百万超なら次のブロックのbase feeは上昇、gasが15百万未満なら次のブロックのbase feeは下落します。

以下は例です。

ブロック内のgasbase fee(増加率)
ブロック1:15百万100 gwei
ブロック2:30百万100 gwei(12.5%)
ブロック3:30百万112.5 gwei(12.5%)
ブロック4:30百万126.6 gwei(12.5%)
ブロック5:30百万142.4 gwei(12.5%)

gweiは、ETHのより小さな単位です。ETHに対するgweiは、円に対する銭と同じような立ち位置です。具体的にはETHの10億分の1の値で、小さな額を表す際に用いられます。(詳細は後述)

乖離が大きいほど次のブロックのbase feeは変化しますが、ブロックあたりの最大のgasは30百万、最大の上昇率は12.5%と決まっています。

ネットワークの需要が大きいほど、必要なガス代が高くなるという性質があります。その他の特徴として、前のブロックの結果を使っているので、ユーザー側としては計算しやすいというのも挙げられます。

ちなみに、市場価格よりも高いbase feeを設定しても、超過分は返金されます。

priority feeの計算方法

priority feeとは、そのトランザクションを承認してもらうために、バリデータに支払える最大の手数料(チップ)です。priority feeはバリデータの報酬となるため、高くするほどトランザクションは早く実行されます。

プロトコルが決定するbase feeとは違い、priority feeはユーザーが自分で設定できますが、ある程度ちゃんとした値にしないと損をします。

例えば、低すぎると他のトランザクションよりも後回しになってしまい、承認が遅くなってしまいます。特に、ネットワークを利用する人が多いと、高いpriority feeに設定しないとなかなか処理されません。そのため、他の人が設定しているpriority feeを参考に、数分で処理してもらえるような値段に設定するなどします。

メタマスクは下の画像のように、おすすめのpriority feeを提案してくれます。

メタマスクは、直近のネットワークが込み合っているかどうか(ガス代が高くなりやすいか)も教えてくれて便利ですね。

バリデータの報酬は、ブロック報酬とpriority feeです。ブロック報酬はブロックを承認すればもらえるので、priority feeというトランザクションをブロックに含めるインセンティブがない場合、バリデータにとって最も効率的なのは空のブロックを追加することになってしまうかもしれません。

その他の関連用語

gwei(ギガwei)とは

gweiは、base feeやpriority feeを表す際などに使われる単位です。

イーサリアムのガス代はETHで払います。しかし、ガス代の代金を表すときは、ETHを使いません。ETHを使うと、0.000000001 ETHのように、小数点が多すぎてよくわからないからです。

そこでガス代を表す単位として、ETHの10億分の1(10のマイナス9乗、ナノ)の大きさである「gwei」が採用されています。0.000000001 ETHを1 gweiと表せるので、識別しやすくなりますね。

ちなみに、gweiよりも小さな単位も存在しています。以下画像のように複数の単位がありますが、最小「wei」で、「1 gwe = 1,000,000,000 wei」という関係性になっています。

出典:Binance

gweiは10億で割るとweiになり、10億を掛けるとETHになります。

ちなみに、BTCの最小単位はsatoshi、BNBの最小単位はJagerです。

max fee(最大手数料)とは

max fee(最大手数料)とは、1gasあたりに支払える最大の料金のことです。以下の計算式で求められます。

base fee + priority fee

gas priceとは

gas priceは、イーサリアムの過去のガス代算出を説明する際に出てくる用語です。イーサリアムのガス代は以前、以下のような式で算出されていました。

消費されたgasの量 × gas price

2021年に実施されたロンドンアップグレードで「EIP1559」という提案が採用され、現在ある以下の算出方法に変わっています。

消費されたgasの量 ×(base fee + tip)

しかし、現在でもgas priceという言葉をよく見かけます。その場合のgas priceは、「base fee + tip」を指しているように感じます。

払われたガス代はどうなる?

ユーザーから支払われたガス代がどうなるかを記載します。

余剰分は返金される

ユーザーは、トランザクション送信前に必要なガス代を推測し、それを支払うのでした。もしgas limitが超過していたり、base feeが超過していたりで先払いしたガス代が、実際に発生したガス代よりも大きい場合、差額はユーザーに返金されます。

base feeはバーンされる

ガス代のうちbase feeは、誰の手に渡るわけでもなくバーンされます。そのため、イーサリアムにおいてのデフレ要因です。

base feeは、1つ前のブロックにいれられたgasの量が15百万gasよりも大きいと、大きくなる仕組みでした。そのため、イーサリアムの需要が大きいとよりたくさんのETHがバーンされることになります。

priority feeはバリデータに付与される

priority feeはバリデータに報酬として付与されます。そのため、バリデータは高いpriority feeのトランザクションを優先します。

直近のガス代を確認する方法

Etherscan

Etherscanでは、直近7日のgas priceとして表示されています。しかし、それ以前のデータはグラフにできないようでやや使い勝手が悪いと感じました。

出典:Etherscan

Blockchair

Blockchairでは、Etherscanよりも長い期間のgas priceを見れます。

出典:Blockchair

参照

Gas and fees | ethereum.org
Ethereum is a global, decentralized platform for money and new kinds of applications. On Ethereum, you can write code th...
EIPs/eip-1559.md at master · ethereum/EIPs
The Ethereum Improvement Proposal repository. Contribute to ethereum/EIPs development by creating an account on GitHub.
Is the Gas Fee refunded if the transaction fails?
I'm confusing the rule of paying gas fee when caller makes a transaction. The gas fee is needed when the transaction is ...
Security check
Gwei | Binance Academy
Gwei | Definition: A small denomination of Ether. It is widely used as a measure of gas prices. 1,000,000,000 wei = 1 Gi...
Gas | Binance Academy
Gas | Definition: The pricing mechanism employed on the Ethereum blockchain to calculate the costs of smart contracts op...
Gas Limit | Binance Academy
Gas Limit | Definition: Maximum price a cryptocurrency user is willing to pay as a fee when sending a transaction, or pe...
What Are Gas Fees? Ethereum’s Ether Transaction Fee | Gemini
What are gas fees? When are gas fees lowest? A look at Ethereum gas fee calculators, ether transaction fees (ETH gas fee...

コメント

タイトルとURLをコピーしました