Re: Bitcoin アドレスの衝突

人物: ec
NewLibertyStandardの投稿(2010年2月23日 00:22 UTC)

Bitcoin を初回起動したときに生成される秘密鍵のことを言っているのか? もし誰かが他人の鍵を複製することに成功したら、全ブロックをダウンロードした後、元の鍵の所有者と同じ残高を持つことになる。そういうことだよな?

その通りだ。ウォレットを共有することになり、先にお金を使う競争になる。

NewLibertyStandardの投稿(2010年2月23日 00:22 UTC)

自分が言っていたのはカスタム Bitcoin アドレスのことだ。bitcoin を送ってくる相手の名前でラベルを付けて、誰からの支払いか分かるようにするものだ。これらのアドレスは前述の秘密鍵から生成されると思う。衝突について疑問なのは、非常にユニークではあるが、すべての bitcoin クライアントで簡単に何度でも生成されるからだ。

ソースコードを正しく読んでいれば、鍵は常にペアで作られる。つまり、すべてのアドレスには対応する秘密鍵がある。「New Address」をクリックすると、main.cpp の GenerateKey が呼ばれ、新しい鍵ペアが生成される。したがって、重複アドレスは究極的には重複公開鍵を意味する。これは非常に起こりにくい。

鍵は確かに「簡単に生成される」が、衝突が起きるまでには膨大な数の鍵を生成する必要がある。確信はないが、生成される鍵の空間は 256 ビットのようで、UUID に関する Wikipedia 記事で見通しが示された 122 ビットよりもはるかに大きい。123 ビットは 122 ビットの半分の衝突確率であり、124 ビットはさらにその半分、といった具合だ。