暗号通貨を支える技術的な要素として、ブロックチェーン技術と分散型台帳システムが挙げられる。
その分散型台帳の世界で、ブロックチェーンの改竄を防ぐために用いられる手法の一つが、プルーフ・オブ・ワーク(Proof of Work)である。
本記事では、そのブロックチェーンとProof of Workを分かりやすく解説してみる。
ブロックチェーンってなに?
ブロックチェーンとは、一定期間毎の取引データをまとめて、ひと塊にしたもの(ブロック)の連続であり、取引データの記録そのものでもある。
一つのブロックには、以下の物が入っている。
- 前ブロックから算出される数字(ハッシュ値)
- 一定期間の取引データ
- Nounceという数字(Proof of Workによって算出される)
Proof of Workってなに?
上述したように、ブロックの中には、Nounceという数字を入れることになっています。このNounceという数字を探す作業が、Proof of Workという手続きなんです。
ブロック同士は、ハッシュ値という数字で繋がりを保っているのですが、このハッシュ値は、ブロックの情報を特定の関数(ハッシュ関数)に入れて、計算結果として算出されるます。
ブロックチェーンの仕組みでは、このハッシュ値が、一定の条件を満たすことが求められています。(具体的には、最初の何桁かがゼロゼロゼロ。。。とか)
BlockchainとProof of Workのイメージ
なので、各ブロックを作るときには、「前ブロックのハッシュ値」と「取引データ」と「???」を合わせて、ハッシュ関数に入れ、条件を満たすハッシュ値が算出される数字(=???)を探す。 という作業が行われることになります。このことを、Proof of Workと呼んでいます。
超簡単な例で言えば…
超単純化して、以下のような前提で考えてみましょう。
- ハッシュ関数が「9で割った余りの数字」
- 求めるべきハッシュ値が「4」
とします。
ブロック xx1
- 前ブロックのハッシュ値: 4
- 取引データ: 6
- Nounceの計算: 「1」はちがう、「2」はちがう、、「3!! 4+6+3=13で、9で割ればあまり4になる!」
- このブロックのハッシュ値: 4
ブロック xx2
- 前ブロックのハッシュ値: 4
- 取引データ: 11
- Nounceの計算: 「1」はちがう、「2」はちがう、、「7!! 4+11+7=22で、9で割ればあまり4になる!」
- このブロックのハッシュ値: 4
注1: 本当は、ハッシュ関数は割り算じゃなくて、素因数分解を用いた暗号技術が用いられます
注2: 本当は、ハッシュ値は特定の数字ではなく、特定の条件を満たす数字なら何でもOKとなっています。なので毎回変わります。
Proof of Workの計算は超大変
上記の簡略化した事例だと、超簡単なことじゃん。って思ったかもしれませんが、実際は、割り算とかではなくて、巨大な素数を使った暗号通貨技術を利用しています。
そして、このNounceを見つけるには、総当たり方式で数字計算してみているので、膨大なコンピューターリソースを消費することになります。
マイニングってなに?
さて、暗号通貨界隈でよく耳にする「マイニング」(Minning、採掘)ですが、このProof of Workに深く関連しています。
ブロックチェーンの世界では、このProof of Workを一人ではなくて、世界中のコンピューターが競争して計算します。
そして、一番最初に解答を見つけた人に、新規に発行される暗号通貨が与えられることになっているのです。
なので、暗号通貨を獲得したい人は、高性能のコンピューターを使って、上記の数字探しをし続けているのです。
ちなみに、このマイニングに掛かるコストは、コンピューターの設備投資と、コンピューターを稼働させる電気代になります。
コンピューターの調達コスト、どこでも大差ないとすると、電気代の安い国が有利になるということもあって、マイニング業者の多くが中国に集まっているといわれています。
コメント
[…] Previous Post […]
[…] ブロックチェーン、プルーフ・オブ・ワークって何? […]