位元幣原始碼解讀之私鑰 公鑰和位址

2021-08-19 10:04:47 字數 1632 閱讀 8682

通過公鑰生成公鑰hash

通過公鑰hash生成位址

位元幣是建立在數字加密基礎上的,接觸過位元幣的朋友應該知道:

(1)購買位元幣最後是通過乙個位元幣位址進行的,位元幣位址就像支票中的支付物件(收款方);

(2)而位元幣位址則是通過公鑰單向雜湊生成的;

(3)而公鑰則是通過私鑰使用橢圓曲線演算法生成的,

(4)而私鑰通過作業系統底層生成的256位隨機熵;

位元幣系統的私鑰、公鑰和位址生成是通過openssl庫實現的。

具體流程圖如下所示:

ckey

key;

key

.makenewkey

();void

makenewkey

()

vector

<

unsigned

char

>

getpubkey

()const

cprivkey

getprivkey

()const

mapkeys

[key

.getpubkey

()]=

key.

getprivkey

();[hash160

(key

.getpubkey

())]

=key

.getpubkey

();公鑰先使用sha256函式再使用ripemd160函式生成公鑰hash

inline

uint160

hash160

(const

vector

<

unsigned

char

>&

vch)

inline

string

hash160toaddress

(uint160

hash160

)

inline

string

encodebase58check

(const

vector

<

unsigned

char

>&

vchin

)

inline

string

encodebase58

(const

vector

<

unsigned

char

>&

vch)

位元幣原始碼解讀之創世塊的產生

公鑰 私鑰 位元幣私鑰 公鑰 錢包位址之間的關係

錢包位址生成 2 私鑰 經過secp256k1演算法處理形成了 公鑰 secp256k1是一種橢圓曲線演算法,通過乙個已知的 私鑰 可以算出 公鑰 而 公鑰 無法反向計算出 私鑰 這是保障位元幣安全的基礎演算法。3 同sha256一樣,ripemd160也是一種hash演算法,可以由 公鑰 計算得到...

位元幣位址生成演算法之公鑰和私鑰(上)

關於橢圓曲線部分的知識,我就不寫了,不是因為簡單,恰恰相反,因為太難了,我自己也沒搞懂。這裡我只寫一點寫 的時候需要掌握的一點點知識。首先是公鑰,我們可以把公鑰看成是乙個二維座標上的點,作為乙個二維座標上的點,它當然有x軸和y軸兩個數來共同決定。另外,這兩個數還特別大,每個數要用256bit來儲存,...

位元幣原始碼解讀一

上次在ubuntu系統中將位元處原始碼編譯環境設定好了後,還沒有具體分析裡面的 今天我們就解讀一下。原始碼版本是bitcoin 0.9.5rc2。我們說驗證位元幣客戶端安裝成功就是從 which bitcoind 這個命令進行驗證的,因為位元幣客戶端有兩個。乙個是圖形介面的版本,通常被稱為 bitc...