PoWによってブロックチェーンが生成される場合、PoWに使用されるハッシュ関数は非常に重要な要素となります。例えば同じアルゴリズムを採用するコインが複数あるとハッシュレートの綱引きが起こったり、ハッシュレートが小さいコインにおいて51%攻撃の可能性が増したりします。
今日は、急遽イーサリアムに導入予定となり物議を醸したProgPowに触れ、PoWにおけるASIC耐性についておさらいしたいと思います。
PROGPOW
イーサリアムは現在はEthashというアルゴリズムを使ってマイニングを行っています。これはビットコインなどにおけるシンプルなSHA-256とは異なり、メモリ負荷が高いアルゴリズムなので、すでにASIC耐性があると言われます。これを"Memory-hardness"といいます。
BTC用のASICは基本的には並列にハッシュ値を計算する大量の集積回路を積んでいるだけなので、無駄が少なく、電気効率がいいです。
一方、アルゴリズムにMemory-hardnessがあると、並列に処理をする場合はその分メモリ容量が必要になり、ASIC自体のコストが嵩み、GPUマイニングに対する優位性が失われる…という理論です。
ちなみに、Memory-hardnessがあっても、メモリが速いほうが処理速度は上がるので、基本的には汎用PCでのCPUマイニングではなく、大量のGPUと高速なメモリを積むグラフィックカードでのマイニングが行われます。(GPUマイニング)
しかし、ASIC耐性があると言われていたにもかかわらず、EthashのASICが2018年に登場し販売されています。汎用ハードウェアであるGPUより、無駄を省いたASICのほうが同じハッシュレートを安価に提供できることが理由です。
今回急遽導入されようとしているProgPowはそれを嫌った、より強いASIC耐性を持つEthashの発展版として提案されました。ProgPowでは複数種類のハッシュ値の求め方があり、計算方法のランダム性を高めることで、汎用ハードウェアであるGPUを有利にします。
「ASIC耐性化」の前例
最初からASIC耐性のある暗号通貨もありますが、多くはそうではありませんでした。しかし、時代とともに多様なASICが登場しだし、様々なコインにおいてアルゴリズムの変更によるASIC耐性化が多く議論されたのが2018年でした。
時期的にはフォークコインの流行と、フォークコインに対する51%攻撃の流行と重なります。「ASIC耐性を謳うフォークコインを作りたい!」という需要と、実際に51%攻撃耐性を求める需要によるものだったと思います。
基本的に、これらの反ASIC運動の動機は「ビットコインにおけるようなマイニングファームへのハッシュレートの集権化を防ぐ」という目的にあります。この効果の是非は後述しますので、まずは反ASICの立場を取った代表的なコインとしてモネロについて触れます。
モネロは2018年4月のフォークで元々使っていたCryptonightというアルゴリズムを改変し、「ASICの登場を妨げる」という意図でそれ以来半年ごとにマイニングアルゴリズムを変更するなどの定期的なハードフォークを行っています。半年ごとの変更がASICの採算性を防ぐほか、改変の内容自体にもMemory-hardnessとランダム性を高めて汎用的なハードウェアの優位性を高める効果があります。
しかし、フォークコイン全盛期だった2018年はこれらのハードフォークの際に多くのモネロのフォークが誕生しました。ハッシュレートの半分ほどのマイナーが移動した「モネロ・クラッシック」などです。定期的なハードフォークのたびに半分かそれ以上のハッシュレートを失ってきたので、モネロのハッシュレートは伸び悩んでいました。
ちなみに初回の減少はASICの退場によるものも含むかもしれませんが、それ以降はウイルスなどによってインストールされたマイニングソフトの更新ができず、ハードフォークに対応できなかったことによる影響の可能性が高いです。無価値なフォークコインを掘り続けるマイニングウイルス…。