Vanitygen:為什么生成以大寫字母開頭的地址更容易?
在嘗試使用 Vanitygen 生成公鑰時,如果我將第一個字元設為大寫字母而不是小寫字母,我會得到更短的時間。
不應該一樣嗎?有沒有其他人經歷過這個?這種差異背後的數學/邏輯是什麼?
我從deepceleron 在 bitcointalk 上的文章中複製了這個:
更改發生在特定地址:
前綴難度:77178 1QLa
前綴難度:78362 1QLb
前綴難度:4553521 1QLc
這是 25 字節(50 位十六進制)比特幣地址如何轉換為 Base58(由數字和字母表示)的一個怪癖,以及可以儲存在 25 個 base256 位和 34 個 base58 位中的不同最大值。
原生二進制形式的比特幣地址(你從未見過)是 25 個字節,它的部分是:
**字節 0:**網路 ID 字節(主要比特幣網路為 0x00)
字節 1-20: sha256 雜湊的成熟 160 雜湊(20 字節)( 32字節)0x04+公鑰(65字節)
**字節21-24:**校驗和:上面字節0-20的sha256雜湊的sha256雜湊的前四個字節
這將是 50 個十六進製字元長(base16),可能的數字值介於 0-F 之間。
我們將忽略字節 0,它始終為 0x00,並且 Base58 轉換始終通過直接將其編碼為“1”來保留此前導 0 字節。
這意味著地址的“虛榮”部分是字節 1-24、24 字節的隨機散列輸出或 48 個十六進制數字。這可以是最大值是0x FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF ffff ffff(小寫的“f”是校驗和,對於最大的ripemd160值,不會都是FFFF。)我們可以猜測從下面的輸出中可以看出,這個以 Base58 編碼的最大可能地址值變為 1QLbxxxxxx…. 一些東西:
1QLa8LNNFeYs7KJWvxMdR5YtRjkwtQtkyb 1QLabhman6ZQyz3musbqV1RjFmE3pyT29j 1QLaJHv2LCSYo8WgT9qPf4rdttduRGyozX 1QLarwzJCUWGuQEZ4uWPsYVz8N2P5XmeQU 1QLckWG2tx17suupYU2FfeWunTCZMuJKW 1QLcMk7NVLwvg8gw2ihJTuG8x7WLYCjMg 1QLcLr6AoN687CpH1JZnfeMmWvUka5NHX 1QLc47945bSCv4J1Z4yRuvUbtooQqmGJ1 1QLcU9NNxaqfvqMRXD8dFtL2SktL3YmBT 1QLc1D24uDbvy327MzifEChVvATAeDsbF
看看 1QLa 地址是全長的,但 1QLc 地址短了一位嗎?這是因為獲得從 1QLc 或更高開始的地址的唯一方法是使用小 59 倍的二進制地址。