Proof of Workの仕組み解説

仮想通貨
スポンサーリンク

バオウです。

PoWの仕組みについて解説していきたいと思います。

できる限り平易な表現に落とし込めるように努力します!

Proof of Work(以下PoW)とは、計算を最速で完了させた者に

報酬を支払う事仕組みを指します。

計算を行う事を”マイニング”と呼んでいますね。

概要はこれでOKです(厳密には違いますが)。

 

では実際にはどういった計算を行っているのでしょうか。

なぜCPUではなく、GPUやASICが必要なのでしょう。

その疑問を解決してみたいと思います。

 

マイニングで実施している事を一言で表すと、以下の通りです。


“ハッシュ値(32bit)の最上位ビットから、

”0”が特定回数続くナンスを探索する。

なおディフィカルティの調整により連続数が

どの程度かは時期によって異なる。”

 

以上です。何を言っているか意味不明かもしれませんが、

内容は今から説明しますので焦らないでください笑

解説を続ける上で2つ重要な概念を認識していただきたいと思います。

それが”ハッシュ関数”と”ナンス”と呼ばれるものです。

ハッシュ関数の仕組みについては割愛しますが、

機能的には以下のものを指します。

 

“任意長のビット列から規則性のない固定長のビット列を生成する関数”

 

言い換えれば、

既知のデータから意味の分からんデータを吐き出す関数です。

この認識を頭に置いてください。ハッシュ関数の特徴としては、

ハッシュ関数は一方向関数である為、

出力データから入力データを推測・推定する事が

困難であるという事が挙げられます。

カンニングして、答えは知っているのに

問題文がわからないようなイメージです。(?笑)

 

ナンス(number used once)とは文字通り、

 

ナンス=一度だけ使用される数字

 

を指します。特に意味のない数字を指します。

 


前準備が整いました。ここでマイニングで行っている計算について説明します。

実際にマイニングでは以下の計算を実施しています。

hash(α+β+nonce) = 0000000000000000111111111111111111

hash:ハッシュ関数, α:以前のブロックのハッシュ値, β:今回の取引履歴,

nonce:ナンス, 1は別に1でなくてもOK,

0はディフィカルティの調整に依るので、個数はタイミングによって異なる

 

α+β+nonceをハッシュ関数に代入する事によって、

0が複数個続くハッシュ値を探索します。この際、ハッシュ値からnonceを

逆推測する事は困難となる為、マイニングではnonceを総当たりします。

(ランダムに代入した値から適切なハッシュ値を得たときの

ナンスを探索している)

→その結果として膨大な計算量が必要となります。

     マイニングって面倒ですね。

 →総当たりで計算する事が最も最速の解探索方法となるので、

         CPUでの演算はマイニングには不向きとなります。

  故にGPUやASICでの並列演算が有利です。

  CPUでは逐次演算ですので並列計算は(一般的には)苦手です。

 

ここで、ディフィカルティとは0が何個続くかを調整する事です。

0が1つしかない場合と、0が16個ある場合では、

難易度に相当な差がある事は歴然だと思います。

この個数を調整する事をディフィカルティの調整といいます。

 

ディフィカルティの調整は結構な頻度で発生しているので確認した

タイミングで異なる場合は多いです。

 

ちなみにDGBは1ブロック毎でディフィカルティを調整する仕組み

を導入しています。(DigiShieldといいます)

 

ついでに解説ですが、PoWのアルゴリズムってありますよね。

SHA-256とか。あれはハッシュ関数の名前を指している事を覚えておくと、

どや顔できるかもしれませんね!

中身は趣味で調べてみてください!

 

 

今回はPoWで実際に計算している事についてまとめてみました。

以上です。次回もよろしくお願い致します。

by バオウ\(^o^)/

コメント

タイトルとURLをコピーしました