比特幣從支付人的錢包地址轉(zhuǎn)移到接收人的錢包地址就是了一個交易。交易前,交易的雙方當事人必須都有錢包地址。這里介紹錢包地址的產(chǎn)生技術過程。
1. 生成隨機私鑰:?
? ? ?隨機選取一個32字節(jié)的數(shù),作為私鑰。
2. 生成私鑰對應的公鑰:
? ? ?使用橢圓曲線加密算法計算私鑰生成對應的非壓縮公鑰。
? ? ?該非壓縮公鑰包括三部分,共65字節(jié)。?
? ? ? ? ? ? ? ?部分(1) 0x04,有一個字節(jié) ;
? ? ? ? ? ? ? ?部分(2) 公鑰P.X ,有32個字節(jié);?
? ? ? ? ? ? ? ?部分(3)公鑰P.Y,有32個字節(jié)。
3. 對公鑰進行SHA-256哈希計算:?
? ? ?將第2步所述的(1),(2),和(3)合并都一起組成為一個標準地址,即(1)+(2)+(3)。
? ? ? 對該標準地址進行SHA-256哈希計算,得到一個哈希值。
4. 再進行RIPEMD-160哈希計算:
? ? ?對第3步計算所得的哈希值進行RIPEMD-160計算,得到結(jié)果。
? ? ?例如:12345678901234abcdefghijklmnopqrstuvwxyz
5. 加入地址版本號(例如00):?
? ? ?就是將版本號(例如00)加到第4步的結(jié)果之前。
? ? ? 即 00 + 12345678901234abcdefghijklmnopqrstuvwxyz。? ? ? ? ? ? ? ? ? ?
? ? ? 得到 0012345678901234abcdefghijklmnopqrstuvwxyz
6. 再進行兩次 SHA-256 哈希運算:
? ? ?將第5步的結(jié)果先進行一次SHA-256計算,可得:
CFD35FA5DEFD89E6AFAE8EC3DFCD4038043DF187606F4A2997733639784F1A2D
? ? ?然后,對這個結(jié)果再進行一次 SHA-256 哈希運算,得到:
997E9A68BA2ED75691E224FFFFF3C8A4C4E947C633A6246583F85081CA725D06
7. 獲得校驗位:
? ? ? ?選取第6步的結(jié)果的前4個字節(jié)(8位十六進制)作為校驗位。
? ? ? ? 即997E9A68。
8. 形成16進制的比特幣地址:
? ? ? 把第7步獲得的4個字節(jié)加在第5步的結(jié)果后面,
? ? ? 即? 0012345678901234abcdefghijklmnopqrstuvwxyz + 997E9A68,
? ? ?得到 0012345678901234abcdefghijklmnopqrstuvwxyz997E9A68
? ? ?也就是: 版本號 + 對公鑰進行SHA-256和RIPEMD-160哈希計算得到的哈希值 +?校驗位。
9. 獲得比特幣錢包地址:
? ? ?最后,用Base58編碼對第8步的結(jié)果進行編碼,得到最終的比特幣錢包地址。