Neutrinoで働くブロックチェーンエンジニアのブログ

渋谷の専門特化コワークNeutrinoに入居してブロックチェーンエンジニアとして働いています。元丸の内。(Neutrino運営企業とは直接関係ありません)

Constantinopleハードフォーク前後のEthereumデータを色々可視化してみる

EthereumのハードフォークであるConstantinopleがブロックナンバー7280000、日本時間の3月1日に行われました。ハードフォーク前後によって変わった事をデータから見てみる趣旨の記事です。

利用ツールは以下です。

  • Tableau Desktop 2018.3
  • Google BigQuery

Constantinopleで取り込まれたEIP

Constantinopleのアナウンスは以下記事です。

Ethereum Constantinople/St. Petersburg Upgrade Announcement

https://blog.ethereum.org/2019/02/22/ethereum-constantinople-st-petersburg-upgrade-announcement/

  • EIP 145: Bitwise shifting instructions in EVM

    • EVMにおけるBit単位のシフト命令の実装。これまでも同様の実装はできたがコストが高かった。
    • 0x1cを右シフト(SHRオペコード)、0x1dを左シフト(SHLオペコード)として実装する
  • EIP 1014: Skinny CREATE2

  • EIP 1052: EXTCODEHASH opcode

  • EIP 1234: Constantinople Difficulty Bomb Delay and Block Reward Adjustment

    • 採掘難易度が徐々に上がっていくディフィカルティボムを12ヶ月遅らせるのと、ブロック報酬を3から2ETHへの減少提案

BigQueryからデータの抽出

Google BigQueryからEthereumのデータを抽出してみます。リアルタイム性はないのですが、BigQueryによってデータが取りやすくなっています。

f:id:naomasabit:20190327204705p:plain

Gasと生成時刻データの抽出

"Constantinopleで取り込まれたEIP"から察するに、消費Gasが減少している、ブロック生成時間が早まっているなどの変化があるのではという仮説があります。

そのため生成時刻とブロックに取り込まれたトランザクションで利用されたガスを取得してみます。

SELECT
      timestamp, gas_used
FROM
    `bigquery-public-data.ethereum_blockchain.blocks` 
WHERE     /*Constantinople Hardfork Feb-28-2019 07:52:04 PM +UTC*/
    timestamp BETWEEN timestamp("2019-02-21 00:00:00 UTC") AND  timestamp("2019-03-07 00:00:00 UTC")

Tableauでハードフォーク前後の情報をもろもろ可視化

データの可視化にTableauを使います。GUIで簡単にグラフを作成できるおすすめツールです。有料ソフトウェアですが無料トライアルもあります。

ディフィカルティの中央値

1分ごとのディフィカルティについて中央値を視覚化しています。がくっと下がっていますね

f:id:naomasabit:20190327205606p:plain

ブロック生成時間の中央値

1分ごとのブロック生成時間の中央値を視覚化しています。

Constantinopleを境に20秒程度だったのが12秒くらいまで早まっています。

f:id:naomasabit:20190327205503p:plain

1時間ごとのブロック生成数

生成時間が早まったことにより、当然ながら、1時間ごとのブロック生成数も100~200程度だったのが、250~300程度まで増加しています。視覚化するとわかりやすいですね。

f:id:naomasabit:20190327205625p:plain

ブロックに取り込まれたトランザクションで利用されたガスの中央値

ブロック単位のガスは減少しています。EIPの効果も考えられますが、ブロック生成が早くなってブロックに取り込まれるトランザクションが少なくなった影響が大きいのではないかと推測しています。(トランザクションごとのGasを深掘りすればより詳細が分かるかもしれません)

f:id:naomasabit:20190327205753p:plain

まとめ

Constantinople前後の大きな変化は

  • ブロック生成時間が20秒程度だったのが12秒くらいに
  • 1時間ごとのブロック生成数も100~200程度だったのが、250~300程度まで増加

となっています。

報酬は3ETH->2ETHとなり約3分の2程度になりましたが、直後のブロック生成数は1.5〜2.0倍程度となっていたので、ETHを増やすという意味ではハードフォーク前後のマイニングはお得なのかもしれません。