network hashrate の算出方法
つぶやき。ぽえむ。TL;DR。
「どうやって計算するのだっけ?」というツイートを見つけて「それはググればすぐ解るでしょう?」って思ってググってみたけれど、意外と見つからない。
「ハッシュレート」はコピペの山が見つかるけれども、たぶんツイ主が知りたいのは、それではない。
無職業者BOTは、マイニング界隈について詳しくない。ノード側に求められる範囲だけ知っている。だから間違っているかもしれないけれども「たぶんこうだよね」という辺りを記しておく。訂正指摘歓迎。
あとこのつぶやきの全ては PoW を想定している。PoS や PoI などは知らん。
前提: ハッシュレートとは
定義「目の前にマイニングマシンが1台あったとき、このマシンが一定時間内にできるハッシュ計算の回数」
これはわかりやすい。ググれば同じような記事が山のように出てくる。
前提: 採掘難易度とは
基本的にブロックチェーンは物理時間に対し一定間隔で新しいブロックが繋がれることを期待している。
しかし、高いハッシュレートを叩き出すマシンが採掘に参加していると、採掘間隔が短くなってしまう。正解候補となるハッシュ値を、同じ時間内に多く探せるので。
採掘間隔が乱れるのは期待通りではないので、採掘間隔が短くなったとき(つまり高いハッシュレートのマシンが参加しているとき)、採掘が難しくなるような調整をブロックチェーン側で行う。
このパラメータを採掘難易度と呼ぶ。
(なお、採掘間隔が長くなったら易しくなるように調整される)
前提: 見込み採算
現実には有り得ないが、あるブロックチェーンに対し1台しかマイニングマシンがない条件を仮定する。
この条件下では、このマイニングマシンが単位時間内に掘り当てるコイン量の期待値は、ハッシュレートと採掘難易度を引数に持つ関数で表される。
本題: network hashrate
現実の世界に戻る。複数のマイニングマシンが競っているブロックチェーン・ネットワークにおいて、一定期間内の採掘難易度と掘り出されたコイン量は観測できる。
ここから、現在投下されているであろうハッシュレートの総量を逆算できる。
マイニングという行為そのものが確率に左右されるので、推定値でしか無いのであるが、全体で見ると秒間メガだのギガだのテラだのといった膨大な回数を回しているので、微視的な運・不運は消し込まれますよね、と。
まとめ
このつぶやきを読んで「なるほどなるほど」と思った方々に贈る言葉があります。
Don't trust, verify...