覚えておきたいこと、忘れないようにメモメモ

テクノロジー

【図解あり】マイニングのアルゴリズムは?同時にナンスを発見した場合や難易度とは

投稿日:

ブロックチェーンとは、データ群から一定数のデータをまとめてブロックにして、すでに作成済みのブロック群につなげていく作業です。
ブロックを作る際には、前のブロックと今回のブロックをつなげる為に、前のブロックの要約した内容を今回作るブロックに組み込んでいます。
そして、ブロックを確定するためにナンスというパラメータの最適値を探すマイニング作業を行っています。

今回はナンスを探すマイニング作業とは何かについてまとめています。

スポンサーリンク

【過去記事のご紹介】
本記事をお読みになる前に、

・ブロックチェーンの仕組みについて
ブロックチェーンの仕組みを簡単に説明。改ざんや複製は難しいの?

・ブロックチェーンに使われるブロックの構造について
ブロックチェーンのブロックの構造!中身で使われるnonce(ナンス)とは?

・ハッシュ値について
ハッシュ値とは具体的になに?特徴や利用例をご紹介
を事前に読まれると本記事の内容がより分かりやすいと思います。
合わせてご覧ください。

マイニングのアルゴリズム


図のように、ブロックには

① 履歴データ、
② 1つ前のブロックのハッシュ値、
③ nonce(ナンス)

の3種類のデータが含まれています。

①~③のデータの集まりであるブロックを入力値としてハッシュ関数に代入します。
その結果算出されるハッシュ値が、このブロックの最終的なハッシュ値となります。

最終的なハッシュ値は決められた桁数分の0が先頭文字に連続していないといけないという決まりがありますので、そのようなハッシュ値をマイニングして探さなければなりません。

ここで、ブロックの構成データのうち、
①履歴データ、②1つ前のブロックのハッシュ値の値、
は固定値なので変えることができません。

そのため、③nonce(ナンス)の値をいろいろ変えて計算することで、ブロック全体が0の数を満たすハッシュ値を探していきます。

ハッシュ値を探す作業ですが、ハッシュ関数の特徴として、
「出力値(答え)から入力値を逆算できない」という特徴をもっています。

すなわち、決められた桁数分の0が先頭文字に連続するハッシュ値を見つけるには、
いろいろな数字を適当に総当りでナンスに代入して試していくしかありません。
膨大な数を道に計算していく大変な作業です。

ナンスに代入して計算していき、見事該当するハッシュ値が見つかると、ようやくブロックの内容が確定します。
確定したブロックは既存のブロックチェーンの最後尾につきます。

また、ハッシュ値を最初に見つけた人は取引情報を確定したということで取引の承認者と呼ばれ、報酬ももらえます(ビットコインの場合)。
マイニングは、1等が当たるまで我先に宝くじを買い続けるようなものですね。

当たるまで数字を代入し続ける行為が、金脈にあたるまでひたすら掘り続ける作業と似ているため、マイニング(採掘)と呼ばれています。

スポンサーリンク

このように、マイニングをするときは、決められた0の数を満たすハッシュ値を探すためにひたすらnonceに数字を代入して計算することになるので、マイニングの成功しやすさは単純に「計算量」に比例します。
そのため、パソコンの性能が早いほど有利となります。
一般的なパソコンに搭載されているCPUよりも高性能なGPUやASICを搭載したパソコンが使われることが多いです。

また、仕事量(パソコンの計算量)に応じて報酬が貰える仕組みのため、ブロックチェーンのマイニング作業を
プルーフオブワーク方式(Proof of Work方式/PoW方式)
とも呼びます。

複数人が同時にnonceを発見した場合

マイニングは世界中で行われているため、決められた0の数を満たすnonceがほぼ同じタイミングで見つかることもあります。
nonceが見つかるとブロックが確定し、ブロックチェーンの最後尾につくことになります。
同時に見つかった場合はそれぞれのブロックが同じブロックの最後尾につくため、ブロックが枝分かれします。

その後も枝分かれしたそれぞれのブロックにつけられたハッシュ値を基に、次のブロックを確定させるマイニングが行われていきます。

最終的に先に6つのブロックが繋がった方を正しいブロックと認定し、他方のブロックチェーンはキャンセルされます。

そのため、一時的には枝分かれしますが、時間の経過とともに一本のチェーンになります。

マイニングの難易度とは

マイニングして計算される最終的なハッシュ値は事前に決められた桁数分の0が先頭文字に連続して並ぶことになるわけですが、0の数を調整することで、ハッシュ値の発見までにかかる計算時間を調整できます

0が3つ並ぶハッシュ値(000arag)を探すより、0が5つ並ぶハッシュ値(00000hpoi)を見つけるほうが難しいですよね。

このように1ブロックの生成にかかる時間が安定するように難易度を調整することを
ディフィカルティー
といいます。

ちなみに、有名なビットコインでは、マイニング作業が約10分で発見できるように0の数を調整しています。

まとめ

いかがでしたか。
マイニングは最適なナンスの値を見つけるためにひたすら適当な値を代入していく、膨大な計算力を必要とする作業です。
マイニングをするためにはGPUなどの非常に高性能(高価)なパソコンを用意し、その性能を最大限使い続けるための電気代をバンバン使って見つける必要があります。
しかも世界中の人々が同時に探しているため、自分より先に見つけてしまうこともあります。
その代わり、マイニング作業に成功したら仮想通貨で報酬が支払われます。

運がよければ短時間で正解を引く可能性もあるのでマイニング成功を連発する可能性もあるギャンブル要素も高いといえます。
運試しにマイニングしてみるのもありかもですね。

スポンサーリンク

-テクノロジー
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ブロックチェーンのブロックの構造!中身で使われるnonce(ナンス)とは?

スポンサーリンク ブロックチェーンを調べるにあたって、ブロックチェーンの特徴や利点などは各種本やHPに載っていたので調べやすかったのですが、ブロックチェーン内部で個々のブロックがどのように計算されてい …

ブロックチェーンの仕組みを簡単に説明。改ざんや複製は難しいの?

スポンサーリンク 今さら感はありますが、ビットコインなどの仮想通貨の売買が流行っています。 仮想通貨とはブロックチェーンによる分散型台帳技術を使っているそうですが、 ブロックチェーン? 分散型台帳技術 …

ハッシュ値とは具体的になに?特徴や利用例をご紹介

スポンサーリンク インターネットでデータを送受信するときに、受信途中でデータが壊れていると律儀に 「データが壊れています」 と表示されますよね。 長時間かけてダウンロードしたのにー! …と泣きたくなる …

//リサーチアルチザンの解析用