BTCの説明 〜マイニング編〜
今回は、前回の特徴編で触れたマイニングについて詳しく説明します!
(マイニングとは新しいブロックをブロックチェーンに繋ぐ作業のことでしたね。)
ここでまず、いくつかの取引情報がまとまっているそれぞれの「ブロック」が次の3つから成り立つことを確認しましょう!
①前のブロックのハッシュ値(前のブロックの取引情報を要約したもの=①前のブロックのハッシュ+②ナンス+③取引データのまとめ)
②新たなハッシュ値のナンス
③新たに生成する全トランザクション(取引情報)
○ハッシュ値とは?
ハッシュとは、あるデータを変換して得られる固定長のデータのことです。ハッシュを得るための関数をハッシュ関数といい、これにより取引情報は暗号化した状態で納められています。
ハッシュの特徴としては
•データを一方向にしか変換できず、ハッシュ化されたデータを元のデータに戻すことは基本的に不可能(不可逆的ということ)
•元のデータが少しでも変わるとハッシュ化された結果は全く違うものとなり、よってハッシュ化された結果から元データを推測することも不可能
•どんなデータ(数値や、ドキュメントのような文字列など)も一定の長さに変換
このハッシュ化された暗号を解読し、その取引に間違いがないかどうかを確認できれば、ひとつ前のブロックに関する情報を追加した上で新しいブロックをつなげていけます。
各ブロックに前のブロックのハッシュ値が含まれている理由は、(ⅰ)ブロック同士を時系列順に繋ぐため、また(ⅱ)改ざんを容易に見つけるため(ブロックチェーンデータを改ざんすると次のブロックの数値(ナンス)も変わり、その次のブロックも変わり……と連鎖式に変化が起きるから)です。
○ナンスとは?
前回説明したマイニングにおいて、コンピューターの計算能力を借りて競いあっていたものの答え、今回の言葉でいうと新たに生成するブロックにおけるハッシュ値を※正しくする数値がナンスです。
つまり、「マイニング」とは、次のブロックを生成する権利を得るために、条件を満たしたナンスを「採掘(発見)」する計算処理の事なのです。
※「正しくする」について
このナンスは、「ハッシュ値が一定以下の数値(仮にMとする)を示す」という条件を満たす必要がありますが、理論的に解くことができないため、解読するには適当な数値を当てずっぽうに入れていくしかありません。4桁の暗証番号を「0001、0002、0003…」と試していくような作業です。
具体的には上記の
①前のブロックのハッシュ値
②新たなハッシュ値のナンス
③新たに生成する全トランザクション
この3つの数字を並べてハッシュ関数にかけることを、条件を満たす結果が得られるまで繰り返す、ということです。
ちなみにMを変化させることで「マイニングの難易度(ディフィカルティ)」を調整できます。参加者の増加やPCパワーの進化に合わせてMの値を小さくし、マイニング難易度を上昇させます。
ただ、特にBTCに注目が集まり競争力が高まっている今、マイニングを手掛けるには高性能なマシンと十分な時間や電力の準備が必要となってしまいます。マイニングで報酬を得られるのは「新たなブロックをチェーンにつなげた者=ナンスを見つけたもの」ただ一人ですから、、、
こうしたBTCの弱点を克服したアルトコインも、もちろん登場してきています。だからこそ、仮想通貨の原点、BTCの仕組みを理解することは重要なのだと思います!