目標:生成位元幣地址
私鑰
公鑰
Base58check編碼
位元幣地址是公開的,為了收款而設計,生成地址需經歷以下階段:
- 獲得私鑰,私鑰為錢包密碼,不對外可見,事關財產安全
- 利用私鑰去生成公鑰,利用橢圓曲線乘法,定義一個私鑰為k, G為橢圓曲線上的一點,公鑰為 K= G * k, 橢圓曲線乘法由橢圓曲線加法累加而來,橢圓曲線加法可簡述為:一個點與其自身相加等同于在這個點上畫一條切線,找到切斜與曲線相交的點,相交點相對x軸對稱的點就是我們要找的點,生成點是作為secp256k1標準的一部分定義的,對于位元幣而言,其所有密鑰均使用相同G點,
- 生成公鑰哈希:為了加密公鑰,公鑰需先經歷SHA256進行一次哈希運算,然后從其結果中計算RIPEMD160的哈希值,這樣我們就創建了一個160位元(20位元組)長度的數字:A=RIPEMD160(SHA256(K))
- 添加版本前綴:為了指明該哈希所屬用途,我們在上一步生成的公鑰哈希前加入一個前綴:Data = 前綴 + 公鑰哈希
- 將上一步得到的Data再次進行兩次哈希加密,這是為了獲得一個更加安全的驗證碼,具體做法如下:HASH = SHA256(SHA256(Data)), 然后只提取HASH的前4位元組作為校驗碼,并將其添加到Data最后,現在我們有了新的 Data* = Data(前綴 + 公鑰哈希) + 校驗碼
- Base58check編碼:這一步的目的是為了大幅度縮減資料長度,舉個例子,是用十六進制就可大幅縮短十進制下的數字的長度,58代表類似于58進制表示方法,在此不作詳細說明,這一步對上一步Data*進行Base58編碼即可,至此,我們獲得了一個位元幣地址,即一個收款賬號,用來接收支付,
這篇筆記只是為了描述地址生成大致程序,很多知識沒有展開,具體偽代碼及流程圖,請參考《Mastering Bitcoin》(Andreas M. Antonopoulos)-- 位元幣地址 一章
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/249114.html
標籤:區塊鏈
