Client
兩個私鑰可以生成相同的(公共)比特幣地址嗎?
我知道私鑰是由錢包隨機生成的。錢包是否有可能生成與比特幣相同的地址?
換句話說:給定兩個私鑰 k a ≠ k b,它們是否可能都生成相同的公共比特幣地址?
**是的,**您可以讓兩個密鑰生成相同的地址。
有 2^160 個可能的地址,以及 2^256 個可能的私鑰,所以每個地址大致對應 2^(256-160)=2^96 個私鑰。其中任何一個都將生成相同的地址,因此能夠花費該地址擁有的錢。然而,由於 2^160 是如此之大,因此要找到任何碰撞都需要近乎永恆的時間。
兩個私鑰是否可以生成相同的公鑰是另一個問題。我認為答案是肯定的,但我不確定。未壓縮形式的公鑰由兩個 256 位數字組成,它們是橢圓曲線上的 X 和 Y 座標。但是,壓縮後的形式只是 X 座標加上一點,您可以從中計算出整個公鑰。這意味著空間是(最多)2 ^ 257。除非由於使用的密碼學的數學特性而存在一對一映射,否則每個壓縮公鑰對應於大約 0.5 個私鑰(與從 1 到 2^257 中選擇隨機數得到的分佈相同) , 2^256 次),所以一些私鑰會發生衝突,而另一些則不會。
實際上要找到任何一對生成相同公鑰或地址的不同私鑰將非常困難。它要麼涉及大量的計算和/或運氣,要麼是由於在所使用的算法中發現了嚴重的漏洞。