ブロックチェーンの基礎知識 - 採掘難易度 (Difficulty)
マイニングの採掘難易度 (Difficulty) について見聞きすることはよくあり、収益性にも影響することは知られていますが、そもそも採掘難易度とは一体何なのでしょうか?また、Proof of Workにはどうして、そしてどのように実装されているのでしょうか?この記事を読むことで、採掘難易度とは何かについて知ることができます。
マイニングにおける採掘難易度とは?
採掘難易度とはなんであるかを理解するためには、まずProof of Workがどのように機能し、どのような問題を解いているかを知る必要があります。この点については、こちらの記事で解説しています。
Proof of Workは、悪意のある人物や組織が1ビットコインを2回使うという二重支出の問題を解決することができます。二重支出を行うには、ネットワークの51%以上を支配する必要があります。
一個人や一組織がネットワークの51%を支配することを防ぐために、Proof of Workでは、無数のマイナー (ノード) がブロックチェーンネットワークに参加できるようにすることで、分散化を図っています。しかし、多くのマイナーがネットワークに参加したり、離脱するとどのようなことが起こるでしょうか?
仮に、ビットコインを採掘する同一マイナーが100人いる仮定します。また、各マイナーは10TH/s、すべて合わせて1,000TH/sの計算能力を持っているとします。この量のハッシュパワーは、統計的に言って難易度1のブロックを10分ごとに推測します。ビットコインネットワークのブロックタイムは10分になるよう傾向付けられているため、これは予想されることです。
同じようなマイナー100人が更にネットワークに参加すると、ハッシュパワーは2,000TH/sに増加し、ブロックを推測する可能性は2倍になります。こうなると、ブロックタイムが5分に半減してしまいます。ブロックタイムは10分であるべきなので、このままではいけません。
難易度を2に上げると、ブロックを正しく推測する難易度が上がります。その結果、ブロックタイムは再び10分前後になります。
ブロックチェーンは自動的に難易度調整を行います。例えば、ビットコインの採掘難易度は2,016ブロックごとか、2週間ごとに調整されます。一方、イーサリアムの難易度は1ブロックごと、つまりおよそ15秒ごとに調整されます。
採掘難易度とは具体的にどのようなものか?
上記の通り、次のブロックの採掘難易度を上げることで、平均ブロックタイムをコントロールしています。
例を見てみましょう。
DATA欄にNiceHashと入力し、Difficulty 1を選択して「MINE」ボタンを押してください。コンピューターは4つのゼロで始まる値が見つかるまでnonceを推測します。正しいnonceを見つけることによって問題を解決するまでに数秒かかるはずです。
難易度を2に変更すると、コンピューターは6つのゼロで始まる値が見つかるまでnonceを推測します。問題を解くのには、もう少し時間がかかるはずです。
最後に、難易度を3に変更すると、コンピューターは8つのゼロで始まる値が見つかるまでnonceを推測します。これには更に時間がかかり、より多くの計算能力が必要とされます。
より多くの連続したゼロで始まる値を見つけようとすると、より困難さが増していきます。その結果、採掘難易度が上がり、それと同時に正解を推測するために、より多くのハッシュパワーが必要になります。