以前の記事で、ブロックチェーンの概要と、それがもたらす未来についてまとめました。
この記事では、ビットコインに用いられているブロックチェーンの仕組みについてまとめていきます。
ブロックチェーンの仕組み
ブロックチェーンの仕組みについて、
ブロックチェーンの「ブロック」は、幾つかのトランザクションをまとめたもの、すなわち複数の取引きをまとめた塊のことを言います。
そして、そのブロックには、取引データの塊以外にも、前のデータを簡略化した「ハッシュ値」や、「nonce」という値が含まれます。
ハッシュ値は、ハッシュ関数を通して得られる値であり、そのハッシュ関数への入力には、前のブロックのハッシュ値が利用されています。
ハッシュ関数:入力した値によって、全く別の値を出力する関数。同じデータからは同じハッシュ値が得られる。一方向の関数であるため、ハッシュ値から入力データを予測することはできない。
nonceとは、「Number used once」の略語で、マイニングに利用されます。これについては後で書いていきます。
前のブロックのデータを利用して、次のブロックのデータが作成されるので、隣り合うブロックが関連を持ちつつ、1つの繋がったデータが得られます。
これが「ブロックチェーン」と言われる訳です。
新たなブロックの作成
新しいブロックを登録する場合、前のブロックのハッシュ値を計算し、集まったトランザクション(取引データ)をブロックにまとめ、登録します。
しかし、この時、計算されたハッシュ値が決められた値よりも小さな数になるように調整されている必要があります。
それを調整するための数が「nonce」です。
ハッシュ値の計算にはこの「nonce」の値も利用され、、このnonceの値を調整することによって、計算されたハッシュ値が決められた値よりも小さな値になるようにします。
ハッシュ値が決められた値よりも小さかった場合に、新しいブロックが追加されます。
どうしたらハッシュ値が小さくなるのかは、数学的に発見されておらず、nonceの値を適当な値から1ずつ増やしながら、結果を確認していかないといけません。
この操作のことをマイニングといいます。
マイニングにより、nonceの値を調整し、計算されたハッシュ値が決められた値よりも小さな数になった場合、新たにブロックが追加されます。
そして、ブロックの生成を成功させた人に報酬が支払われる仕組みになっています。
データが改竄できない訳
データをなぜ改竄することができないかについて。
もし、どこかのブロックのデータを改ざんした場合、ブロック全体のハッシュ値が変わってしまうため、
ハッシュ値の値が決められた値よりも大きくなってしまい、変更したことがバレてしまいます。
改ざんした以降のブロック全てのnance値を変更し、すべてのハッシュ値が決められた値よりも小さくしようとしても、
膨大な計算量が必要となる上、新しいブロックはどんどん追加されていくので、改竄はほぼ不可能な仕組みになっています。
ブロックチェーンの問題点
ブロックチェーン技術は画期的な技術ではあるものの、まだまだ以下のような課題があります。
- nanceを探す作業は電気代の無駄。
- マイナー寡占化による合意形成の中央集権化がおこりうる。
条件を満たすnanceの値を探す作業は、ただの電気代の無駄であり、経済合理性もありません。
また、マイニングする悪意を持ったマイナーが51%以上を占めると、取引データを改竄し、それ以降のnanceを書き換えるスピードが、
そもそもあったブロックチェーンにブロックが追加されていくスピードが早いため、改竄を可能にしてしまいます。
まとめ
ブロックチェーン技術の仕組みについて簡単に説明しました。
画期的な技術ではあるものの、まだまだ課題はあるようです。
第三者が介在しない安全な取引は、社会に大きなメリットをもたらしてくれるので、実現に期待ですね(笑)