Ethereumハードフォーク
もうすぐ、EthereumのArrow Glacier Network Upgrade(Hard Fork)が行われます。
12/8頃といわれていますが、具体的にいつになるか知りたいこともありますよね。
Bitcoin Cashは日時でハードフォークなので予定を立てやすいですが、
Ethereumはブロック高でハードフォークであり、ブロック生成スピードは刻一刻と変わるので、いつになるか分かりません。
そこで、少しでも予想の幅を知りたいので、スクリプトを作ってみましょう。
なお、Ethereumハードフォークカウントダウンサイトはあります。
ethernodeは毎回ハードフォークカウントダウンしてくれて結構精度高いけど、今回のArrow Glacierはなぜかやってくれず、前回のLondonのままです。
etherscanもカウントダウンがありますが、精度悪いです。
というわけで、自分で予測するしかない!
スクリプト
↓こちらにJS製の予測スクリプトがあります。
git clone https://github.com/shu-kob/eth-web3apps
cd eth-web3apps
npm install
ソースコードを見ると、
const INFURA_API_KEY = process.env.INFURA_API_KEY;
とINFURAのAPI Keyを環境変数から呼び出しています。
INFURAでアカウント作って、API Keyを取得しましょう。
無料のでOKです。
環境変数にセットします。
ETHERSCAN_API=XXXXXXXXXXXXXXXXX
const hardForkBlockNumber = process.env.ETH_UPGRADE_BLOCKNUMBER;
とハードフォークブロック高を環境変数から呼び出しています。
今回のArrow Glacierだと、ハードフォークブロック高は13773000。
ETH_UPGRADE_BLOCKNUMBER=13773000
環境変数にセットしてあげます。
これらは何回か使うことを考えて、Macなら ~/.zprofile などに書いてあげるのもよいでしょう。
vi ~/.zprofile
export ETHERSCAN_API=XXXXXXXXXXXXXXXXX
export ETH_UPGRADE_BLOCKNUMBER=13773000
source ~/.zprofile
実行してみます。
node eth-upgrade-timing-estimation.js
結果は以下
現時点でのEthereum Mainnetハードフォーク予想日時(JST)
直近 10000 ブロック生成平均時間: 13.8458 秒 の場合: 2021/12/10 5:11:16
直近 50000 ブロック生成平均時間: 13.76354 秒 の場合: 2021/12/10 4:00:28
直近 100000 ブロック生成平均時間: 13.72382 秒 の場合: 2021/12/10 3:26:17
ブロック生成時間 12 秒の場合: 2021/12/9 2:42:50
ブロック生成時間 13 秒の場合: 2021/12/9 17:03:24
ブロック生成時間 14 秒の場合: 2021/12/10 7:23:58
ブロック生成時間 15 秒の場合: 2021/12/10 21:44:32
ブロック生成時間 16 秒の場合: 2021/12/11 12:05:06
ブロック生成時間 17 秒の場合: 2021/12/12 2:25:40
こう見ると、直近1万から10万のブロック生成平均時間が13秒台なので、
ブロック生成時間13〜14秒の2021/12/9夕方から2021/12/10朝くらいになるとわかります。
リアルタイム監視するなら日本時間では深夜になって辛そうですね。
INFURAのAPIは便利なので、ハードフォーク日時予測以外にもいろいろ活用してみましょう!