中本聰這一項設計,卧槽,好有道理.......
大家好,我是三七,今天我們依舊接著上期繼續共讀《精通比特幣》,今天的內容主要分為兩部分:比特幣客戶端和密鑰、地址、錢包。
第一,比特幣客戶端
第二,密鑰、地址、錢包是什麼?
一、比特幣客戶端
比特幣客戶端通常由一個錢包和多個比特幣地址組成,比特幣地址是可以公開的,任何人都可以通過這些地址轉把幣轉到你的錢包。
大概長成這樣:Acdid9KFAaatwczBwBttQcwXYCpvK8h7FK,或者是一個二維碼。發送比特幣的人只需要輸入地址和金額,收到的人就會用私鑰(以下會介紹)簽名這筆交易,這也相當於公告了全網:比特幣從一個地址轉移到了另外一個地址。
從交易完成到"確認"大概需要10分鐘,因為交易須由曠工開採打包成區塊,這樣才會被全網接受為"已確認"。
接下來我們詳細看下整個過程:
—1.完整客戶端 —
自己維護一個全節點客戶端的成本比較高,但是可以保證你的錢包是安全的。如果你有幾千個甚至幾萬個比特幣,可以考慮用這種方式來實現安全存儲。如果數量不多,可以依賴於其他的伺服器和第三方服務,就是普通用戶常用的"輕量級客戶端", 不保存完整歷史,而通過信賴的第三方伺服器來獲取交易信息。大家通過OkCoin、雲幣網購買BTC就是這種形式。
我們主要來看維護一個全節點客戶端。
從http://bitcoin.org下載的客戶端包含了比特幣系統的所有方面,是一個獨立的完整節點。但是正因為包含了所有歷史數據,下載整個區塊鏈可能就需要好幾天,請確保你有足夠的容量的硬碟、帶寬和時間。
—2. 編譯比特幣源碼 —
對於開發者,可以從GitHub上的比特幣頁面 https://github.com/bitcoin/bitcoin 下載代碼自行編譯,從終端運行bitcoind,也需要下載所有區塊。在書裡面一步步教授了比特幣核心的JSON_RPC API介面的使用,包括以下技能點:
(1) 獲取比特幣核心客戶端狀態信息
(2) 錢包設置及加密
(3) 錢包備份、純文本導出和恢復
(4) 錢包地址及接收交易
(5) 查看區塊信息
(6) 基於UTXO(未花費的交易輸出)的建立、簽名與提交
二、密鑰、地址、錢包
比特幣的所有權是通過數字密鑰、比特幣地址和數字簽名來確立的。數字密鑰實際上並不是存儲在網路中,而是由用戶生成並存儲在一個文件或者簡單的資料庫當中,我們把它稱為錢包。
存儲在用戶錢包中的數字密鑰完全獨立於比特幣協議,通過用戶的錢包軟體生成管理,並不需要區塊鏈或網路。在這當中,密鑰實現了比特幣的許多有趣特性,比如說去中心化信任和控制、所有權認證和基於密碼學證明的安全模型。
每一次比特幣交易都要一個有效的簽名才會被存儲在區塊鏈,而數字簽名是由數字密鑰產生,有了比特幣的密鑰就有了賬戶里比特幣的控制權,所以大家一定要注意安全哦!
—1. 密鑰是什麼? —
密鑰是成對出現的,由一個「私鑰」和一個「公鑰」所組成。公鑰就像銀行的帳號,而私鑰就像控制賬戶的PIN碼或支票的簽名。公鑰用來接收比特幣,私鑰用來對收到的比特幣進行簽名。公鑰由私鑰產生,但知道公鑰是不能反向推導出私鑰,這就保證了比特幣的安全性,這種加密方式稱為非對稱加密。
注意的是,區塊鏈裡面的私鑰都是由錢包來生成的,不是人設定的,由於私鑰的原始格式非常長,直接讓用戶設定是非常麻煩的,所以這個工作由錢包來完成了。但為了保證私鑰的安全性,錢包會「非常隨機」的來生成私鑰。
因此大家在創建錢包的時候,是不需要設定私鑰的,而是設定「轉賬密碼」或者「開啟APP的PIN碼」之類的密碼,但他們並不是私鑰!
具體詳細的解釋大家可點擊下方鏈接來了解:
【非對稱加密】我的人,怎能容別人偷窺?
比特村的財富守護大戰......
私鑰和公鑰|確認過眼神,遇上對的人!
—2. 地址是什麼? —
錢包地址由公鑰 (公鑰是私鑰通過非對稱加密演算法生成) ,相當於銀行卡號 。我們創建錢包後會生成一個以 0x 開頭的 42 位字元串,這個字元串就是錢包地址,一個錢包對應一個錢包地址,地址唯一且不能修改,也就是說一個錢包中所有代幣的轉賬收款地址都是一樣的。
例如,一個錢包中 ETH 的轉賬收款地址和 EOS 的轉賬收款地址是一樣。這一點和交易平台上的不一樣,平台上不同代幣的轉賬收款地址一般都不同,因此,轉幣到交易平台前一定要確認好地址。
有了這個地址,我們只需要把比特幣地址告訴其他人,別人就可以給你轉賬,你也是用這個地址來接收別人給你的幣,地址也可以作為轉幣的憑證。
—3. 私鑰、公鑰、地址的關係 —
因為非對稱加密演算法,私鑰可以唯一生成公鑰,公鑰可以生成錢包地址。但反向是解不出來,私鑰必須始終保持機密,丟了私鑰就相當於丟了比特幣。
具體詳細的解釋大家可點擊下方鏈接來了解:
區塊鏈防篡改的「哈希演算法」!
誰要的數字錢包秘籍,來門口取一下
劃重點:你若把錢包信息忘了,會有什麼後果呢?分這麼幾種情況:
(1)地址忘了,可以用私鑰、助記詞,導入錢包找回。
(2)密碼忘了,可以用私鑰、助記詞,導入錢包重置密碼。(3)密碼忘了,私鑰、助記詞又沒有備份,就無法重置密碼,就不能對代幣進行轉賬,等於失去了對錢包的控制權。
(4)密碼忘了,keystore 就失去了作用。(5)私鑰忘了,只要你錢包沒有刪除,並且密碼沒忘,可以導出私鑰。(6)私鑰忘了,還可以用助記詞、keystore+密碼,導入錢包找回。(7)助記詞忘了,可以通過私鑰、keystore+密碼,導入錢包重新備份助記詞。(8)keystore 忘了,只要你錢包沒有刪除,密碼沒忘,可以重新備份keystore。(9)keystore 忘了,可以通過私鑰、助記詞,導入錢包重新備份 keystore。
可以看出,只要「私鑰、助記詞、Keystore+密碼」有一個信息在,錢包就在。因此,備份好「私鑰、助記詞、Keystore+密碼」最關鍵。
推薦閱讀: