暗号資産初心者向けの記事です。本記事ではブッロクヘッダについてわかりやすく解説していきます。
はじめに
ビットコインを調べていると必ずと言っていいほど「ブロックチェーンとは何なんだろう。」という疑問が生まれてくるのではないでしょうか。ブロックチェーンはどういうものなのか、ブロックチェーンの仕組みはどうなっているのかなど、これまでにも様々な記事でご紹介してきました。
今回はブロックチェーンのヘッダとも呼ばれる、「頭」の部分について分かりやすく解説をしていきます。
ブロックヘッダとは?
まずブロックチェーンはビットコインの公開台帳のようなものであるため、基本的にはそのほとんどが「トランザクション」と呼ばれる「ビットコインの取引」によって構成されています。ですがブロックヘッダの部分には少しその他とは違う情報が入っているのです。
ブロックヘッダにはブロックに関する次の5つのメタデータが含まれています。
・直前のブロックのハッシュ値
・マークルルート
・タイムスタンプ
・ビッツ
・ナンス
それでは1つずつ解説していきます。
ハッシュ値
ハッシュ値とは規則性のない固定長の値を吐き出す乱数のことをいいます。1方向だということが重要となっており、逆算が不可能です。そのため総当たりという方法論しかないことが特徴です。
またそのタイプもいくつかあり、Bitcoinで使われているものにはSHA-2やRIPENDが存在します。これらは多くのWebサービスでも使われているメジャーな関数となっており、使用時にはユーザーの個人情報やパスワードをデータベースに格納するときにハッシュ関数を用いることで格納されています。
ただし、ハッシュ関数の場合総当たりで攻撃をされると突破されてしまう可能性も高くなっています。以前のバージョンであるSHA1やMD5という規格は 攻撃されやすく実際に突破された事例もあるため、今は使用を避けておくほうがいいでしょう。
マークルルート
(引用:Blockchain Biz)
次はマークルルートです。これはブロック内の全てのトランザクションをまとめた要約値のことです。
マークルルート生成にはマークルツリーというデータ構造を使用しています。これがどういうものかというと、まずはブロック内にあるトランザクションをそれぞれハッシュ化し、隣り合うハッシュ値を2つずつまとめてハッシュ化します。そして最後に新しいハッシュ値を生成するというものです。
このとき2段目のハッシュ値はブロック内のトランザクション数の半分になります。この処理を繰り返していくと最終的に1つのハッシュ値だけが残り、この値がマークルルートと言われるものになります。
タイムスタンプ
(引用:総務省)
次にタイムスタンプです。これはブロックの生成時刻のことです。ブロックがいつ作られて、承認されたのかということがタイムスタンプとして生成されます。
ただし全てが正確とは言えず、時々ブロックナンバーが後なのにも関わらず前に承認されているというタイムスタンプが書かれているものも実は少なくありません。
すごく厳密なものではないため、おおよそこのくらいの時にブロックが生成されたんだな、という程度のものとして見ることをおすすめします。そして取引自体がファイナリティがないため、時間というのもあくまでも目安でしかない点にも注意しましょう。
ビッツ
ビッツとはマイニングの難易度を表すための表現方法になります。 ビッツを用いて算出される目標値をブロックヘッダのダブルハッシュの数値が下回った場合のみマイニングが成功するという仕組みになっています。
ナンス
最後にナンスとはワンタイムトークンと言われ、リクエストが正当なものであるかどうかを見極めるためのものとして、ブロックチェーン上でマイニングの際に使用されているものです。
最後に
本記事ではブロックヘッドについて解説してきました。
今回紹介したブロックヘッダというのは、ブロックに関するメタデータが含まれています。ブロックは取引をまとめたものになっているため、ブロックチェーンを使いこなす上で必ず必要なものであると言えます。
これからブロックチェーンを使っていきたいと考えている人は、しっかりとブロックヘッダを学んでいきましょう!