要約:
- ブロックチェーンのマイニングは、ビットコインなどが採用するブロック生成作業です。中央管理者に頼らずに、仮想通貨を新規発行して流通させる手段でもあります。
- サービス利用者側に立てば、送金などの取引を確定させる作業です。マイニング担当者からすれば、報酬をもらうための作業です。
- その作業とは、トランザクションを「ハッシュ値」に変換するという内容です。少しずつ入力値を変えながら何度も変換作業を繰り返します。お題をクリアするハッシュ値を最初に見つけた人が勝ちというルールです。
ブロックチェーンのマイニングとは
ブロックチェーンのマイニングは、ビットコインなどが採用するブロック生成作業です。
サービス利用者側に立てば、送金などの取引を確定させる作業とも言えます。ユーザーが送信したトランザクションは、マイニングによってブロックチェーンに記録され、確定となるためです。
またマイニングは、中央管理者に頼ることなく、仮想通貨を新規発行して流通させる手段でもあります。条件を満たす人は誰でもマイニングに参加でき、マイニングに成功すると仮想通貨が新規発行され、マイニングに成功した人に配布されるからです。そのためマイニング担当者からすれば、マイニングは報酬獲得のための作業と見なせます。

新規発行される仮想通貨だけでなく、トランザクション手数料も付与されます。
報酬獲得のためにマイニング担当者は、マイニング用の機器を稼働させて処理を行います。この様子は、埋蔵されている金を掘り当てる作業にたとえられます。そのため、ブロック生成作業は「マイニング」、作業の担当者(マイニングノード)は「マイナー」と呼ばれます。
ちなみに報酬をもらえるのは、一番最初に課題をクリアしたマイナーのみです。そのため、マイニングはマイナー同士の競争でもあり、この点も金の掘り当て作業と似ていますね。
PoWを成り立たせる仕組み
マイニングが行われるのは、コンセンサスアルゴリズム(合意形成の方法)にPoWを採用するブロックチェーンです。PoWが成立するためには、マイニングは欠かせません。そのためマイニングは、PoWを成り立たせる仕組みとも言えます。
PoW(プルーフ・オブ・ワーク)では、大変な作業(work)を実行する「マイナー」がブロックを生成します。
作業は大変(お金や知識が必要)なので、「不正のためにそんな大変なことはやってられない」といった見方ができます。そのような考えから、作業によって正しさが証明(proof)されている仕組みということでPoWというのかなと思います。

大変な作業を実行した人は報酬を受け取れ、報われるようになっています。ただ不正をすると大損します。
ちなみに、コンセンサスアルゴリズムにはPoSなどもありますが、PoSではマイニングとは違う方法でブロックを生成します。
コンセンサスアルゴリズムはなぜ必要?
暗号技術を使えば、中央管理者不在の送金を実現できます。しかし、同一の通貨を2回以上支払いに使うことは防げません。仮想通貨のようなデジタルなお金は、物体のお金と違って、同一通貨で複数回支払うということがしやすいのです。
そこで、バラバラに存在する参加者が「この処理を経た情報は正しい」と判断できる確定情報が必要です。確定情報があれば、各ユーザーの正しい残高が分かるので、一度使った通貨で2回以上支払うことが認められません。
コンセンサスアルゴリズムは「どの処理を経た情報が正しいか」を定めるルール(合意形成の方法)です。そのため、ブロックチェーンにとって必要です。
マイニングの流れ
トランザクションがブロックチェーンに記録される流れは以下の通りです。このうちマイニグを表している手順のは、「4.」から「9.」です。
- ユーザー :トランザクションを送信する
- フルノード:トランザクションを受け取りチェックする
- フルノード:問題がないトランザクションをメモリープールに保管する
- マイナー :メモリープールからトランザクションを選ぶ
- マイナー :トランザクションを加工し、マークルルートを生成する
- マイナー :条件に合う値が見つかるまで、ハッシュ作業を繰り返す
- マイナー :条件に合うハッシュ値をネットワークに配信する
- 各ノード :ハッシュ値が正しいなら、そのブロックを追加する
- マイナー :次のブロックのマイニングを開始する
マイニング作業を表している「4.」から「9.」の手順について、それぞれ見ていきたいと思います。
メモリープールからトランザクションを選ぶ
ユーザーが送信したトランザクションは、フルノードと呼ばれるコンピュータがチェックし、問題なければ保管されます。その際の保管場所は「メモリープール」と呼ばれます。

出典:babypips
マイナーはそのメモリープールを確認して、ブロックに含めるトランザクションを選びます。トランザクション選びでマイナーは、ブロックチェーンのルールに従いつつ、高い手数料が設定されたものを優先します。
マイナーは新規発行される仮想通貨と、ブロック内に入れたトランザクションの手数料を受け取れるので、高い手数料のトランザクションから入れたほうが儲かります。
上の作業で、マイナーがトランザクションを入れ込むブロックを「候補ブロック(candidate block)」と呼びます。
候補ブロックは、各マイナーがマイニングのプロセス中に作る一時的なブロックです。最初に条件を満たした候補ブロックは正規のブロックとして採用されますが、そのほとんどは破棄される運命にあります。
トランザクションを加工し、マークルルートを生成する
マイナーはブロック内のトランザクションを、特殊な方法で加工し、「マークルルート」と呼ばれる値を取得します。
どのように加工するかというと、「マークルツリーの構造に並べる」といったやり方です。ちょっと専門用語が多くてしんどい部分になるのですが、詳しく見ていきたいと思います。
マークルツリーの構造に並べる
マークルツリーの構造は、以下のような形です。

出典:Wikipedia(当サイト側で一部加工)
マークルツリーとは、大量のデータを組織だった順序に並べるプロセスや考え方のことです。利用すると、大量のデータを効率的かつ安全に検証しやすくなります。
上の図を逆さまにしてみると、下のイラストのようになります。「マークル」はいったん放っておいて、木に似ているので「マークル”ツリー”」です。


マークルツリーを発明した人は、ラルフマークル(Ralph Merkle)氏です。そのため、「”マークル”ツリー」と名づけられました。
マークルツリーの構造に並べてマイナーがしたかったのは、「マークルルート」という値を取得することでした。
マークルルートは、マークルさんのルート(根っこ)です。つまり、マークルツリーの根っこ部分(各要素が収束する部分)を見ればよいわけです。

出典:Wikipedia(当サイト側で一部加工)
上の図ですと、一番上の部分がその根っこにあたる箇所ですね。
では、一番上の根っこの箇所にたどり着くには、どうしたらいいでしょうか。
ハッシュ処理を行い、マークルルートを取得する
マークルツリーの根っこ(ルート)部分に達する手順は、以下の図の番号の通りです。

出典:Wikipedia(当サイト側で一部加工)
手順をテキストにすると以下の通りです。
- トランザクションがハッシュ値に直される
- ハッシュ値を組み合わせる
- 組み合わせた値をハッシュ値に変換する
- ハッシュ値を組み合わせる
- 組み合わせた値をハッシュ値(マークルルート)に変換する
上の手順のように、「ハッシュ値」に直したり、ハッシュ値同士を組み合わせたりしながら、1つの値「マークルルート」にたどり着くというわけですね。

ここでまた用語が、、「ハッシュ」「ハッシュ値」、、?
ハッシュの仕組みは以下の通りです。

データを「ハッシュ関数」に入力(インプット)すると、一定の規則に基づいて、入力データがぐちゃぐちゃになり、出力(アウトプット)されます。
実際にハッシュ値に変換してみたのが以下の画像です。

出典:ラッコツールズ
「あああ」と入力したら、わけのわからない値が出力されましたね。ハッシュとはこんな感じです。
ちょっとクドイですが、ここで再度、マークルツリーで行われるハッシュ処理を見てみましょう!

出典:Wikipedia(当サイト側で一部加工)
手順をテキストにすると以下の通りです。
- トランザクションがハッシュ値に直される
- ハッシュ値を組み合わせる
- 組み合わせた値をハッシュ値に変換する
- ハッシュ値を組み合わせる
- 組み合わせた値をハッシュ値(マークルルート)に変換する
こうしてマークルルートが取得できるということでした。ちなみに、マークルルートはハッシュを使うので「ルートハッシュ」とも言われます。
条件に合う値が見つかるまで、ハッシュ作業を繰り返す
マークルルートを取得したマイナーは、マークルルートを含むいくつかの情報をまとめます。具体的には、以下のようにまとめます。

出典:bitcoin.org
上記の情報は「ブロックヘッダー」と呼ばれます。
ブロックヘッダーとは、ブロックの中のデータを要約するような役目を持つお情報のことです。マークルルートや前のブロックヘッダーのハッシュ値、Nounce(ナンス)、ディフィカルティなどを含みます。
マイナーは、このブロックヘッダーを何度もハッシュ関数にかけます。このハッシュ値への変換を、一定の条件(ディフィカルティ)を満たすハッシュ値が見つかるまで繰り返します。
より具体的には、ブロックヘッダーに含めるNonce(ナンス)という数値を変更して、ハッシュします。「ナンスを変更してハッシュし、条件を満たさないなら、またナンスを変更してハッシュし、、、」と続けて、条件に適する値を見つけます。
ハッシュ関数に同じ入力値を入れると、同じ出力値が返ってきます。そのため、ナンスを変更することで入力値を変え、条件に合う出力値が出てくるかという作業を試行します。

出力値は予想不可能なので、とにかくいろんなナンスで試してみるしかありません。
条件に合うハッシュ値をネットワークに配信する
条件にあうハッシュ値を見つけたら、そのマイナーはブロックチェーンネットワークにハッシュ値を配信します。
ハッシュ値を検証し、正しいならブロックを追加する
ノードはマイナーから配信されたハッシュ値を受け取り、そのハッシュ値が本当に条件に合っているかを検証します。
-150x150.jpg)
「マイナーがチェックする」という説明もあれば「フルノードがチェックする」という説明もあります。何が正しいかはよくわかっていません、、
もし合っていれば、そのマイナーが作った候補ブロックを、正式なブロックと認めて、その情報を追加します。
ちなみにここで、ハッシュ値はブロックハッシュとなります。

ブロックハッシュとは、個々のブロックの識別番号のようなものです。ブロックヘッダーをハッシュ関数にかけて出来たハッシュ値のうち、ブロックとして認められたブロックのハッシュ値がブロックハッシュです。各ブロックには1つ前のブロックのブロックハッシュが反映されてます。
次のブロックのマイニングを開始する
ブロックが追加されたら、マイナー達は次のブロック生成作業へと移ります。
長かったですが、ビットコインの場合はだいたい10分に1回のペースでブロック生成が行われています。
マイニングの方法
マイニングに参加する方法にはいろんな種類があります。
利用する機器による分類
CPUマイニング
CPU(Central Processing Unit、中央処理装置)とは、コンピュータが稼働するための処理や計算を行う部品です。さまざまな処理を担当しています。
ブロックチェーンが誕生した当初は利用されていましたが、現状はCPUでのマイニングはあまり行われていません。
当初、一般的なパソコンのCPUでも処理できたマイニングができました。しかし、マイニング参入者が増え、その結果として難易度(ディフィカルティ)が高められたことで、処理能力がより高い機器が必要になりました。
GPUマイニング
GPU(Graphics Processing Units)とは、画像処理を担当するコンピュータの部品で、画像がきれいに映し出されるための処理を行います。パソコンや「グラフィックボード」と呼ばれる部品などに付いています。
CPUは汎用的な処理を担当する分、処理速度はそこそこです。一方でGPUは、汎用的な処理はできませんが、一部の処理は高いスピードでこなせます。マイニングにおいても、CPUよりもGPUを使うほうが効率的なようです。
またGPUは、次に紹介するASICよりは安く調達できます。ASICよりは効率は落ちるものの、ディフィカルティがそこそこのあるとコインなら、GPUでもマイニング可能です。
ASICマイニング
ASIC(Application-Specific Integrated Circuit)とは、特定の用途に使われる機器です。マイニングでは、マイニングに特化したASICが使われます。
効率が良いため、ビットコインなどでマイニングするならASICが使われます。ただし、値段が高いのがASICの難点です。さらに、ASICは技術進化が早く旧モデルでは収益を得られなくなるため、買い替えが必要になります。
マイニングへの参加形態による分類
ソロマイニング
個人や組織が単独でマイニングする場合、その取り組み形態はソロマイニングといわれます。
マイニングプール
複数の個人や組織が協力してマイニングしたいときは、マイニングプールを利用します。
マイニングプールを利用したい人は、処理能力(ハッシュパワー)を単位のプールに溜め、マイニング作業を行います。そのプールの参加者がマイニングに成功したら、報酬はプールにハッシュパワーを提供した比率に応じて、プール参加者で分配されるという仕組みです。
コーディネータ(coordinator)という人がいて、プールに参加しているマイナーに異なるナンスを使うように調整しています。コーディネータは報酬の分配も行います。
一人でマイニングをするには、競争力のあるハッシュパワーを一人で用意しなければ、マイニングをするだけ損になります。そのため、まとまったお金が必要です。
しかしマイニングプールを使えば、自分が提供できる範囲のハッシュパワーを提供することでマイニングに参加できます。また、報酬は毎回分配されるので、獲得できる報酬がより安定します。
クラウドマイニング
クラウドマイニングでは、マイニング機器を有する第三者に、マイニングをアウトソースすることでマイニングに参加できます。
利用したい人は、第三者に電気代やマイニング機器の代金や、第三者の手数料を含めた分を支払います。すると第三者が、支払った手数料分のハッシュパワーでマイニングをしてくれ、その分の報酬を渡してくれるという仕組みです。
クラウドマイニングなら、機器を用意する必要もない。特別な知識も不要なので、個人でも気軽に行えます。ただし、マイニングを委託する第三者が報酬を支払ってくれない可能性があるため、信頼できる業者に依頼する必要があります。
マイニングに参加する手順
クラウドマイニングに参加する流れを簡単に紹介します。
ネットワークを選ぶ
まずはどのブロックチェーンネットワークでマイニングをするか決めます。
ブロックチェーンによって、用意しないといけないハッシュパワーや、報酬で得られるトークンの信頼性が変わります。
例えばビットコインは人気なので、競争に勝って報酬をもらうには、高いハッシュパワーが必要です。しかし、報酬のビットコインは安定性が高いとされています。
イーサリアムクラシックやドージコインなどのアルトコインのマイニングは、ビットコインよりは参入しやすいです。ただしアルトコインは、価格が上下しやすいのでその点はデメリットになります。
マイニング機器を揃える
ネットワークに合わせて、マイニング機器を揃えます。公式サイトや掲示板などでお勧めの機器を探すこともできます。
ここで揃えた機器の購入費用だけでなく、電気代も費用になります。電気代も事前にどれくらいかかるか見積もる必要があります。
ソフトウェアをインストールする
公式サイトからソフトウェアをダウンロードして、登録手続きをします。手続きが完了すれば、マイニングに参加できます。
マイニングの条件はネットワークによって異なるので、公式サイトで詳細を確認する必要があります。

個人で参加するなら、クラウドマイニングが一番簡単そうです。
参照







コメント