どうも墨汁うまい(@bokujyuumai)です。
イーサリアムは2021年初の大型アップデート「ベルリンハードフォーク」を実装しました。この実装ではイーサリアムのマイナーアップデートとなっていますが、イーサリアムクライアントOpenEthereum(元Parity)に不具合があり、一部サービスに影響が出ました。
本稿ではイーサリアムのベルリンアップデートのトラブルとETHにどのような影響があるのかについて解説を行います。
ベルリンアップデートとは?
イーサリアムのベルリンハードフォークとは、ブロックチェーン最大のエコシステムを持つイーサリアムの参加者全員が同意の上で実装する新たな「コンセンサスルール」を導入するアップデートです。
今回のベルリンは、イーサリアムの処理速度を向上させるなどの大きなアップデートではなく、イーサリアムを利用しているプロジェクトのコントラクトを実行するための演算を行うEVMの調整がメインとなっています。
そのためDeFi(分散型金融)やNFTユーザーなどは直接的な恩恵を受けるわけではなく、開発者側のためのアップデートということです。ユーザーや投資家が大きな影響を受けるのは7月に予定されているロンドンハードフォークであり、イーサリアムのビッグイベントの一つであると言えるでしょう。
イーサリアムクライアントとOpenEthereum
ベルリンは#1224400ブロックで実装されました。イーサリアムを利用するためにクライアント(ソフトウェア)は主にイーサリアムファンデーションが開発するGethとPolkadotのParityが開発していたOpenEthereum、そのほかにもBesuやNethermindといった複数の選択肢があり、開発者やサービス提供者は自由に選択することができます。
今回トラブルがあったのはGethの次に大きなネットワークシェアを持つOpenEthereumです。ベルリン実装から294ブロック後、つまり約1時間後に最新のブロックを同期できないという問題が浮上しました。
このトラブルはOpenEthereumのみに起こり、OpenEthereumをクライアントとして使用していたEtherscanなどのサービスで最新のネットワーク情報が取得できないという影響が出ました。
ブロック同期できない原因
今回の原因は、ベルリンでは実装しないものの今後実装を予定しているBLSプリコンパイルコントラクトのコードを残していたことが原因となっています。どういうことかというと、今後実装されるために用意していたコードを将来的に有効にできるようにしていたということです。
実際に実装する前にテストを行うロプステンテストネットでのバグテストではこの不具合は見つからず、今回たまたまプリコンパイルコントラクトを呼び出してしまったことがトリガーとなるという非常に珍しいトラブルでした。
問題は修正済み
既にOpenEthereumはこのバグを修正しており、ベルリン実装後の約5時間後に新しいバージョンが公開されています。
上記で見たようにこの問題はOpenEthereum固有の問題だったため、イーサリアムネットワーク自体には影響を及ぼしておらず、送金なども問題なく行えていました。
これはクライアントが複数ある利点であり、イーサリアムの強みであると言えるでしょう。2021年は手数料モデルの変更となるロンドンハードフォークを実装し、マイニングを終了してETH2と統合する「マージ」が年内に予定されており、イーサリアムの大きな変革の年となるでしょう。
▼墨汁サロンではイーサリアム2.0の最新動向や32ETHステーキングのやり方の解説や検証、テクニカル分析理論、最新のDeFiやファンダメンタルなどをより深く解説しています。