A. 聊聊錢包、私匙、公匙和地址
自從比特幣誕生伊始,與此相關的私鑰、公鑰、地址等名詞概念就不斷出現在大眾眼前,那麼這四個概念之間是什麼樣的關系呢?今天就給大家簡單聊一些相關的專業名詞和背後的邏輯。
1 這些名詞的關系是什麼樣的?
如果用一句話說明這幾個名詞的關系,那就是: 錢包生成私鑰 → 私鑰生成公鑰 → 公鑰生成公鑰哈希 → 公鑰哈希生成地址 → 地址用來接受比特幣 ,簡單吧,能聽懂吧。
2 這幾個名詞究竟是什麼東西?
還是一句話概括, 除了錢包是軟體以外,剩下的四個都是長度不一的字元串 ,比如私鑰是52位的字元串,地址是34位的字元串。
3 這四個字元串分別從哪裡來的?
私鑰 由錢包軟體隨機生成,隨後用密碼演算法生成公鑰和地址,如果用等式表示的話,可寫成如下形式:
公鑰=演算法1(私鑰)
公鑰哈希=演算法2(公鑰)
地址=演算法3(公鑰哈希)
所以, 地址 =演算法3(演算法2(演算法1(私鑰)))
其中,演算法1,演算法2,演算法3都是公開的演算法。
4 這幾個字元串哪個必須保密,哪個可以公開?
私鑰絕對不能公開 ,因為有了它本質上就取得了對應比特幣的所有權。
地址可以公開 ,因為它是用來接受比特幣的, 公鑰和公鑰哈希也可以公開 ,不過一般情況下你看不到。
5 為什麼地址和公鑰可以公開?
因為 即使被別人知道了地址和公鑰,對方也推算不出你的私鑰,也就掌握不了你的比特幣 。
為什麼推算不出?
舉個例子。電影《模仿游戲》中,英軍即使在得到了engima密碼機(演算法)後仍然無法破解德軍的密碼,原因就是德軍每次發信息都會用一個新的口令(私鑰)作為起始點。在不知道口令的前提下,進行反向暴力破解大概需要幾千萬年,不過最後因為刻板的德國人每次都用同一個口令作為起點,而這個口令還是自然語言,導緻密碼被破解。
所以,每次交易的時候才會要求生成一個新的私鑰,然後得到一個新的地址,這樣你的交易安全性就有了很大的保障。
6 做自己開心的事
從上面的描述我們可以推出,私鑰的本質是一個復雜數學問題的解,當有人向公開地址發送比特幣時,其實是在向全網所有比特幣客戶端發出了一道數學題,而這道題目的正確解,就是你的私鑰。因為那道題是用你的私鑰生成的呀,所以只有你能在第一時間回答出答案,於是比特幣就歸你了,因此 私鑰千萬不能告訴別人。
如何找到私鑰並妥善保管?
在bitcoin-qt軟體中,進入windows debug或者調試窗口,在命令行下輸入 getaddressbyaccount 命令可以查看所有已經生成的錢包地址。選取其中一個地址,然後用 mpprivkey 「地址」命令就能看到私鑰了(54位字元串)。
下圖是用getaddressbyaccount 「」命令查看地址列表,用mpprivkey查看私鑰的截圖,注意第一張圖中由於錢包是加密的,所以直接打mpprivkey命令是看不到私鑰的。
輸入錢包密碼後才能用mpprivkey命令看到私鑰。
剛已經說了私鑰非常的重要,它是真正決定比特幣歸誰的證明。私鑰在bitcoin-qt客戶端里,實際上是存在於一個叫wallet.dat的文件里的,而且剛安裝的bitcoin-qt客戶端是不設密碼的。萬一電腦落入不法分子手中或被黑客攻擊,導致私鑰丟失,就狠尷尬了,所以一定要設置密碼,且密碼一定要遵守隨機復雜大小寫字元數字都有的規則。建議用專門的密碼生成軟體生成,關於密碼軟體,找機會專門說一下。
特別注意,千萬千萬千萬記住了,一定不要把密碼給忘了!因為你 忘了密碼就打不開錢包 wallet.dat 文件了,也就找不到私鑰了 ,然後,就沒有然後了。
我就發生過剛開始倒騰錢包把密碼搞錯了,然後打不開錢包的尷尬,最後只好怒刪wallet.dat文件,讓系統再自己生成一個,這時候的感覺大約相當於把一筆錢埋在了宇宙某顆星球上,然後把坐標圖搞丟了,因為比特世界只認私鑰不認身份證,你掉了就是掉了,再也找不回來了。
不過正因為比特幣的所有權是依靠私鑰確認的,也就有個最狠的保存辦法,老貓也提過,那就是,找到私鑰後記在紙上,然後把紙鎖在保險櫃里,或者乾脆記在腦子里,不過54位的字元串誰特么能記住?然後把電腦上的客戶端連同錢包文件一起刪除。
好了,關於錢包客戶端,大概就說這些吧,相關知識我也是剛開始了解,隨著了解信息的增加,可能會有更新的認識,到時候會再寫出來。
千萬注意,千萬注意,千萬注意不要搞丟了私鑰。
B. 入門科普:比特幣的私鑰、公鑰和地址是什麼
上一篇,我們講到了幣圈要注意防範傳銷、洗錢等一類的騙局,保護好自己的資產。這一篇,我要告訴大家,進行比特幣交易時,都會用到的私鑰、公鑰與地址,如果你還不了解它們的重要性,隨便交易,很容易弄丟自己的資產。那什麼是私鑰、公鑰與地址?三者之間有著什麼樣的關系呢?
01
私鑰
1.導出:
創建錢包後,輸入密碼可以導出私鑰,私鑰由很長的字元串組成,且是隨機生成的, 一個地址只有一個私鑰。
2.用途:
用於控制交易時的簽名,擁有私鑰才能控制賬戶的資金,相當於銀行賬戶的交易密碼,用來解密公鑰加密的信息。
3.注意事項:
私鑰是用來證明這筆交易的發起人確實是比特幣的所有者。所以 私鑰一定不能曝光,私鑰一旦泄露,你的比特幣將會有被盜的風險。 用戶必須保管好私鑰,防止泄露或丟失。
02
公鑰
1.導出:
公鑰是由私鑰通過演算法生成的,使用了橢圓曲線加密, 通過私鑰可以計算出唯一的公鑰。
2.用途:
公鑰是用來驗證交易的簽名,一個私鑰簽名的數據,只有對應的公鑰才能對其進行驗證,公鑰相當於銀行賬戶,公開後無風險。
03
地址
1.導出:
地址由公鑰生成的,使用了哈希運算。創建錢包後會生成一個以「0x」 開頭的 42 位字元串,這個字元串就是錢包地址,一個錢包對應一個錢包地址, 地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。
2.用途:
由於公鑰太長,在交易中不方便使用,所以就有了地址,地址是由公鑰生成的,地址相當於銀行卡號,用來發送和接收比特幣。
3.注意事項:
平台上不同代幣的轉賬收款地址一般都不同,因此,轉幣到交易平台前一定要確認好地址。
總結
私鑰 → 公鑰 → 錢包地址 (不可逆)
私鑰用來簽名交易,公鑰用來驗證私鑰簽名的交易,地址用來收款。
公鑰、私鑰以及地址都在比特幣交易中起到了不同的作用,所以才能順利的完成一筆數字貨幣的交易。 所以用戶必須好好保存,防止泄露重要信息。
C. 比特幣的地址、公鑰、私鑰,你都了解了嗎
了解比特幣,就不可避免地要掌握什麼是比特幣的地址、公鑰、私鑰。下面我們逐一解釋這些概念。
1. 地址:類似於銀行的賬戶號碼,是在創建數字錢包時自動生成的。簡單來說,創建錢包時會生成一對私鑰和公鑰,然後公鑰通過特定演算法生成地址。這個地址實質上是一串字元,例如。地址用於接收比特幣,就像銀行賬戶用於接收存款一樣。
2. 公鑰:可以看作是比特幣地址的「密碼」。它是一串很長的由錢包生成的隨機數,例如 LBB9ZXMCJ。公鑰用於驗證比特幣的所有權,並且是公開的。
3. 私鑰:相當於銀行密碼,也是一串很長的隨機數。私鑰是唯一能夠證明你擁有比特幣的密鑰,只有使用私鑰才能進行比特幣的轉賬、交易和使用。私鑰必須保密,絕不能泄露給他人。
4. 比特幣的交易是透明的,所有的交易記錄都存儲在一個公開的賬本中。每個交易記錄包括交易流水單號、發幣人的發幣地址、收幣人地址以及發幣人的找零地址。
5. 在比特幣交易中,私鑰會被加密成簽名,並與公鑰一起寫入交易信息中。礦工會將這些信息放入驗證函數中,如果結果為「true」,則交易被認為是真實有效的;如果結果為「false」,則交易存在問題,無法通過驗證。
通過以上解釋,希望能幫助您對比特幣的地址、公鑰和私鑰有一個初步的了解。感謝您的閱讀!
D. 比特幣的地址、公鑰、私鑰,你都了解了嗎
了解比特幣,就不可避免地要掌握什麼是比特幣的地址、公鑰、私鑰,下面我們一個一個來解釋。
地址,就好比是銀行賬(卡)號,在創建數字錢包後就會自動生成,簡單來說,就是創建錢包的時候,先產生一對私鑰和公鑰,然後公鑰通過一套演算法生成地址,這個地址實質上是一串字元,比如。
像銀行賬(卡)號可以用來收款一樣,比特幣地址也可以用來接收比特幣。
這個比特幣地址不單單給你轉幣的人知道,連整個比特幣網路的人都能查看,可以說,全球所有用戶的地址都可以被任何人知道。為什麼這樣說呢?因為比特幣本質就是一個大型的公開賬本,所有交易對所有人都是可見的。而交易記錄中包括了交易流水單號、發幣人的發幣地址、收幣人地址、發幣人的找零地址。
私鑰,可以看作是銀行密碼,是一串很長的由錢包生成的隨機數,比如, LBB9ZXMCJ。私鑰是唯一能夠證明你擁有的比特幣是屬於你的,也只有用私鑰才能轉賬、交易和使用數字錢包里的比特幣。
我們都知道了,銀行密碼絕對不能泄露給別人,私鑰也一樣,打死也不要告訴他人,否則你的比特幣很容易就被轉走。銀行的錢被盜了,因為有國家監管和第三方信用,還有可能被追回,但比特幣是去中心化的,沒有第三方,自己的幣只能自己負責看管,丟了,或被他人轉走了,就永遠拿不回來了。所以千萬千萬不要把私鑰告訴他人,不要把私鑰保存在手機或者電腦上,不要通過網路傳輸你的私鑰,那怎麼辦?記住了,要用筆寫在紙上,寫兩到三份分別放在不同的地方,保管好。
公鑰,顧名思義,是可以公開的,也是像地址和私鑰一樣,是一串長長的字元。公鑰由私鑰通過橢圓曲線加密演算法生成,通過私鑰可以算出唯一一個公鑰,但公鑰不能逆向推導出私鑰。
那到底比特幣地址、公鑰、私鑰在交易中起什麼作用的呢?
首先,錢包通過加密演算法把私鑰加密成字元串(也叫作簽名),然後把這個字元串,和公鑰一起寫到交易信息里,再發給礦工。礦工收到信息後,就會將簽名、公鑰寫入一個驗證函數,如果得出的結果為「true」,那麼這個交易會被確認為真實有效,就能被驗證通過。而結果為「false」,則說明這筆交易存在問題,不能被驗證通過。
通過以上淺顯的文字,希望能幫到你對比特幣的地址、公鑰和私鑰有一個初步的了解吧!感謝你的閱讀!
E. 什麼是公鑰、私鑰、密碼、助記詞、Keystore
1. 公鑰:相當於數字貨幣錢包的地址,可以理解為銀行賬戶。公鑰的地址是由公鑰通過計算得來,類似於銀行開戶後給您的銀行卡號。錢包地址主要用於接收款項,也可作為轉賬的憑證,類似於別人向您匯款時需要知道您的銀行卡卡號。常見的錢包地址樣式包括比特幣的普通地址(以1開頭)、隔離見證地址(以3開頭)、以太坊地址(以0x開頭,包括基於以太坊平台的代幣)以及瑞波幣地址(以r開頭)和萊特幣地址(以L開頭)。
2. 私鑰:非常重要,可以看作是銀行卡號加上銀行卡密碼。創建錢包時,輸入密碼即可導出私鑰。私鑰由字母和數字組成的字元串構成,每個錢包地址只有一個私鑰,且不可更改。私鑰應當離線保存,避免進行網路傳輸,最好將其記錄在紙上保存。私鑰的主要用途是在同系列的任何一款錢包上導入資產,類似於您在丟失手機後,只要有私鑰就可以恢復錢包。
3. 密碼:相當於銀行卡密碼。在創建數字貨幣錢包時,需要設置一個不少於8個字元的密碼。密碼主要用於兩個方面:一是在轉賬時需要輸入密碼,類似於使用銀行卡給他人轉賬時需要輸入密碼;二是當使用Keystore文件導入錢包時,必須輸入這個密碼。密碼可以進行修改或重置,如果您忘記原密碼,可以使用私鑰或助記詞導入錢包,並設置新的密碼。
4. 助記詞:等於私鑰,也可以理解為銀行卡號加上銀行卡密碼。由於私鑰由64位字元串組成,不便於記錄,非常容易抄錯,因此推出了助記詞,方便用戶記憶和記錄。助記詞由12個單片語成,每個單詞之間用空格分隔。一個錢包地址只有一套助記詞,且不能修改。助記詞備份後,在錢包中便不會顯示,因此務必在備份時仔細抄寫,防止抄寫錯誤,並多次核對。
5. Keystore:Keystore加上密碼等於私鑰,但Keystore不等同於銀行卡號。Keystore文件相當於加密後的私鑰。在導入錢包時,只需輸入Keystore文件和密碼即可。與使用私鑰或助記詞導入錢包不同,後者不需要原密碼,可以直接重置密碼。每個Keystore文件都有一個對應的密碼,且密碼無法更改。但是,可以通過錢包的助記詞重新生成Keystore文件,新文件可以用新的密碼生成。生成新Keystore後,最好刪除舊的Keystore文件以保證安全。
總結:數字貨幣錢包創建後,公鑰和私鑰是成對出現的,它們都是由字母和數字組成的字元串。Keystore文件和助記詞可以視為私鑰的另一種表現形式。助記詞作為錢包私鑰的友好格式,非常便於備份和導入。錢包地址可以通過私鑰、助記詞或Keystore加密碼導入錢包找回。密碼可以通過私鑰、助記詞導入錢包並重置。如果私鑰、助記詞或Keystore加密碼中的任何信息泄露,別人就可以控制您的錢包,裡面的幣就會被轉移走。私鑰可以推導出公鑰,公鑰可以推導出地址,但無法通過地址或公鑰推導出私鑰。
在生活中,銀行開戶是先開設賬戶,然後得到卡號和設置密碼。在數字貨幣領域,則是先設置密碼(私鑰),然後得到賬戶地址(公鑰),最後是地址。在錢包安全管理方面,主要要注意防盜和防丟。防止私鑰泄露或丟失。注意事項包括:不要泄露私鑰、助記詞或Keystore加密碼的信息;重視備份,並進行多次驗證以防止錯誤;避免在線備份或通過第三方工具傳輸您的錢包密鑰;將備份內容放在安全的地方,並告知家人以防不測。數字貨幣錢包的主要作用是安全存儲資產,這是最重要的。在投資錢包時,應當注重資產的安全和私密性,避免投資失敗導致損失。