比特幣地址生成方法

目標:生成比特幣地址

私鑰

公鑰

Base58check編碼

比特幣地址是公開的,爲了收款而設計,生成地址需經歷以下階段:

  1. 獲得私鑰,私鑰爲錢包密碼,不對外可見,事關財產安全
  2. 利用私鑰去生成公鑰,利用橢圓曲線乘法,定義一個私鑰爲k, G爲橢圓曲線上的一點,公鑰爲 K= G * k。 橢圓曲線乘法由橢圓曲線加法累加而來,橢圓曲線加法可簡述爲:一個點與其自身相加等同於在這個點上畫一條切線,找到切斜與曲線相交的點,相交點相對x軸對稱的點就是我們要找的點。生成點是作爲secp256k1標準的一部分定義的,對於比特幣而言,其所有密鑰均使用相同G點。
  3. 生成公鑰哈希:爲了加密公鑰,公鑰需先經歷SHA256進行一次哈希運算,然後從其結果中計算RIPEMD160的哈希值,這樣我們就創建了一個160比特(20字節)長度的數字:A=RIPEMD160(SHA256(K))
  4. 添加版本前綴:爲了指明該哈希所屬用途,我們在上一步生成的公鑰哈希前加入一個前綴:Data = 前綴 + 公鑰哈希
  5. 將上一步得到的Data再次進行兩次哈希加密,這是爲了獲得一個更加安全的驗證碼。具體做法如下:HASH = SHA256(SHA256(Data)), 然後只提取HASH的前4字節作爲校驗碼,並將其添加到Data最後,現在我們有了新的 Data* = Data(前綴 + 公鑰哈希) + 校驗碼
  6. Base58check編碼:這一步的目的是爲了大幅度縮減數據長度,舉個例子,是用十六進制就可大幅縮短十進制下的數字的長度,58代表類似於58進製表示方法,在此不作詳細說明。這一步對上一步Data*進行Base58編碼即可。至此,我們獲得了一個比特幣地址,即一個收款賬號,用來接收支付。

這篇筆記只是爲了描述地址生成大致過程,很多知識沒有展開,具體僞代碼及流程圖,請參考《Mastering Bitcoin》(Andreas M. Antonopoulos)-- 比特幣地址 一章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章