Ethereum Gasのあり方を考える。

EthereumのGas高騰問題は一時期非常に深刻な問題でした。これを受けコミュニティーはgasのモデル改善を考えています。ここでは、Vitalikによって提案されたgas徴収モデルについて解説します。

gasはEthereumのマイナーにとって報酬であるだけではなく、どの取引を優先的に捌くかという優先順位付けをする手段となっています。

現在はFirst-Price Auction(一位価格オークション)というモデルに従ってマイナーは取引をブロックに格納しています。ここでは、みなが指値を提出して、高値のものから処理がされます。このモデルの問題は、適正価格を選ぶための戦略がないことです。

正直な表明が優位戦略にならないために、戦略決定はある程度の指標はありつつも、トランザクションセンダーにとって悩ましい問題になることが一般的です。また、本来であれば$0.1分のgasを払えば数秒で格納されたであろうトランザクションに対し、値付けをする時点で適切な価格を設定することが厳密的には不可能なので、$1.00分のgasを設定してしまうなどの問題もあります。これは、gasの過剰な高騰を招きます。

この問題を解決するためのモデルがUniform-Price Auction(2位価格オークション)です。このモデルでは、参加者は一番少ない指値と同額の値段を支払います。たとえば、

7人のプレーヤーがおり、それぞれ以下のような指値を持っているとします。

0.02, 0.03, 0.05, 0.08, 0.13, 0.19, 1.00

マイナーが5つのトランザクションを処理する場合、gas代が高額な上位5つの指値を処理することになります。この場合で言えば、1.00, 0.19, 0.13, 0.08, 0.05の5つです。最小額が0.05なので、他のプレーヤーも0.05のgasを払うことになります。

これは1位価格オークションの問題点である過剰なgasの高騰を抑えることができる一方でカルテル被害をより受けやすいという大きな欠点があります。特に、マイナーが率先してカルテルを仕掛け、手数料引き上げをもくろみかねないです。

もう少し詳しく説明すると、2つの脆弱性があります。

1つ目はマイナーが高額のgasを設定したトランザクションを作り出すことによって格納されるトランザクションのgasを引き上げることです。

2つ目はマイナーがトランザクションセンダーに実際よりも高額のgasを設定したトランザクションを作り出すことを要求することでgasを引き上げ、別チャネルを通してマイナーがトランザクションセンダーに報酬を還元することです。

ここで、1位価格オークション、2位価格オークションに代わり、Vitalikが提案しているgas決定メカニズムはブロックごとに以下の公式にしたがって最小限払わなくてはならないgas Fが決定するというメカニズムです。

ここでKの取りうる範囲は0<K<2です。なぜならば、K=2の場合preBlockGas/preBlockMaxGas=0であればcurBlockFeeが0になるからです。K>2の場合、curBlockFeeは負の数になります。

取引をするトランザクションメーカーは、あらかじめ与えられた手数料を、マイナーではなく、イーサリアムのスマートコントラクトに支払います。この手数料は、上記の式から分かる通り、ブロックがつくられるたびに変更され、その額は、現在のブロックではなく、1つ前のブロックによって決まります。

前のブロックで、処理されたトランザクション数がブロックキャパシティーの半分を超えると、次のブロックでは取引料をアップ、半分を下回ると取引料がダウンします。これによって、1ブロックに入るトランザクション数が常にキャパシティーの半分前後になるように、手数料が調整されることが見込まれます。また、このモデルはトランザクションセンダーが自分の理想的な指値を表明することによって改善をすることもできそうです。

ここで面白いのは、gasを直接マイナーに支払うのではなく、スマートコントラクトに支払うことで、徴収したgasをブロックを作成したマイナーに間接的に支払うだけではなく、ネットワークの維持に貢献したステークホルダーに対して支払うなど他の選択肢もでてくることが見込まれます。

これによって、トランザクション手数料をマイナーが直接的に操作できる余地はなくなるので、1位価格と2位価格オークションで問題であった、正直表明とカルテル阻止を実現できる可能性があります。

しかし、この公式によるgasの配分で未解決な問題は、マイナーへのインセンティブ設計です。報酬はマイナーへ直接的に支払われるのではなくスマートコントラクトを介して徴収したgasを再分配するという形で間接的に支払われることになります。そのため、再分配時にどのようなルールに則って分配するのか?いかにしてマイナーへのインセンティブ設計をするのか?という点は議論の余地があります。

参照: