新疆で停電という噂をポワソン回帰分析にかける
【追記5/26】4/19から4/21のデータを追記しました。
中国の新疆ウイグル自治区のどこかの炭鉱における事故によって、一部地域の電力供給が悪化しており、計画停電や停電が発生しているらしい。これとタイミングを同じくしてビットコインのブロック生成が期待値より40%近く少ない日があり、「ビットコインのハッシュレートの40%(以上)が新疆にある」と結論づけるツイートが少なくない。
今回の記事では、確率の数学とブロックの生成状況から、新疆の停電によって本当にハッシュレートが減少したのか、減少したとしたらどれくらい減少したのかを推計してみたい。
新疆の停電が話題
中国本土での仮想通貨・ブロックチェーンに関する話題を紹介していることの多いDovey Wan氏が4月16日、新疆ウイグル自治区において大規模な停電が起こっており、ビットコインのハッシュレートが30%低下しているとツイートした。
スレッドとして後続するツイートから、上記は中国語のニュース記事の内容についてのツイートだった模様で、ハッシュレート低下の根拠に関してもソースはないというものであった。しかし、中華系とされるマイニングプールが採掘したブロックの割合が減少しているというデータを夜中に追記している。
ただし中華系とされるプールの中でも、ViaBTCとBTC.TOPは影響がないようだ。このデータに関しては今回は検証しないが、もし事実であればプールごとの地域構成など、面白い情報をたくさん推測できそうだ。
また、Dovey Wan氏は「グローバルなハッシュレートへの影響の計測には数日かかる」と言っているが、上記のプール別のデータは直接各プールからハッシュ数を取得したデータなのだろうか。(このコメントは数時前の「ビットコインのハッシュレートが30%下落」とは矛盾しているが…)
Dovey Wan氏の情報は信憑性にばらつきがあるが、中国本土で話題になっているテーマがわかる。ソースを明記しないことが多く、ガセネタのフィルタリングが面倒なので私はフォローはしていない。
新疆の炭鉱事故自体は新聞記事になっており、4/10夕方に発生したようだ。
ビットコインマイニングの新疆への依存具合
雨季は四川省で過剰な水力発電による安価な電力を利用しているマイナーが、乾季には安い電力を求めて新疆に移動するという行動パターンは常識になりつつある。
ちなみに、新疆ウイグル自治区は四川省と比べると「汚い」電力の割合は大きい(主に石炭など)。それでも再生可能エネルギーの開発が急速に進んでおり、その割合が35%にも達するとされている。
さて、中国にビットコインのハッシュレートの50%以上が存在する可能性は高いが、この数字は減少傾向であるというのがマイニングの中国への依存に関する知識人の平均的な推定である。またこのうち四川省↔新疆という季節移動を行っている割合も少なくないと考えられている。(移動については研究が少ない)
というわけで、新疆の電力逼迫のハッシュレートへの影響は、中国のマイナーの割合、季節移動するマイナーの割合などを推測するのに有用かもしれないデータとして注目されている。
ハッシュレートへの影響の推定方法
さて、「ハッシュレートが1日で40%下落」とのツイートには、blockchain.infoのハッシュレートのチャートが引用されている。
他のデータプロバイダーではGlassnodeは約46%下落したと発表している。各社とも異なる計算方法や日付の区切り方を使っているため、ハッシュレートの推定値が異なる。
出典:glassnode
基本的にこれらのデータプロバイダーが出すハッシュレートの値は単純に一日のブロック数と難易度から推測されている。そのため、実際にはハッシュレートが変動していなくても、グラフがビットコインマイニングのランダム性によってギザギザに上下していることが読み取れる。
ハッシュレートの正確な推移を求める1つの方法として移動平均の使用が挙げられる。例えば7日間の平均値を使うことで、先程のギザギザを解消しようというものだ。長期間のデータを見るには優れているが、データの変化に遅行してしまうため、急変時の判断には使用できない。
そこで、今回のハッシュレートの変化が本当に異常値なのか、ギザギザの一部なのかをポワソン分布を使って求めてみることにした。
ポワソン分布を使うアイデアは2年ほど前に見たカナゴールドのツイートが元だ。このツイートを読んだとき、大学の数学の授業を思い出して「確かに!」ってなった記憶がある。カナゴールドありがとう。
ポワソン分布を使ってみる
確率を勉強したことがある人は、二項分布という言葉を聞いたことがあるかもしれない。例えば「表」と「裏」、「陽性」と「陰性」のような2つの状態しかないものを扱うときに出てくる。
さて、コイントスは裏か表 (0か1)という2つの結果しかない。平均してみれば2回に1回表が出るはずだが、必ずしもそうはならない。100回中40回が表なこともあるし、55回が表なこともある。ポワソン分布は、「一定期間の間に平均λ回起こる事象が、ちょうどx回起こる確率」の分布を表す。
ちなみに、試行回数が大きくなるほど平均値に近い確率が高くなることを大数の法則と言う。コイントスで10回投げたら表が3回以下の確率もおよそ17%ある。しかし、100回投げて30回以下になる可能性はほぼゼロだ。
ビットコインマイニングにおいては、ハッシュレートに変化がない場合、平均して10分に1回ブロックが見つかる。ハッシュレートが一定でも1時間ブロックが見つからないことはザラにある。しかし、1日見つからないことはまずない。
今回は移動平均で見るには期間が短いがランダム性の影響が比較的少ない1日で区切って、「24時間で144ブロック見つかる」ビットコインにおいて、一日に見つかるブロック数のポワソン分布を表示してみよう。
グラフ生成:keisan.casio.jp
1日144個を中心に、一日にxブロック生成される確率の分布がよくわかる。
だが、この分布そのままでは使いにくいので、今回のテーマに合わせて「一日に見つかるブロック数がxブロック以下」という下側累積確率を表示してみる。この分布を積分したものだ。
縦軸が大きすぎて見にくいのでx=90から110の範囲にズームインしてみよう。
ハッシュレートが一定という前提で108ブロック以下の日が発生する確率は0.1%、つまり約3年に1回とわかる。101ブロック以下なら0.01%なので30年に1回レベル。これをまぐれで発生する水準と思うかは感覚に任せるが、連続で発生したらハッシュレートが一定という前提が崩れているとほぼ確信できる。
直近のブロック生成状況
さて、炭鉱の事故発生が4/10ということで、そのあたりからのビットコインのブロックのデータを取得することにした。本来であれば自分のノードから出力させたいが、めんどくさいのでBTC.comのブロックエクスプローラーから拝借してきた。
さて、生成ブロック数を1日ごとに集計したいが、ここで気づくことが1つある。「1日」をどう区切るかによって観測結果が変わってしまう。
データがUTCだったので協定世界時 (UTC)で集計してみたが、今回検証したいのは中国における事象の影響なので、中国標準時 (CST)でも集計することにした。
例えば計画停電などは中国の日時が基準で運用されるためである。ちなみに中国は広いのにタイムゾーンは中国標準時1つしかない。
また、今回のデータの期間内に難易度調整があると、ハッシュレートが一定という前提がそもそも崩れている可能性がある。実際に4/16に難易度調整が発生したが、+1.92%の難化という小さい変化だったので大半のマイナーが採算ラインよりはるか上にいる現在の環境も考慮し、無視することにした。
集計した表は以下の通りである。左から日付、協定世界時で集計した場合、中国標準時で集計した場合だ。
見てわかる通り、4/11から4/16までは特に異常値も見られず、通常通りマイニングが行われていたことがわかる。この期間にハッシュレートが大きく変化したとは考えられない。実際に炭鉱が停止してから石炭の供給が枯渇して火力発電に影響が出るまで数日かかると考えられるため、納得である。
この時点では計画停電などによって当局が電力消費を抑制していなかったということでもある。対応が遅れたとも言える。
しかし、UTC・CSTともに4/17,18 (土日)に低い数値を観測しており、特にUTC 4/17とCST 4/18はハッシュレートが減っていなかったとしたら30年に1度レベルの数値であった。それに加えて、UTC 4/18は年に数度レベルの数値、CST 4/17は2年に1度レベルの数値であったことから、週末は実際にハッシュレートの低下が発生したと考えられる。
【追記】ブロック生産の落ち込みは4/19にピークに達し、翌日にはある程度復旧しているような印象を受ける。CSTの4/19は表では切り捨てられてしまっているが、0.00023%、つまりハッシュレートが減っていなかったとしたら1300年に1度発生するかどうかという数字だ。
ハッシュレートはどれくらい低下したのか
さて、ハッシュレートの低下が実際にあったことは確実視されるが、どれくらい低下したのだろうか。これも確実には言えず、確率的にしか推測できない。
新しいハッシュレートに関する1日あたりブロック数のポワソン分布を考える。
例えばハッシュレートが10%低下していたらλ=144*0.9、20%低下していたらλ=144*0.8である。
実際に観測されたブロック数はCSTでの集計に従って4/17に110個、4/18に101個だとしよう。これらが両方とも極端な外れ値ではない範囲のλを調べれば、実際にどれくらいハッシュレートが低下したと考えられるかを範囲で求められる。
サンプルが2日間なので、ブロック数110, 101についてそれぞれ80%の確率で収まる範囲のλを求める。(要するに両日ともにブロック数が多い10%・少ない10%の日に入っていないと仮定している)
もっといい方法がありそうではあるが、今回は大変なので2つのケースのλの分布が重なる部分、つまり98≦λ≦115であると推定しよう。ハッシュレートが不変という前提を元にしたλ=144と比較すると、これはおよそ20%~32%減となる。4/18終了時点の速報値がこの範囲外だった人は、もっと数学的に論じていただきたい。
【追記】4/19 CSTの92ブロックについても、中央80%のλの範囲を求めてみた。こちらについては、81~106と出た。ただし、マイニング工場が週末の時点で停止していたと仮定すると、3日目になってハッシュレートが急落したと考えるよりは、下側の外れ値と考えるほうが自然なのかもしれない。
【追記】このままでは範囲が広すぎるので、「もっといい方法」を探ってみた。CSTの4/17~19それぞれについて70≦λ≦130まで1刻みにポワソン分布による発生確率を掛け合わせた値をプロットしてみた。これは3日ともハッシュレートが不変だった場合について、毎日その値が出る確率である。このグラフの中心であるλ=100とすると、ハッシュレートはおよそ30%減となる。
【追記】なお上記グラフ中央の80%をとると、94≦λ≦108となった。すなわちこれは25%~35%減である。
【追記】なお、4/20,21については数字からはマイナーがある程度復旧したという印象を受けるが、これは確実視することができない。4/19が外れ値かもしれないし、4/20,21が高めに出ただけかもしれない。ということで、4/17~21に関しても、上記と同様のグラフを出してみた。
【追記】中心はλ=106、つまり26%減であった。また同様に中央80%を取ると、98≦λ≦112となった。すなわちこれは22%~32%減である。
これが多いか少ないかは読者の判断に任せる。個人的には、乾季には新疆・内モンゴルに大半のマイナーが存在するという事前知識があるため、中国にハッシュレート全体の50%前後が存在するとすれば妥当な数字と感じる。
結論
・期待されるブロック生成数のポワソン分布から見て、4/17,18にハッシュレートが大幅に低下した可能性は非常に高い。それ以前に大幅に低下していた可能性は低い。(Dovey Wan氏の最初のツイートの時点ではハッシュレートの推測値から低下があったと決定付けることはできなかった→恐らくマイナーから聞いたのだろう)
・4/17,18のブロック数が新たなハッシュレートから見て外れ値ではないと仮定すれば、ハッシュレートの減少幅は20~32%と推定できる。
推定に使う期間を増やせばより正確に試算することができるかもしれない。だが、電力逼迫の緩和やマイナーの移動などで期間中に徐々に復旧する可能性もある。
余談&有料部分の説明
さて、最近はドージコインの急騰が界隈を大いに賑わしている。ドージコインはライトコインとマージマイニングされているため、新規発行されるドージコインはライトコインのマイナーが受け取る。
そしてなんとライトコインの採掘報酬をドージコインの採掘報酬が超えたことも一部の間では話題になった。
ビットコインとは採掘アルゴリズムが違うため、専用の機材も異なるが、ライトコインのマイナーも中国にある程度集中していることが見込まれる。ということは、ライトコインのハッシュレートも分析すれば、今回の観測ハッシュレート低下が地域特有の原因によるのか、それともビットコイン特有の原因またはランダム性によるのかわかるかもしれない。以下、有料部分にて分析してみる。