ブロックとは、ブロックチェーン(分散型台帳技術)における台帳の各ページにあたる役割を果たすものです。
それぞれのブロックの中には、主に取引履歴、前のブロックのハッシュ値、ナンス値の三つの情報が記載されています。このうち、ブロックとブロックをつなぐ役割を果たすのは「前のブロックのハッシュ値」です。例えば、ブロックBで改ざんが行われたとすると、続くブロックCの中に含まれる「前のブロックのハッシュ値」がブロックBのハッシュ値と一致しなくなるため、改ざんが発覚します。
一つ目の情報である取引履歴には、いつ、誰が、誰に、いくら送金したのかという取引の情報が記載されており、それぞれの取引は、ブロックに記載されることではじめて承認を得ることができます。ビットコイン(BTC)の場合、約10分に1個のペースで新しいブロックが作成され、その間の一定量の取引履歴がブロックに記載されます。
二つ目の情報であるハッシュ値には、ハッシュ関数(ハッシュ計算)を用いて、既存のデータを不規則な文字列に変換したデータが入ります。
変換前のデータが少しでも違えば、ハッシュ値は全く違う文字列になることや、一方方向にしか変換を行うことが出来ない不可逆性があるため、データが改ざんされにくくなります。また、変換前のデータの長さに関わらず、変換後のデータの長さは一定になるため、ブロックのデータサイズの軽量化にもつながっています。一つのブロックにつき一つのハッシュ値が生成され、そのハッシュ値は、改ざん防止のため次のブロックに格納されます。
三つ目の情報であるナンス値とは、新たなブロックを作成する都度、マイナーによって決定される任意の数値です。Number used once の略で、「一度のみ使用される数字」という意味があります。
新たなブロックを作成する際は、上記三つの情報を合算し、新たなハッシュ値を生成します。ここで生成されたハッシュ値が次のブロック内での「前のブロックのハッシュ値」となり、ブロックとブロックにつながりができます。ただし、ここで新たに生成されるハッシュ値には条件があり、特定の数値(マイニング難易度)よりも小さな数値にする必要があります。三つの情報のうち、取引履歴や前のブロックのハッシュ値はあらかじめ決まっている数値のため、新たに生成されるハッシュ値が条件を満たすように、マイナーがナンス値で調整を行います。ナンス値の整合が終わり、条件を満たすハッシュ値が生成されることで一つのブロックが完成し、ブロックチェーンの最後尾に付け足されます。
マイニング難易度とは、マイニングに必要となる時間を調整するための数値です。ビットコインでは、ブロックの作成間隔が平均10分で1個となるように、新規ブロックが作成されるためのハッシュ値の条件が調整されます。マイニングの競争が激しくなると、マイニング難易度は上昇し、より小さいハッシュ値でなければ条件を満たすことができなくなります。この調整は2016ブロックごとに行われるため、約2週間に1度の頻度となります。マイニング難易度は上昇を続けることが多いですが、下がる場合もあります。
読み方
ぶろっく