Proof of Work

ブロックチェーンにはネットワークを安定に維持するしくみが多くあり、技術的にとても興味深い題材ばかりです。

過去に書いた、ビットコイン論文ついての記事

Block Chain

その中でマイニングと呼ばれるしくみはとても秀逸にできています。

参考書籍) 「ビットコインとブロックチェーン(Mastering Bitcoin)」(NTT出版)

ここではProof-of-Workとよばれるハッシュ計算を実際に動かしてみました。
マイナーが多数いようと少数だろうと約10分で新しいブロックが作り出せるように、計算にかかる難易度をコントロールしています。
Difficulty Targetと呼ばれる値よりも小さいハッシュ値がでるようにnonceを変えながらトライし、見つけたら正解という単純なものですが、このTarget値が1bit変わるだけで、劇的に計算量が変化します。
これをPythonで実装されたサンプルを出力を見やすくして実行してみました。

オリジナル) https://github.com/bitcoinbook/bitcoinbook/blob/develop/code/proof-of-work-example.py

Targetの数が小さくなると急激にハッシュを見つけ出す時間がかかるようになります。
下記は過去からの実際のBitcoinのハッシュレートと難易度の変化を表したグラフです。
170m TH/sということは、THのmはメガ? 170 EH/s ってすごい計算量ということがわかります。
(上記は、古いPCで約30万/s)

TH/s(テラハッシュ) 1秒間に1,000,000,000,000(1兆)回
PH/s(ペタハッシュ) 1秒間に1,000,000,000,000,000(1000兆)回
EH/s(エクサハッシュ) 1秒間に1,000,000,000,000,000,000(100京)回

https://www.blockchain.com/charts/hash-rate より

https://www.blockchain.com/charts/difficulty より

ハッシュレートと難易度が同じ動きをしていることがわかります。このように動的に計算負荷をコントールしているのですね。
昔は、PCのCPUでマイニングし、次にGPU、そしてFPGAにASICとハードウェアも変遷しているようですが、マイニングがいかにコストがかかるよく表しています。
それにしても何もかもオープンなんだと、あらためて感じました。

ブロックチェーンはBitcoinに限らす社会に影響を大きく与える技術だけに、そのしくみを知りたいという気持ちが強くなってきました。上記参考書籍はとても詳しくわかりやすく書かれており、おすすめです。
今年はブロックチェーンテクノロジーの探求に力を入れていきたいと思います。

専用ブログ開始しました!

http://bitlife.me/bc/

About

Categories: 未分類 タグ: