ビットコインアドレスは重複するのか?
ビットコインのアドレスにについては、最初は非常に不思議だった。このアドレスというのも、だれか中央機関が発行すわけでもなく、単に、勝手に自分で作る。
たとえばあなたのパソコンでアドレス生成ソフトを走らせれば、アドレスは1000でも2000でも作ることが出来る。そして、その勝手につくったアドレス宛てにビットコインを送金できて、実際にそこにビットコインは送られる。
これは感覚的にはとても不思議だ。
例えば、いまつくったアドレス。 16bjdtVb32azd5Tdybxoz7366wDjFspPdn といったものだが、これは、まさにいまつくった。これにビットコインを送金することができる。
現在は作ったばかりなので、からで残高はゼロだが、いくらかおくればクレジットされる。勝手につくったアドレスに送って機能するというのは面白い。
そしてこのアドレスのプライベートキーは私しか知らないわけなので、このアドレスにおくられたビットコインは、原理的には他のだれかが勝手に使うことはできない。
なぜ、各自が勝手にアドレスを生成しても、大丈夫なのか?
ある人が作ったアドレスと、まったく同じものを誰かが作成した場合どうなるのか?
これはアドレスの衝突(コリジョン)ということになる。もしあるアドレスとまったく同じアドレスを、別の誰かが作成することに成功して、同じプライベートキーが発見された、そのアドレスのコインを自由につかうことができる。
その可能性はあるのか?
ビットコインの場合、アドレスの空間は2の256乗である。これは信じられないほど大きい。どのくらい大きいかというと、観測可能な宇宙の素粒子の総量が10の80乗程度といわれる。これは、ビットコインのアドレス空間と、ほぼ同じくらいの量になる*1。
要するに、宇宙に存在する素粒子の量くらいの数のアドレスがあるということで、そのなかから同じものを発見するのは不可能にちかい。
ただ、コンピュータは、完全にランダムな数列を作ることはむずかしい。多くのコンピュータにおける乱数は擬似的な乱数だ。仮にウォレットプログラムの乱数に問題があり、十分にランダムでない状況で、大量のアドレスを生成しつづけた場合、衝突は起こりえるのか?
という話を昨日してたのであるが、専門家が試算をしてみてくれたが、それでも大丈夫そうである。もし、その擬似乱数の振る舞いが完全に特定できたとしても、それでも、地球上にある砂の数くらいのアドレスを当たらないといけないようだ。
*1 2^256≒10^77