今週起こった出来事の中で比較的話題になったものとして、モネロに対する51%攻撃がありました。これはQubicという「useful-Proof-of-Workを通してオープンソースの真のAIを実現し誰もが使えるようにする」とうたう怪しげな草コインプロジェクト(実質的にはトークンつきマイニングプールのようなもの)が仕掛けたものです。具体的にはモネロのマイニング収益によって独自の草コインを買い支えるという構造になっているのですが、ある程度盛り上がってきてハッシュレートが51%攻撃を成功させるのに十分な水準に達していたということですが、詳しい動機は不明です。

ところが、驚きなのはそこの草コインとのつながりの部分だけであって、全体的に見れば時間の問題だったとも言えるでしょう。今日はなぜモネロに対する51%攻撃は容易いことだったのか解説します。

💡
なお、51%攻撃が成功したといってもそれほど長期間のReorgが発生したわけではないので、モネロを受け取る方は決済に必要な承認数を長く取れば大きな問題は避けられるでしょう。

・「ASIC耐性」は51%攻撃に対する脆弱性を受け入れることにほかならない

・アルトコインに対する51%攻撃自体も時折発生している

・51%攻撃自体、過剰に恐れられている側面がある

「ASIC耐性」は51%攻撃に対する脆弱性を受け入れることにほかならない

Proof of Workを採用する多くのチェーンはビットコインのように採掘アルゴリズムに対してASICが開発されています。ASICはマイニングの歴史でCPUやGPUを置き換えたように電力効率が非常によいマイニング機材ですが、ASICの製造会社が数少ないことやマイニングプールの偏りに寄与するという見方から分散性の敵とみなされることがあります。

そこで、モネロなどはいわゆる「ASIC耐性のある採掘アルゴリズム」を採用し、ASICの登場を防いできたわけですが、実はそれ自体が51%攻撃を招きやすくするという皮肉な副作用のある施策でした。

このトピックについてはProof of Work時代のイーサリアムに導入が提案されていたASIC耐性のある採掘アルゴリズム:ProgPowと、ASIC耐性による中央集権化リスクについて書いた過去記事をご覧ください。

ASIC耐性と中央集権化:イーサリアムへのProgPowの導入
PoWによってブロックチェーンが生成される場合、PoWに使用されるハッシュ関数は非常に重要な要素となります。例えば同じアルゴリズムを採用するコインが複数あるとハッシュレートの綱引きが起こったり、ハッシュレートが小さいコインにおいて51%攻撃の可能性が増したりします。 今日は、急遽イーサリアムに導入予定となり物議を醸したProgPowに触れ、PoWにおけるASIC耐性についておさらいしたいと思います。 PROGPOW イーサリアムは現在はEthashというアルゴリズムを使ってマイニングを行っています。これはビットコインなどにおけるシンプルなSHA-256とは異なり、メモリ負荷が高いアルゴリズムなので、すでにASIC耐性があると言われます。これを“Memory-hardness”といいます。 BTC用のASICは基本的には並列にハッシュ値を計算する大量の集積回路を積んでいるだけなので、無駄が少なく、電気効率がいいです。 一方、アルゴリズムにMemory-hardnessがあると、並列に処理をする場合はその分メモリ容量が必要になり、ASIC自体のコストが嵩み、GPUマイニングに対する

簡単に説明すると、ASIC耐性のある採掘アルゴリズムはCPUでのマイニングを前提としています。しかし、世の中にCPUによる計算リソースは潤沢に存在し、いとも簡単に時間単位でレンタルできてしまいます。ASICは全体のハッシュレートに対してレンタル可能な数量が少ないので機材の購入が前提となり、51%攻撃にランニングコストとは別に膨大な費用がかかるわけですが、CPUは世界中のクラウドコンピューティング能力を活用すればほぼランニングコストだけで攻撃に使えます。

💡
レンタル可能な割合が大きくなると、ASICでもやはり51%攻撃リスクは高まります。例えばビットコインと同じ採掘アルゴリズムを採用しているが時価総額の小さいコインなどは非常に大きなリスクにさらされます。同様に、リースなどによりASICを実質的に長期レンタルできることも潜在的にリスクになっているかもしれませんが、やはりネットワークのハッシュレートに対して半数を目指すのは(在庫や貸し手を見つけるところから)大変です。

そういった特徴から、ASIC耐性のある採掘アルゴリズムの採用は既存のコンピューティングリソースを使った51%攻撃に対して脆弱になる選択をしているわけです。モネロの決断はそういった意味では(51%攻撃を想定するなら決済とみなすまでの所要時間を増やして対応するしかないため)ユーザビリティより政治的な判断だったと言えるでしょう。

アルトコインに対する51%攻撃自体も時折発生している

また、ビットコインに対する51%攻撃はコストが莫大なため発生していないと考えられますが、アルトコインに対する51%攻撃は時折発生しています。

2018年にはVerge(XVG)という仮想通貨に対して51%攻撃が仕掛けられました。当時のVergeは5種類の採掘アルゴリズムのいずれでもマイニングできる仕組みになっており、そのうちScryptというライトコインも採用していたアルゴリズムに対してはASICが存在し、ネットワークのハッシュレートの過半がレンタル可能だったため攻撃に使用されました。XVGはその後も2018年内や2021年などにマイニング関連の脆弱性を突かれて51%攻撃のようなものを受けています。

Ethereum Classic(ETC)やBitcoin Gold(BTG)、モナコイン(MONA)なども2018~2019年に51%攻撃の対象になっており、対策(入金処理時の必要承認数)が足りなかった取引所が二重支払いの被害を受けています。

その後は草コイン全般の入金に必要な承認数が業界的に引き上げられたのもあり、51%攻撃自体は減少傾向にありましたが、それでもニッチなコインにおいては時折発生する事象です。

51%攻撃自体、過剰に恐れられている側面がある

では、Qubicに51%攻撃を受けたモネロは「もう終わり」なのでしょうか?

モネロが51%攻撃に遭った根本的な理由は以下の2点に整理されます:

・マイニング報酬の総額が小さい(時価総額が低い、新規発行や手数料が少ない)

・汎用的なハードウェアでマイニングできてしまう(攻撃開始までの資本コストが低い)

どちらもモネロユーザーだけですぐに対処できる問題ではありませんが、ASIC耐性へのこだわりを捨ててしまうのも1つの手かもしれません。短期的には今と同様に51%攻撃に脆弱かもしれませんが、長期的にはASICの開発へ道が開けます。あるいは、ライトコインで採用されているScryptを採用する手もあるかもしれません。(モネロの技術によって難しい可能性もあります。そこまでモネロに関して知見がないので不明ですが、時価総額の比率的にはなんとかなりそうな気はします)

価格面でもASICに関しても、モネロの規制当局からの扱いによって少し難しいかもしれませんが…。

そもそもの話ですが、一般的に51%攻撃というのが過度に恐れられている印象があります。二重支払いの被害に遭わないためには決済に必要な承認数を低く見積もりすぎないだけで十分ですし(攻撃コスト>被害額になれば大丈夫)、みんながそう対策していれば51%攻撃に経済合理性はなくなります。

逆に経済合理性を捨てて、トランザクション生成を阻害する意図での51%攻撃も考えることはできますが(特にモネロの場合、権力に潰されるルートの1つ?)、未決済の取引手数料が溜まれば溜まるほど51%攻撃に対抗する側が儲かる可能性が出てきます。Proof of Workは常に経済合理性のある側の味方をします。

💡
逆に経済合理性を考えない主体による攻撃は予想外に発生する仕組みでもあります。長期的に持続するのは困難ですが。

まさに今回の場合はQubicの視点で51%攻撃することに経済合理性はおそらくありませんでした。宣伝効果を狙ってのことだったのかもしれませんが、そもそも強制的に草コインを買わされるようなモネロマイニング自体に経済合理性がありませんし、そこを百歩譲ってもマイナーとして金銭的に得したわけではなかったでしょう。そう思うと、そのうち過ぎ去る脅威です。モネロは生き残るでしょう。

まとめ

・ASIC耐性は分散性を高めそうな雰囲気はあるが、汎用ハードウェアによるマイニング可能性は51%攻撃に対してチェーンを脆弱にする。

・アルトコインにおいて、レンタルしたハッシュレートを使った51%攻撃は2018~2019年頃に頻発した。その後、各取引所が入金処理に必要な承認数を大きく増加させたことが根本的な対策となり減少した。

・今回の攻撃には宣伝効果以外に経済合理性がないと思われるので、特に対策しなくても再発可能性は低そうだが、モネロユーザーは決済に必要な承認数を十分に長く取る必要があることを自覚しただろう。また、ASIC耐性を捨てるべきかの議論も出てくる可能性がある。