情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

暗号通貨の採掘方式

暗号通貨の採掘方式についてまとめてみます。

1. SHA-256

最初の分散型の暗号通貨であるビットコインはブロックのハッシュ値を計算するアルゴリズム(ハッシュ関数)としてSHA-256を採用しました。
なぜSHA-256を採用したのかはビットコインの謎めいた作者であるサトシ・ナカモトしか知らないことですが、恐らくはビットコインが開発されていた時点で最も広く使われていて、セキュリティ強度的にも高いハッシュ関数がSHA-256だったからなのだと思われます。
SHA-256の特徴はGPUやFPGAやASICでも採掘することができ、その方がCPUで採掘するより効率的だということです。GPUの方がCPUより100倍以上効率的に採掘することができます。
最初期はGPUマイナーなどもまだなく、採掘している人も少なかったのでCPUでも採掘することができましたが、その後、より効率の良い採掘方法を求めて、GPUマイナー、FPGAマイナー、ASICマイナーとどんどん効率の良いマイナーが開発されていくことになりました。
今ではCPUで採掘することは不可能に近く、ビットコインを採掘しようと思ったらASICマイナーを大量に調達する必要があります。電気代もばかになりません。そのようなことができるのは一部の資本家のみで一般人には手の出ない世界になってしまいました。
そして、一部の資本家のみによって支配される通貨システムというのは、ビットコインが目指していた分散型の暗号通貨とは対立するものです。
このことが、GPUマイナー、FPGAマイナー、ASICマイナーなどが作りにくい(作るのに多大なコストが掛かる)ハッシュ関数を採用する、あるいは、開発する動機になりました。

2. Scrypt

そこで注目されたハッシュ関数がScryptでした。
このハッシュ関数の特徴はハッシュ値を計算する際にメモリをたくさん使わなければならないということです。これにより、GPUマイナーなどを作りにくくすることが期待されました。
ブロックのハッシュ値を計算するアルゴリズムとしてScryptを採用した最初の暗号通貨はTenebrixでした。そのすぐ後、ライトコインにも採用され、Scryptを利用した暗号通貨がブームとなりました。
しかし、結局GPUマイナーなども開発されてしまいました。そして、GPUの方がCPUより10倍以上効率的に採掘することができます。
ビットコインのSHA-256よりはましですが、状況が根本的に解決されたわけではありませんでした。

3. Quark

別のアプローチでGPU耐性(GPUマイナーが作りにくいことやGPUマイナーがCPUマイナーに比べて効率的でないこと)などを達成しようとした動きもありました。
それがQuarkに代表される複数のハッシュ関数をつなげるというアプローチでした。
つまり、単一のハッシュ関数でハッシュ値を計算するのではなく、あるハッシュ関数でハッシュ値を計算した後、その結果のハッシュ値を更に別のハッシュ関数に入力してハッシュ値を計算して、更に・・・と続けていく訳です。
Quarkの場合はBlake、BMW、Groestl、JH、Keccak、Skeinという6種類のハッシュ関数をつなげて1つのハッシュ値を計算するアルゴリズムとしました。
このようなアプローチの狙いはGPUマイナーなどを作る手間を増やすことです。6種類のハッシュ関数を使えば、1種類しか使っていない場合より、GPUマイナーなどを開発するのに6倍の手間が掛かるという発想です。
この場合も、ビットコインのSHA-256よりはましになっても、状況が根本的に解決される訳ではありません。

4. X11

Quarkの後に出てきたのがX11ですが、これはQuarkと全く同じアプローチで、6種類ではなく11種類のハッシュ関数を使うというだけです。ダークコイン(現在はDASHと呼ばれています)が初めて採用しました。
この方式でも、結局GPUマイナーなどが開発されてしまいました。そして、GPUの方がCPUより5倍以上効率的に採掘することができます。
ビットコインのSHA-256やライトコインのScryptよりはましですが、状況が根本的に解決されるということにはなりませんでした。

5. Scrypt-N、Scrypt-jane

Scryptを改良しようという流れもありました。
ハッシュ値を計算する際にScryptよりもっとたくさんメモリを使わなければならないようにしようということです。
やはり状況が根本的に解決されたわけではありませんでした。

6. Primecoin

全く別の採掘方式を採用した暗号通貨もありました。
Primecoinは採掘に素数を利用したものです。
ビットコインなどの暗号通貨の問題点として、採掘に大量のエネルギーが注がれているのに、採掘の結果として生み出されるブロックのハッシュ値には何の価値もないという点があります。厳密に言えば、暗号通貨のセキュリティとしては大いに役に立っているのですが、それ以外の価値はないということで、ビットコインの価値が0だと思っている人から見ればハッシュ値の価値も0だということです。
この点をある程度解決しようとしたのがPrimecoinでした。採掘に素数を利用することで、採掘の結果として学術的に有用な素数が生み出されるようにしようとしたのです。
Peercoinのアプローチはこの点では画期的でしたが、暗号通貨の採掘方式としては幾つか問題点があり、他の暗号通貨で広く使われることはありませんでした。

7. Riecoin

Peercoinと同様に、しかし、Peercoinとは別の方法で素数を利用したものとしてRiecoinがあります。

8. Momentum

ハッシュ関数を使うものの、ビットコインなどの単純にブロックのハッシュ値を計算するものとは決定的に異なるアプローチを提示したのがMomentumです。
Momentumの方式を簡潔に説明しましょう。
まず、ハッシュ関数でブロックのハッシュ値を計算します。このハッシュ値をHとしましょう。
次に、ハッシュ関数でH + Aのハッシュ値を計算します。ここでAは任意の値でこの値を変えて沢山のハッシュを計算していきます。
そして、この沢山のハッシュ値の中から、H + Aのハッシュ値とH + A'のハッシュ値の一部が一致していて、更にH + A + A'のハッシュ値がブロックチェーンの採掘難易度によって決まる値より小さくなる組み合わせを探し出します。
これがMomentumの全貌です。この方式のポイントは沢山のハッシュ値を計算して組み合わせを探し出さなければならないという点です。これは計算した沢山のハッシュ値(厳密には任意の値Aとハッシュ値の組)を全て記憶しておかなければならないということを意味します。
つまり、大量のメモリが必要という訳です。
MomentumはBitSharesで利用されています。

以上、暗号通貨の様々な採掘方式についてまとめてみました。暗号通貨の世界は急速に進歩していますので、今後また新たなアプローチがブームになることもあるかもしれません。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-暗号通貨