『マスタリング・イーサリアム』の翻訳に参加しました。

イーサリアムにおけるブロックサイズであるブロックガスリミットはどのように決定されるか?

暗号通貨

少し前に「Ethereum in 25 minutes」の記事を書いた時にEthereumのブロックガスリミットについて言及しました。

ブロックガスリミットはビットコインにおけるブロックサイズのような役割を果たします。なぜなら各トランザクションのガスリミットの総計が1ブロックのガスリミットを超えないようにしか、マイナーはトランザクションをブロックに格納することができないからです。

例えばガスリミットが各10, 20, 30, 40, 50の5つのトランザクションがあり、ブロックガスリミットが100であるとしましょう。10, 20, 30, 40(合計100)の4つを選んだ場合、ガスリミットが50のトランザクションを含めることはできません。どのトランザクションをブロックに含めるかはマイナー次第なので、ガスリミットが各10, 40, 50の3つのトランザクションを含めることも可能です。

創設者による「Ethereum in 25 minutes」でワールドコンピュータを理解する
11月1日、Devcon3の初日に、Ethereum創設者のVitalik氏によるEthereumの概説が行われました。その名も「Ethereum in 25 Minutes, Version MMXVII」で、25分でEthereumを簡...

ビットコインの場合、ブロックサイズの上限は現在1MBで固定されています(厳密にはSegWitによりBlock weightの上限が4MBに定められています)。ビットコインキャッシュはこれを引き上げてブロックサイズを8MBに変更しました。いずれの場合もブロックサイズが固定されていて、ブロックサイズを超えるトランザクションを1つのブロックに格納することはできません。故にトランザクション数が大幅に増加した場合には、未承認トランザクションが増えることになります。

またビットコインキャッシュの誕生がそうであったように、ブロックを引き上げるにはハードフォークが必要で、ハードフォークは必然的にネットワークが分裂する危険性を内包しているため慎重に扱われます。ハードフォークとソフトフォークの区別が怪しい方は以下の記事をご覧下さい。

【しりとりで学ぶフォーク】ハードフォークとは何なのか?ソフトフォークとは何が違うのか?
最近フォークが流行っています。暗号通貨界でフォークといえば「分岐(厳密には分裂という言葉の方が正しい)」を意味します。ビットコインがソフトフォークでSegWitをアクティベートさせたと思いきや、ビットコインキャッシュがハードフォークを行いB...

Ethereumにおけるガスリミット

まずは以下の画像をご覧下さい。直近24時間のブロックガスリミットの推移です。細かく上下していることが見て取れます。

下図は数か月スパンでのブロックガスリミットの推移を表しています。日々微妙な変動はあるものの、4,5ヶ月単位ではほぼ一定のブロックガスリミットが採用されていることがわかります。下の図では分かりづらいですが、「CryptoKitties」の影響でトランザクションの詰まりが発生したため、10日よりブロックガスリミットが大幅に引き上げられています(約6.7milから約7.5mil)。

ブロックガスリミットはマイナーの投票によってトランザクション毎に変動する

イーサリアムのブロックガスリミットは、ブロックを採掘したマイナーによって決定されます。ブロックを採掘したマイナーは、ブロックガスリミットを引き上げるか引き下げるかを投票し、それが次のブロックのブロックガスリミットとして採用されます。引き上げ率と引き下げ率はどちらも1/1024 (0.0976%) です。

実際のトランザクションで、マイナーの投票とブロックガスリミットの変動を見てみましょう。

Blocks – etherchain.org – The ethereum blockchain explorer

上から4つブロックガスリミットと投票を抜き出してみると、それぞれ

7,737,625 Down
7,745,173 Down
7,752,721 Up
7,745,173 Down

ですね。

若干の誤差はありますが、それぞれ投票結果に従いブロックガスリミットが1/1024ずつ増減していることが分かります。

つまりEthereumにおけるブロックサイズ(の役割を果たすブロックガスリミット)は可変であり、マイナーの投票によって変動するものだということです。

ビットコインはブロックサイズを巡って激しい議論が交わされ、良くも悪くも多くの時間がブロックサイズ論争に費やされていますが、Ethereumにおいてはこのような可変的なブロックガスリミットが組み込まれているおかげで、ブロックガスリミットを巡って大きな混乱は今のところ起きていません。

上でも紹介した通りCryptoKittiesに端を発するトランザクションのつまりを解消するために、マイナーたちの投票によってガスリミットが徐々に引き上げられ、トランザクションの渋滞は緩和されました。

ただし、ブロックガスリミットを引き上げるということは、より多くのトランザクションを1つのブロックに格納できるようになるということです。そして多くのトランザクションを捌くためには、より高い処理能力が必要になることに注意して下さい。

Ethereum Average BlockSize Chart

ビットコインにおけるブロックサイズ論争で、スモールブロック派が懸念することの一つとして「ブロックサイズの引き上げによるビットコインネットワークの中央集権化」があります。ビットコインネットワークに参加するために必要とされる最低限の処理能力が上がってしまえば、当然ネットワークに参加できる機器や回線の数は限られてしまうわけで、それによって中央集権化が起こってしまうという懸念です。

この部分に関してはEthereumも同様です。

故にEthereumが柔軟なブロックガスリミットを採用しているからといって、Ethereumがスケーラビリティ問題においてビットコインよりも進んでいるとは言えないと私は思います。


ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER EIP-150 REVISION (759dccd – 2017-08-07): 4.3.4. Block Header Validity
Ethereum, Gas, Fuel, & Fees – ConsenSys Media