ニュース解説

EthereumのASICマイニング耐性を高める次期アルゴリズム「ProgPoW」とは?

PoS完全移行までの一時的な仕様だが実装時期は未定

(Image: Shutterstock)

 Ethereumの次期コンセンサスアルゴリズムには、ASIC耐性を高める「ProgPoW」が採用される見込み。これは1月4日に開催されたコア開発者会議(Core Devs Meeting)において、Ethereum開発者らが大筋で合意したものだ。実装時期は早くとも2月末に延期されたネットワークアップデート「コンスタンティノープル」以降とされている。「ProgPoW」は現行のアルゴリズム「Ethash」を発展させ、ASIC耐性を高めるもの。ASICを利用したブロックチェーンの寡占化を防止するため導入される。

 ブロックチェーンのマイニングにおいて、しばしばASICマシンというマイニング専用の機器が投入される。これはブロック生成における計算にのみ特化した機器で、ブロックチェーンが採用するコンセンサスアルゴリズムによっては一般的なPCが行うGPUマイニングに対して数千倍という時間効率を発揮する場合もある。昨今、ASICマシンの集中投入によるハッシュパワーの一極化は、51%攻撃という形でその問題が顕在化している。

 Ethereumでは、そういったブロックチェーンの寡占を防ぎ、非中央集権的ネットワークを実現するという理念がある。そのため、ASICマシンによるマイニングの優位性についてはコミュニティ内で議論が交わされてきた。

 「ProgPoW」はASIC耐性を高め、現行の「Ethash」が備えるASICの採掘効率200%に対して120%程度まで抑えることが可能だという。当然、ASICマシンを開発する企業らは実装に反発しており、マイナーの撤退によるブロック生成時間の長期化といった問題も懸念されている。そのため、実装時期については決定しておらず、1月18日実施のコア開発者会議では、リスクを最小化するためにEthereumバージョン2.0を実装する1、2か月前でよいとする意見も出ている。

 以下では、Ethereumにおける現行のコンセンサスアルゴリズム「Ethash」と新コンセンサスアルゴリズム「ProgPoW」について、その仕組みを簡単に解説する。掲載内容はProgPoWの提案書(EIP-1057)およびソースコード付属の文書に準ずる。

Ethereumの現行コンセンサスアルゴリズム「Ethash」について

 Ethereumは2020年以降に計画しているバージョン2.0にて、コンセンサス(合意形成)アルゴリズムをPoW(Proof of Work:プルーフ・オブ・ワーク)方式から、より効率的かつ非中央集権的とされるPoS(Proof of Stake:プルーフ・オブ・ステーク)方式へ変更する予定である。今回説明する「ProgPoW」(Programmatic Proof of Work:プログラマティック・プルーフ・オブ・ワーク)というPoWに属するアルゴリズムは、バージョン2.0実装およびPoSへの完全移行がなされるまでの一時的な仕様であることを念頭に置く。

 Ethereumのネットワークは現在、コンセンサスアルゴリズムにPoW方式の「Ethash」(イーサハッシュ)を採用している。「Ethash」は巨大な有効非巡回グラフ(DAG)構造を取るため、従来のアルゴリズムに比べてメモリ使用量が格段に大きい。一方でCPUの計算処理にかかる負荷が小さいという特長を持つ。一般に計算が複雑であるほど優位性が大きくなるASIC(エーシック)には不向きな仕組みとなっている。

 そのため、EthereumにおけるASICによる採掘効率は、GPUによる処理に対して最高でも2倍程度にとどまるとされている。これはBitcoinなどに採用されるハッシュ関数「SHA256」を使用したアルゴリズムと比較すると最高で500倍のASIC耐性を備えていることとなる。

 現在のEthereumは、「Ethash」のASIC耐性もあって理念とする非中央集権的ネットワークの形になっているといえる。しかし、今後予定しているアップデートにより、2つのコンセンサスアルゴリズムPoWとPoSの移行期間のような状態が訪れると、その均衡が崩れる可能性があるという。そうした懸念から、将来PoSへの移行をスムーズに行うため、「Ethash」のASIC耐性をさらに強めたPoWアルゴリズムとして「ProgPoW」が提案された。

Ethereumのマイニング内訳(2018年12月16日から2019年1月23日、Bitfly社のetherchain.orgより引用)

ProgPoW(Programmatic Proof of Work)とは

 「ProgPoW」(直訳するとプラグラム的PoW)は通常のPCによるGPUマイニングと専用のASICマシンとの採掘効率の差を縮めようというもの。これはEthereumの理念である非中央集権性を強化するものだという。ブロック生成における内部ループで「ランダム生成されたプログラム」を実行する必要があることから、「ProgPoW」と命名された。このプロセスは最新のGPU性能に最適化されており、ランダム性によって専用ASICに見られるパイプライン最適化手法の妨げになるという。

 「ProgPoW」では、5つの特性によりASIC耐性を高めるという。多くのASICはアルゴリズムに対する最適化というアプローチで設計されるため、「ProgPoW」は最適化の猶予を減らす方向性で、「Ethash」からの発展的内容として以下の5項目を改善・実装している。

  • 64ビットワードから32ビットワードのハッシュ関数に変更
  • Mix State(混合状態)の増加
  • メインループへの数学的ランダムシーケンスの追加
  • ランダムアドレスに対応した小容量低速キャッシュからの読み取りを追加
  • DRAM読み込みを128バイトから256バイトに増大

 「ProgPoW」の実装は、1月4日実施のEthereumコア開発者会議(Core Devs Meeting)で採択されている。ただし、「ProgPoW」の採用をめぐっては、コミュニティ間でも賛否両論がある。「ProgPow」の是非について、ブロックチェーンの分析やマイニングソリューションを提供するBitfly社がTwitter上で実施したアンケートでは、ProgPoWの賛成票が過半数を割るという結果が出ている。その実装時期を巡っては今後もさらなる議論が必要となるだろう。