文章簡介:
可能很多人接觸了區(qū)塊鏈很久,至今還未搞清楚比特幣私鑰、公鑰、錢包地址之間的關系。為什么有私鑰就有了地址的控制權?交易驗證這個過程是如何執(zhí)行的呢?雖然這些底層處理并不一定得搞清楚,但如果明白,可以讓你更深刻的理解私鑰的重要性。
知其然,知其所以然……
知識點掃盲
非對稱加密算法:有公鑰私鑰,用公鑰加密的數(shù)據(jù)只有對應的私鑰才能解密,反之亦然;
錢包地址的生成

首先使用隨機數(shù)發(fā)生器生成一個【私鑰】,一般來說是一個256位的數(shù)。
【私鑰】經(jīng)過SECP256K1算法處理生成了【公鑰】。SECP256K1是一種橢圓曲線算法,通過一個已知【私鑰】時可以算得【公鑰】,而【公鑰】已知時卻無法反向計算出【私鑰】。這是保障比特幣安全的算法基礎。
同SHA256一樣,RIPEMD160也是一種Hash算法,由【公鑰】可以計算得到【公鑰哈?!?,而反過來是行不通的。
將一個字節(jié)的地址版本號連接到【公鑰哈?!款^部(對于比特幣網(wǎng)絡的pubkey地址,這一字節(jié)為“0”),然后對其進行兩次SHA256運算,將結果的前4字節(jié)作為【公鑰哈?!康男r炛担B接在其尾部。
將上一步結果使用BASE58進行編碼(比特幣定制版本),就得到了【錢包地址】。
上述可能包含了比較多的專業(yè)術語,我們簡單點來講,私鑰,公鑰以及錢包地址之間的關系可以用下圖來表示:

看到這里,相信大家已經(jīng)明白了這三者的生成關系,那在交易驗證中,三者又是又是起怎樣的作用呢?
交易驗證過程
首先我們看下生成交易的過程(交易驗證的過程就運用了非對稱加密):
用私鑰對交易簽名

用【私鑰】對交易原始數(shù)據(jù)進行簽名,得到轉(zhuǎn)出簽名。
用【私鑰】推出【公鑰】。
將【轉(zhuǎn)出簽名】和【公鑰】添加知道原始數(shù)據(jù)中。
用公鑰對簽名進行驗證

交易數(shù)據(jù)廣播到比特幣節(jié)點對交易數(shù)據(jù)進行驗證。
使用 【轉(zhuǎn)出公鑰】對【轉(zhuǎn)出簽名】進行解密,得到的交易數(shù)據(jù)與原始數(shù)據(jù)比較,若一致,則驗證成功,反之亦然。
本文由幣乎社區(qū)(bihu.com)內(nèi)容支持計劃贊助。
早贊聲明:為方便早贊、避免亂贊,“BH好文好報群”為點贊者、寫作者牽線搭橋,實行“先審后贊、定時發(fā)表”的規(guī)則,也讓作品脫穎而出、速登熱門!本文授權BH好文好報群摘編推廣,加群微信:we01230123(天平)。
本文參考鏈接:http://www.bitcoin86.com/teach/6494.html
如有侵權,請聯(lián)系譯者
版權所有,轉(zhuǎn)載需完整注明以上內(nèi)容。