首先,要回答這個(gè)問題,需要對(duì)比特幣的公鑰私鑰和錢包地址,這幾個(gè)的關(guān)系搞清楚。
一、比特幣公鑰私鑰算法
在《比特幣:一種點(diǎn)對(duì)點(diǎn)的電子現(xiàn)金系統(tǒng)》一文中,中本聰提到了用橢圓加密算法(ECDSA)來產(chǎn)生比特幣的私鑰和公鑰。
基于橢圓加密的原理:私鑰是可以計(jì)算出公鑰的,再由公鑰經(jīng)過一系列數(shù)字簽名運(yùn)算就會(huì)得到比特幣錢包地址。
如下:
私鑰 —— 公鑰 —— 比特幣錢包地址
而比特幣中間用到了SHA256加密、RIPEMD160加密和BASE58編碼。
二、私鑰
私鑰就是個(gè)隨機(jī)數(shù),只不過,這個(gè)隨機(jī)數(shù)的概率空間很大(256位,也即是2的256次方),什么概念了,你可以數(shù)數(shù)地球上有多少粒沙子。因此別人是不可能和你生成一樣的私鑰的(1/2^256的概率),這是比特幣甚至整個(gè)密碼的根基。
三、公鑰
而比特幣客戶端看到的私鑰是一串字符串呢?其實(shí)這字符串只是私鑰進(jìn)行了Base58校驗(yàn)和編碼之后的格式而已。完整過程如圖:
經(jīng)過以上的復(fù)雜計(jì)算之后,進(jìn)過11步,Base58編碼,就得到了我們經(jīng)??吹降刂妨恕?/p>
oxWoHJrU7VBArBQYhCX9NxHa1RuQat5Bya(編造的,舉例用)。
比特幣的用戶很少會(huì)直接看到數(shù)字密鑰。一般情況下,它們被存儲(chǔ)在錢包文件內(nèi),由比特幣錢包軟件進(jìn)行管理。
四、交易確認(rèn)
比特幣錢包的私鑰,作用相當(dāng)于密碼,用于證明比特幣的擁有者。擁有者必須使用私密密鑰給交易消息簽名,以證明消息的發(fā)布者是相應(yīng)比特幣地址的所有者。如果沒有私鑰,用戶發(fā)送的簽名就無法被驗(yàn)證。區(qū)塊鏈上賬本不會(huì)認(rèn)可該比特幣的所有權(quán),用戶也就不能使用相應(yīng)的比特幣。
回答問題,也就是說私鑰是唯一的,進(jìn)過計(jì)算得到的公鑰是唯一的,錢包地址也是唯一的。如果別人拿到了你的私鑰,那么他可以計(jì)算出公鑰,可以生產(chǎn)簽名,也就擁有了你的比特幣,如果該了私鑰剛好是別人的私鑰,(幾率非常小,因?yàn)槭请S機(jī)的,不重復(fù)的,空間地址那么大,而且就比特幣的私鑰量來說,也只是占隨機(jī)私鑰地址空間很小很小很小的部分。打個(gè)比方:就相當(dāng)于整個(gè)私鑰空間是地球所有的沙子這么大,每一粒沙子唯一標(biāo)識(shí),而比特幣私鑰只使用了你腳底下那么一點(diǎn)沙子,你隨便改一個(gè),可能改到上海某地的一粒沙子上了,而不是你腳底下的某粒沙子。而那樣的沙子地下是沒有比特幣的),而如果沒有備份私鑰,改了之后,你無法找到私鑰,那么你將永遠(yuǎn)失去這個(gè)私鑰下的比特幣。
碼字不容易啊,各位看官請(qǐng)點(diǎn)贊+關(guān)注。更多互聯(lián)網(wǎng)專業(yè)內(nèi)容。