通過公鑰生成公鑰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...