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

2021-08-21 04:34:24 字數 1943 閱讀 3035

位元幣交易涉及到很多密碼學知識:公鑰、私鑰、雜湊、對稱加密、非對稱加密、簽名等等。那麼哪些是需要使用者認真保管不能對外洩露的,那些是需要使用者公開的呢?先從錢包位址的生成說起。

錢包位址生成

1. 首先使用隨機數發生器生成乙個『私鑰』。一般來說這是乙個256bits的數,擁有了這串數字就可以對相應『錢包位址』中的位元幣進行操作,所以必須被安全地儲存起來。

2. 『私鑰』經過secp256k1演算法處理生成了『公鑰』。secp256k1是一種橢圓曲線演算法,通過乙個已知『私鑰』時可以算得『公鑰』,而『公鑰』已知時卻無法反向計算出『私鑰』。這是保障位元幣安全的演算法基礎。

3. 同sha256一樣,ripemd160也是一種hash演算法,由『公鑰』可以計算得到『公鑰雜湊』,而反過來是行不通的。

4. 將乙個位元組的位址版本號連線到『公鑰雜湊』頭部(對於位元幣網路的pubkey位址,這一位元組為「0」),然後對其進行兩次sha256運算,將結果的前4位元組作為『公鑰雜湊』的校驗值,連線在其尾部。

5. 將上一步結果使用base58進行編碼(位元幣定製版本),就得到了『錢包位址』。

比如, 1a1zp1ep5qgefi2dmptftl5slmv7divfna

『私鑰』『公鑰』『錢包位址』間的關係

在上述的五個步驟裡只有「base58編碼」有相應的可逆演算法(「base58解碼」),其他演算法都是不可逆的,所以這些資料之間的關係可以表示為:

可以看到:

通過『私鑰』可以得到上述計算過程中所有的值。

『公鑰雜湊』和『錢包位址』可以通過互逆運算進行轉換,所以它們是等價的。

使用『私鑰』對交易進行簽名

位元幣錢包間的轉賬是通過交易(transaction)實現的。交易資料是由轉出錢包『私鑰』的所有者生成,也就是說有了『私鑰』就可以花費該錢包的位元幣餘額。生成交易的過程如下:

1. 交易的原始資料報括「轉賬數額」和「轉入錢包位址」,但是僅有這些是不夠的,因為無法證明交易的生成者對「轉出錢包位址」餘額有動用的權利。所以需要用『私鑰』對原始資料進行簽名。

2. 生成「轉出錢包公鑰」,這一過程與生成『錢包位址』的第2步是一樣的。

3. 將「轉出簽名」和「轉出公鑰」新增到原始交易資料中,生成了正式的交易資料,這樣它就可以被廣播到位元幣網路進行轉賬了。

使用『公鑰』對簽名進行驗證

交易資料被廣播到位元幣網路後,節點會對這個交易資料進行檢驗,其中就包括對簽名的校驗。如果校驗正確,那麼這筆餘額就成功地從「轉出錢包」轉移到「轉入錢包」了。

小結

如果乙個『錢包位址』從未曾傳送餘額到其他『錢包位址』,那麼它的『公鑰』是不會暴露在位元幣網路上的。而公鑰生成演算法(secp256k1)是不可逆的,即使『公鑰』暴露,也很難對『私鑰』的安全性造成影響(難易取決於『私鑰』的生成演算法)。

『私鑰』用來生成『公鑰』和『錢包位址』,也用來對交易進行簽名。擁有了『私鑰』就是擁有了對這個錢包餘額的一切操作權力。

所以,保護『私鑰』是所有位元幣錢包應用最基本也是最重要的功能。

本文僅討論標準p2pkh交易方式,p2sh不在討論範圍內。

歷史上發生過校驗錯誤的交易被打入到blockchain中的事情,這種交易中的位元幣永遠地消失在cyberspace中了。

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

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

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

位元幣交易涉及到很多密碼學知識 公鑰 私鑰 雜湊 對稱加密 非對稱加密 簽名等等。那麼哪些是需要使用者認真保管不能對外洩露的,那些是需要使用者公開的呢?先從錢包位址的生成說起。1.首先使用隨機數發生器生成乙個 私鑰 一般來說這是乙個256bits的數,擁有了這串數字就可以對相應 錢包位址 中的位元幣...

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

位元幣交易涉及到很多密碼學知識 公鑰 私鑰 雜湊 對稱加密 非對稱加密 簽名等等。那麼哪些是需要使用者認真保管不能對外洩露的,那些是需要使用者公開的呢?先從錢包位址的生成說起。1.首先使用隨機數發生器生成乙個 私鑰 一般來說這是乙個256bits的數,擁有了這串數字就可以對相應 錢包位址 中的位元幣...