たのしい工学

プログラミングを学んで、モノをつくりたいひと、効率的に仕事をしたい人のための硬派なブログになりました

【Ethereum開発】ブロックチェーンの概念

   

ブロックチェーンの概念

多くの異なるコンピュータにコピーを持っている完全に分散したコピーは、すべてのブロックが同じかどうかを非常に素早く確認し、ブロックチェーンが4~5万ブロックを非常に簡単に知ることができます。

いま、そのブロックチェーンがただしいものであれば、Hash値の上四桁が0000となるものとします。

そして、Hash値が上四桁が0000となるような値を探す計算プロセスのことを「マイニング」と呼びます。

そのために、ブロックチェーンに何がおこったのかを確認したければ、最新のhashを見れば、過去になにがあったかがわかるようになっています。

途中のデータ、transactionに誤りがあれば、最新のhash値の上四桁が0000とはならないからです。

ブロックチェーンの仕組みが知りたければ、こちらのサイトで実際に手を動かしてみてください。
Blockchain Demo

実際のブロックチェーン

https://gyazo.com/ce91f2656c937357d0af5d7608c2acf8

先ほどの概念の説明では、最新のhash値の上4桁が0000であれば、データに誤りがない、正しいブロックチェーンとしましたが、実際には、上四桁が0000であるかというより、厳密には「出力されるhash値」がある値よりも小さいかどうかを見ています。この図にあるように、出力されるhash値が1000よりも小さいなら、それは正しいものとし、その値を見つけるまでの時間のことを「BlockTime」と呼びます。

このブロック時間はつねに同じわけではありません。ネットワークは前のブロックを計算するのにかかった時間を見て、それよりも長ければOKとします。ブロックを計算するのに時間がかかりすぎると判断すれば、1000よりも目標数を上げます。すると、誰かが以前よりも速く答えを見つけることができるようになります。

以下の図をみてください

https://gyazo.com/602cca2e0ff6c95f45ef82303303e3c5

こちらは、BlockTimeを15秒と設定した場合の概念図です。
Block#100では目標値1000でハッシュ計算したところ、20秒かかりました。15秒よりも時間がかかりすぎているので、目標数をBlock#102では10000に設定しました。すると、今度は5秒で計算が済みました。これでは速すぎるので、Block#103では目標数を5000に調整しました。すると、今度は17秒で計算が済みました。Block#104で4000として計算したところ、15秒で計算ができるようになりました。

ちなみに、実際の現在のEthereumのBlockTimeは、こちらのサイトから確認できます。Ethereum Average BlockTime Chart

つづきは次回

じぶんで開発を学んでいきたいひとは、
世界最大級のオンライン学習サイトUdemyから「Ethereum and Solidity: The Complete Developer's Guide」を探してみてください。

ではでは!

 - BlockChain, テクノロジー