イーサリアムのハードフォーク「コンスタンティノープル」の技術的変更点のまとめ

イーサリアム

イーサリアムのハードフォーク「コンスタンティノープル」の技術的変更点のまとめ

2019 年 5 月 - 5 min read

概要

  • コンスタンティノープルとは
  • アップデート内容
  • まとめ

注:本記事は2019年1月13日時点で執筆されました。イーサリアムのハードフォーク「コンスタンティノープル」は後述のEIP1283に脆弱性が発見されたことから延期になり、2019年3月1日に正式にハードフォークが行われ、ネットワークのアップデートが完了しました。


イーサリアムのハードフォーク「コンスタンティノープル」が2019年1月16日前後に控えています。本記事では今回のハードフォークで具体的にどのような点が変更されるのか解説していきます。

コンスタンティノープルとは

イーサリアムのハードフォーク「コンスタンティノープル」は第3段階目の大型システムアップデートであるMetropolisのうちの第2段階です。

今回のシステムアップデートはハードフォークであるため、クライアントソフトウェアのアップデートを行わなければハードフォーク後のトランザクションやブロックを扱うことができなくなります。そのため、イーサリアムのネットワークにノードとして参加している方はお早めのアップデートをお勧めします。

ハードフォークとソフトフォークの違いやブロックチェーンのスプリット(分裂)に関してはこちらの記事からどうぞ。

今回のアップデートはハードフォークではありますが、チェーンがスプリットすることによって2つの通貨が生まれることはほぼないと考えられます。

アップデート内容

今回のハードフォークでアップデートされるのは大きく5点であり、ほとんどはパフォーマンス改善に関するものです。
以下、今回のハードフォークで実装されるEIP(Ethereum Improvement Proposal)を解説していきます。

  • EIP145

この提案ではBitwise shifting instructionと呼ばれるものがEVMに追加されます。Bitwise shiftingというのは既存のものより効率的な演算方法で、ビット列の各桁を左右に移動させるというプロセスであり、そのための命令が実装されます。これによりEVMの計算効率が向上し、これまで左右の移動を実行するたびに35gasかかっていたものが、今回のアップデートで3gasと大幅に改善することになります。

公式の具体的な仕様はこちらからご確認ください。

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md

  • EIP1052

EIP1052では、スマートコントラクトが他のスマートコントラクトとコードを効率的に検証できるオペレーション方法が提案されています。これまではコントラクトのコードの検証のためにはコード全体をプルした上で検証しなければなりませんでしたが、今回のアップデートによってコードのハッシュを検証するだけで済むようになります。このコントラクトはコントラクトが他のコントラクトを実行する際のプロセスが効率化されるため重要なものです。
公式の具体的な仕様はこちらからご確認ください。

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1052.md

EIP145とEIP1052は共にEVMの処理の効率化に関するものです。これによりイーサリアムのネットワーク利用コストが下がります。

  • EIP1014

この提案ではイーサリアムにステートチャネルのために重要なプロセスが追加されます。ステートチャネルはスケーラビリティ問題を解決するためのレイヤー2技術の一つで、オフチェーンでのトランザクションの処理を可能にします。ステートチャネルについての解説はこちらからご覧ください。

具体的には、まだオンチェーンに存在していないアドレスとのやり取りが可能になるようです。

「まだオンチェーンに存在していない」という概念は「counterfactual」と呼ばれています。これについても先ほどのステートチャネルとサイドチェーンの解説記事からご確認ください。

また、counterfactualという概念の技術的な詳細はGunosyブロックチェーンブログのこのポストが役に立つと思われます。

この辺りの具体的な仕組みは難解なため、基本的にはステートチャネルを問題なく実現するために必要なアップデートだという程度の理解で問題ありません。

気になる方は株式会社Chaintopeの中城さんのブログポストを参考にしてください。

公式の具体的な仕様はこちらからご確認ください。

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1014.md

  • EIP1234

EIP1234は一般に広く関係する提案で、ブロック報酬の減少とディフィカルティボムの12ヶ月の延期が含まれます。

ブロック報酬とは、ブロックチェーンのネットワークにノードとして参加し、トランザクションの検証・承認を行い、ブロックを生成(マイニング)に成功したことに対する報酬として与えられるものです。これまでのブロック報酬は3ETHでしたが、今回のアップデートによって2ETHに減少します。これにより、イーサリアムのインフレーション(新規発行率)が下がります。

ディフィカルティボムとはマイニングの難易度を計画的に上昇させ、ブロック生成時間を徐々に長くしていくアルゴリズムです。これは特に大きなハードフォークの際にチェーンがスプリットしてしまわないための設計です。ディフィカルティボムにより、ブロックの生成時間が長くなるにつれ、最終的にそのチェーンでのブロック生成がほぼ不可能となります。

ハードフォークのアップデートを受け入れないと将来的にそのチェーンでのマイニングがほぼ不可能となることで、ノードがハードフォークを受け入れソフトウェアをアップデートするインセンティブとなっています。

今回ディフィカルティボムが延期されたのはイーサリアムのコンセンサスアルゴリズムであるProof of WorkからProof of Stakeへの移行の開発の遅延が原因です。

イーサリアムのブロックに関する解説はこちらからご覧ください。

また、公式の具体的な仕様はこちらからこちらからご覧ください。

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1234.md

  • EIP1283

この提案ではSSTOREというopcodeに関するgas算出方法が変更されます。これによりコントラクトのストレージ周りにかかるgasを減少させることができます。
上記のいくつかの提案と同様、ほとんどの人はコードレベルで理解する必要はなく、この提案に関しても、ストレージにかかるgasが効率化されて減少するということが理解できれば結構です。
公式の具体的な仕様はこちらからご覧ください。

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1283.md

まとめ

今回のシステムアップデートによるハードフォークはチェーンの分裂の可能性もほぼなく、コンセンサスアルゴリズムの変更などもないため、微細な変化のように感じられますが、今後のイーサリアムのアップデートによる発展には欠かせない準備のようなものとなっています。イーサリアムの開発には多くの遅延が発生していますが、様々な検証を経て着実に向上しているため、今後も注目に値するでしょう。


参考