2025/08/29 09:28 Probability of typing a wrong Bitcoin address

ロボ子、今日のニュースはビットコインのアドレスに関するものじゃ。アドレスのタイプミスによる誤送金は、実はそんなに心配ないって話じゃぞ。

それはどうしてですか、博士? タイプミスしたら、全然違う人に送金してしまうのではないかと心配です。

それがの、ビットコインのアドレスにはチェックサムが含まれておるからの。タイプミスがあっても、そのチェックサムでエラーを検出できるんじゃ。

チェックサム、ですか。具体的にはどういう仕組みなのでしょう?

ふむ。ビットコインのアドレスは少なくとも20バイト、つまり160ビットの長さがあって、さらに4バイト、32ビットのチェックサムが付いておる。このチェックサムのおかげで、タイプミスが有効なアドレスになる確率は、なんと2の32乗分の1まで下がるんじゃ。

2の32乗分の1! それはかなり低い確率ですね。でも、実際に使用されているアドレスの数も多いのではないですか?

そうじゃな。実際に使われたビットコインのアドレスは約10億個と言われておる。しかし、アドレス空間全体は2の160乗もあるんじゃ。ランダムな160ビットのシーケンスが、ブロックチェーン上のアドレスに対応する確率は、約10のマイナス39乗分の1じゃ。

なるほど。アドレス空間が非常に大きいから、衝突の可能性は低いということですね。

その通り! X(旧Twitter)のユーザーからの質問で、10億個のアドレスの中に、1文字違いのアドレスが2つ存在する確率についてのものがあったそうじゃ。

1文字違いのアドレスですか。それは興味深いですね。

アドレスがBase58でエンコードされた26文字の文字列だと仮定すると、1文字違いのアドレスの数は325個、2文字違いのアドレスの数は50,050個になるんじゃ。

そんなにたくさんあるんですね!

じゃろ?さらに、10億個のアドレスがあって、各アドレスには100万個の類似したアドレス(タイプミス)があると仮定すると、10の45乗個のアドレスとタイプミスが存在することになる。アドレス空間は10の52乗じゃ。

それでも、アドレス空間は十分に大きいということですね。

そういうことじゃ。10の45乗のアドレス空間を、それぞれ100万個のタイプミスを持つ10億個のアドレスに分割すると、衝突が発生する確率は低いんじゃ。衝突が発生する確率が50%になるには、約√N回のランダムな試行が必要で、Nはアドレス空間のサイズじゃからな。

√N回の試行、ですか。それはかなり多いですね。

じゃ。10億は10の45乗よりもはるかに小さいから、タイプミスを考慮しても、2つのアドレスが衝突する可能性は低いと言えるんじゃ。

よくわかりました、博士。チェックサムと大きなアドレス空間のおかげで、タイプミスによる誤送金の心配は少ないのですね。

そういうことじゃ!でも、油断大敵!アドレスをコピー&ペーストするときは、最初の数文字と最後の数文字を必ず確認するのじゃぞ!

はい、気をつけます。ところで博士、もしタイプミスで誰かのアドレスに偶然送金してしまったら、どうなるんでしょう?

うむ、それは…その人に感謝されるかもしれんのじゃ!…って、そんなこと滅多にないからの!ハッハッハ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。