Cover photo

#3 OptimismのEIP-1559

EIP-1559は、Ethereumのガス料金に関わる規格として有名です。そして、この料金システムは他のEVMチェーンにも適用されているのをよく見かけます。

EVM等価であり、ゆくゆくはEthereum等価を目指しているOptimismでは、先のBedrockアップグレードを以ってEIP-1559に基づくネットワーク手数料システムが適用されました。

ところで、OptimismはCanyonハードフォークを実施することがこのブログ記事で発表されました。このハードフォークでは、Ethereumで実施されたShanghaiハードフォークに含まれていたEIPsの適用の他、EIP-1559に関するパラメータを変更することなどが予定されています。

この記事では、EIP-1559の仕様を簡単におさらいし、このパラメータ変更が具体的にどう影響を及ぼすのかを理解できるようになることをゴールとしています。

EIP-1559とは

ブロックごとの固定ネットワーク手数料を焼却するトランザクション価格メカニズムで、一時的な混雑に対処するためにブロックサイズを動的に拡大縮小します。

EIP-1559: Fee market change for ETH 1.0 chainより引用・翻訳

EIP-1559前の料金システム

EIP-1559を実装する前は、ユーザは自身が提出するトランザクションに、ガス価格を設定して提出していました。そして、トランザクションの実行により実際に支払われるトランザクション手数料は、消費したガスとガス価格の積で算出されます。

そして、マイナーは高いガス価格をつけたトランザクションから順番に実行することで、利益を最大化することができます(注)。もちろん、明らかに安いガス価格をつけたトランザクションを実行することはプロトコルで禁止されていませんでした。

しかし、この仕様はUX面において主に以下の2つの問題を抱えていました。

  • ユーザが支払うガス代の変動が大きくなりやすい。

  • トランザクションが承認されるまでに時間がかかりやすい。

Ethereumはブロックサイズがすべて同じであり、それらブロックが満杯になるほど需要があるので、このような問題が発生してしまいます。これに対処するために導入されたのが、一時的な需要の変動を、ブロックの容量を変動させて吸収するという考えです。

注: この記述は正確には誤りなのですが、本ブログ記事はアルゴリズムを解説する記事ではないので扱いません。

EIP-1559の概要

EIP-1559で特徴的なパラメータはbase feeです。Ethereumのブロックに目標容量を定め、あるブロックが目標容量を上回った場合には次のブロックのbase feeは増加し、下回った場合には減少します。そして、トランザクションが指定するガス価格が、あるブロックのbase feeを下回った場合には、そのトランザクションはそのブロックで実行されません。base feeは焼却され、誰も受け取ることができなくなります。

目標を超えたらbase feeは上がり、下回れば下がる.
目標を超えたらbase feeは上がり、下回れば下がる.

また、トランザクションにはpriority feeというパラメータを指定することが求められます。これは、(当時の)マイナーが受け取る分のガス価格を指定するものです。

以上の仕様から、ユーザはガス価格を十分大きい値に設定し、priority feeを少額(The Merge後は0.1 Gwei程度)設定すれば、ネットワークが適切なガス価格を設定しながらも、迅速にトランザクションを処理することが可能となります。このときのガス価格は、base feeとpriority feeの和です。

OPメインネットのEIP-1559

冒頭述べた通り、OPメインネットもEIP-1559に基づく料金システムを採用しています。しかし、いくつかのパラメータが異なります。その違いは、このドキュメントに記されています。

2つのチェーンのEIP-1559パラメータの違い (スクリーンショット).
2つのチェーンのEIP-1559パラメータの違い (スクリーンショット).

Block gas limitはブロックの最大容量、Block gas targetはブロックの目標容量です。この2つの比は、EIP-1559 elasticity multiplierというパラメータで表現されています。Ethereumはこの値が2であるのに対して、OPメインネットは6ですね。この様子を模式図で表すと、以下のようになります。

EIP-1559 elasticity multiplierの説明.
EIP-1559 elasticity multiplierの説明.

そして、EIP-1559 denominatorは、次のブロックのbase feeの変動の大きさに関わるパラメータです。これとEIP-1559 elasticity multiplierから、Maximum base fee increase (per block)とMaximum base fee decrease (per block)を算出することができます。つまり、1ブロック当たりbase feeは最大何倍まで増加または減少しうるかを求めることができるということですね。この計算の例を次に示します。

EIP-1559 denominatorを使った計算例

Ethereum

まず、Ethereumの計算例を示します。EthereumのEIP-1559 denominatorの値は8なので、逆数と取って1/8=0.125となります。ブロックが目標容量を下回ったら次のブロックのbase feeは減少するので、Maximum base fee decrease (per block)はそのまま0.125·1=12.5%です。そして、EIP-1559 elasticity multiplierは2であり、ブロックが目標容量を上回った場合には次のブロックのbase feeは増加することを考えると、Maximum base fee increase (per block)は0.125·(2-1)=12.5%です。

OPメインネット

次に、OPメインネットの計算例を示します。EthereumのEIP-1559 denominatorの値は50なので、逆数と取って1/50=0.02となります。ブロックが目標容量を下回ったら次のブロックのbase feeは減少するので、Maximum base fee decrease (per block)はそのまま0.02·1=2%です。そして、EIP-1559 elasticity multiplierは6であり、ブロックが目標容量を上回った場合には次のブロックのbase feeは増加することを考えると、Maximum base fee increase (per block)は0.02·(6-1)=10%です。

OPメインネットの既知の問題点

このように、EIP-1559 denominatorの値が大きいと、base feeの変動は穏やかになるようです。しかし、OPメインネットのブロック生成間隔は2秒と、Ethereumのそれよりも1/6であることから、ブロックスペースの需要が高いときの単位時間あたりのbase feeの増加速度はとても速くなります。

もし1分間、ブロックの容量がすべて使用された場合、Ethereumの場合はbase feeが1.8倍になるだけですが、OPメインネットの場合は17倍以上です。これにより、一時的に急激に需要が高まったときに提出されたトランザクションが詰まる事態が発生しやすくなっていました。

Canyonハードフォークによるパラメータの見直し

そこでCanyonハードフォークでは、EIP-1559 denominatorを50から250に増やします。250の逆数を取ると、0.004ですね。このとき、Maximum base fee decrease (per block)は0.004·1=0.4%となり、Maximum base fee increase (per block)は0.004·(6-1)=2%となります。もし1分間、ブロックの容量がすべて使用された場合、base feeは1.8倍となります。これは、Ethereumとほとんど同じ値であることがわかります。パラメータは違えど、UX面ではよりEthereumに近づいたという評価をすることもできるでしょう。

さいごに

このブログ記事では、OptimismがEIP-1559に基づく料金システムを採用し、どのようにEthereumのシステムに似た仕組みを取り入れているかを見てきました。CanyonハードフォークによるEIP-1559のパラメータ変更は、OPメインネットのガス料金の安定性を高めることを目的としています。これにより、ネットワークの混雑時にもbase feeの増加が抑えられ、ユーザー体験が向上することが期待できるでしょう。

参考文献

※Optimismの公式リソースに関しては、著者の記載を省略しています。