11年ぶりに動いたビットコインはサトシのものか?
2020年5月20日夜、11年以上ぶりに2009年2月10日にマイニングされたビットコインが移動されました。
取引記録→Blockchain.info
ビットコインの最初のブロックが採掘されたのは2009年1月9日のことで、今回動いたコインが誕生したのは3,654ブロック目のことです。(つい最近の半減期が630,000ブロック目だったので、どれくらい最初のほうかわかりますね。)
このコインについて、「サトシか?」という疑問が湧くのは当然のことかと思います。当時ビットコインのソフトを動かしてマイニングしていた人物など、多く見積もって数十人というところだったでしょうから。
2013年の記事で、初期のビットコインマイニングのプライバシー面での欠陥に注目し、サトシと見られる主体をパターンから発見したというものがあったので、同じ著者による2019年の追記と合わせて意訳して紹介します。
元記事→"The Well Deserved Fortune of Satoshi Nakamoto, Bitcoin creator, Visionary and Genius"
追記→"The Return of the Deniers and the Revenge of Patoshi"
初期のビットコインマイナーの欠陥と「Patoshi」
欠陥① ExtraNonceが新規ブロック発見ごとにリセットしないため、マイナーを区別することができる
新しいブロックを採掘したマイナーはコインベーストランザクションというもので新規発行のコインを入手できるのですが(当時は50BTC)、初期のコインベーストランザクションにはExtraNonceという情報が記録されていました。
マイニングにおいて、新しいブロックを発見するのはNonce(ナンス)という数字を見つける作業に他ならないのですが、32ビットのナンスを1から順番に増やしていくという作業をイメージしてください。
ある程度の時間が経つと、ナンスは32ビットに収まらなくなり(オーバーフロー)、再び1から数え始めることになります。そのとき、ExtraNonceに1を加算することになっており、実際に採掘されたブロックにはナンスと採掘時のExtraNonceが記録されます。
欠陥は、新しいブロックを見つけたか受け取ったときにExtraNonceの値をリセットせずにそのままマイニングを続けるという仕様になっていたことで、この数字がコインベーストランザクションのExtraNonce欄に記録されることによって、すなわちそのマイナーの進捗状況、いわゆるハッシュ数からとあるブロックを採掘したマイナーを推測できてしまいました。
つまるところ、ExtraNonceを縦軸に、ブロックを横軸にとって全てのExtraNonceを記録すると、個別のマイナーがそれぞれ直線として表れるのです。
「ハッシュ時計」の増加率が一定のマシン=同一のスペックのマシンということなので、初期にパソコンを起動させずっとマイニングさせていれば、そのパソコンで見つかったブロックのExtraNonceは一直線上に並ぶことになります。(このときの直線の傾きはハッシュレート=計算回数を表しています)
1ブロック目から36288ブロック目までについて、ExtraNonceとして記録されている数字を各ブロックについてプロットすると、下記のようなグラフが描けます:
記事の著者が作ったSatoshiblocks.infoというサイトでも見ることができます。
このマイナーがサトシであるかは定かではありませんが、可能性は高いので便宜上「Patoshi」と名付けましょう。
欠陥② Patoshiのみ、実際のハッシュレートと比較してExtraNonceの伸びが速い
ビットコインマイナー全般の問題というよりは、「なぜか」PatoshiのマイナーのみExtraNonceの増加が他のマイナーより速かったようです。通常のExtraNonceの伸びから計算したハッシュレートが、実際に採掘したブロックの割合から計算した実際のハッシュレートより高いので、なぜかExtraNonceが速く伸びていたとわかります。
欠陥③ 他のマイナーがブロックを採掘してもExtraNonceが伸びていない
マイニング中に他のマイナーがブロックを発見し、それを受信した際、本来のソースコードであればそのたびにExtraNonceを増加するのに、Patoshiはそれを行っていなかったため、Patoshiが不在の期間のみ他のマイナーのExtraNonceの伸び率が低下することが確認できます。
これが意味することとは?
これらの3つの特徴を利用して、Patoshiが採掘したブロックをExtraNonceという荒いタイムスタンプを使って結びつけることができます。
また、当然サトシは「誰かが」マイニングしてくれないと困るので最初からマイニングしていたでしょう。
さらに驚くべきことに、Patoshiはこれほどマイニングしているのにも関わらず、全くといっていいほどそのビットコインを使用していません。(Patoshiのコインベーストランザクションの99.9%ほどがそれ以後には動いていない。) Patoshiが同一人物だとすると、100万ビットコインほど所有していると推測されます。
(※訳注 これが「サトシは100万ビットコインくらい持っている」という通説のソースです)
ちなみに、ほぼ一定間隔で直線が新たにスタートするのは、おそらく100時間ごとにマイナーを再起動(ウォレットをバックアップ?消去?)していたのではないかと考えています。
疑問と、著者の回答
2019年の追記は、著者に対するよくある指摘と、著者の反論が含まれています。
指摘1「Patoshiは1人ではなく、複数のマイナーが1つのパターンに表れている」
反論1-1
Patoshi以外のブロック報酬の90%が動いているのに対して、Patoshiのブロック報酬は0.1%しか動いていない。最初のブロックから2010年3月までにPatoshi以外のマイナーの数は0から25程度まで増えたが、Patoshiの占めるハッシュレート割合の減少からみてPatoshiは一定のハッシュレートであった。したがって複数のマイナーがPatoshiとして協働していたとしても、それらが今日まで全く売却していない可能性は非常に低い。
反論1-2
Patoshiによるブロックは全てExtraNonceによって他のブロックとの前後関係を結びつけることができるが、どのブロックがPatoshiのものでどれが違うか連携を取ることは困難だったと思われる。(マイニングプールの署名メッセージなどもなかったし、そもそもこのような複雑な連携を取るメリットも不明だ)
反論1-3
Patoshiが急にいなくなる期間がいくつかある(2009年7月18日など)。その後中断したナンスから再開するが、複数のマイナーが同時に中断した方法と理由が不明だ
指摘2「最初のブロックからマイニングプールが存在した」
反論
・マイニングプールの発明は数年後
・最初のブロック以前にどうやって秘密裏にマイニングプールを組織したのか
・初期はマイニングプールなしでも安定収入が得られた
・Patoshiは同時期のマイナー1~6人と同程度のハッシュレートがあったが、そもそもマイナーが少なくプールする意義がない
・特殊なソフトウェアが必要になったが、存在した証拠はない
・陰謀論でしかない
Patoshiのブロックのナンスの偏り
著者は2013年末に、Patoshiの採掘したブロックのナンスに偏りがあることに気がついた。バイト0 (リトルエンディアンで一番小さいバイト)がどういうわけか全体である0-255ではなく0-9と19-58しか使われていなかったのだ。
これはナンス全体が取りうる値の1/5程度に相当し、実際にPatoshiのExtraNonceの伸びるペースは実際に観測されたハッシュレートのおよそ5倍だったことから、ナンスの値を偏らせることで実際のハッシュレートより少ないブロックを生成し、ExtraNonceを速く増加させていたと考えられます。(実際のナンスがこの範囲外にあれば、いくら計算してもブロックは見つからないため)
ブロックのタイムスタンプからみるPatoshi複数人説
ビットコインのブロックに記録されるタイムスタンプは、実はマイナーの時計のタイムスタンプであり、ブロック自体の順番とタイムスタンプの時系列が前後することがあります。(ブロックチェーンはブロックの順番で定義されているので問題ありません)
しかし、「同一のパソコンの時計が急に逆戻りすること」は考えられません。
また、ビットコイン satoshi client v0.1においてマイニング中はナンス40,000個ごとにタイムスタンプを再計算するように設定されていましたが、およそ10秒ごとのことで、また、新しいブロックが到着するとタイムスタンプは更新されるようになっていました。
最後に、ブロックのタイムスタンプは発見したノードに接続している他のノードを合わせた時間の中央値になるように調整されるのですが、場合によっては後からきたブロックがタイムスタンプ的にはより早いという原因になり得ます。しかし、時間が経ち多くのノードが互いに接続したことがあると、調整が小さくなっていきます。密度の高いP2Pネットワークは全体で時間が中央値に合っていくはずです。
早い話、「ブロックの順番とタイムスタンプの時系列が逆になっているブロックは同一のマイナーとは考えにくい」のです。実際に可視化すると以下のようになります:
Patoshiブロック同士で逆転が起こったことは1度もなく、ほかのマイナーとPatoshi、あるいはほかのマイナー間では合計で694回も起こっているので、Patoshiは1台のPC、1人のマイナーであるという可能性が高いです。
今回のはPatoshiか?
題名の疑問に戻ると、今回動いたブロック報酬がPatoshiのものかという点に関して、今回のチャートのPatoshiによるとみられるブロックだったかどうかを確かめればよいことになります。
これは、上でも紹介したsatoshiblocks.infoで行えます。
今回のは、Patoshiではありませんでしたね。
筆者のひとこと
筆者は2019年の記事をこう結んでいます:
Leave Patoshi alone once for all.
サトシの正体を暴こうなんていうのは、サトシに対してプライバシーの侵害で失礼なことなのかもしれませんね。
私(意抄訳者)からひとこと
Spotlightで記事を書いて閲覧数上位の人が「悟コイン」(物理ビットコイン)をもらえる太っ腹な企画が行われています。自分は第一回で入賞したのでもうもらえませんが、「これぞ」という記事がある方は公開してみてはいかがですか。