其實保存加密貨幣,重點是在保護私鑰而不是錢包。
錢包這個詞包含幾種含義,第一、錢包是用來保存跟保護私鑰的,實際上任何一種區塊鏈上認定的交易,都是私鑰簽名出來的,區塊鏈上的任何資產也都是保存在與私鑰相對應生成的地址上,一個沒有任何私鑰的錢包,實際裡面無法也不會存在任何資產。
但私鑰的保存對一般人來說並不容易,不管是抄在紙上、記在電腦中、幾個人分段記在心裡,都有各種遺失的可能,而一旦私鑰遺失,資產還是會留在區塊鏈上相對的地址裡,但將沒有任何人可以使用那地址中的資產,跟遺失了也沒有區別了。因此錢包的第一個作用就是透過各種軟硬體來達成身份驗證、安全加密、私鑰備份,來達到安全保護私鑰、避免遺失的目的。
第二、錢包是用來進行交易的,不管是軟硬體錢包或者冷熱錢包,用戶通過錢包後可以跟區塊鏈的節點聯繫上,開始進行交易,將資產轉移給任何其他私鑰對應的地址。由於私鑰只是一串隨機亂數,一串你可以記錄在紙上或心理的亂數,單純靠私鑰是無法跟區塊鏈裡任何一個節點溝通、無法進行交易的,因此就需要錢包的協助,錢包會根據你地址裡資產的構成,組織出正確的、你想要的交易格式(如轉出 0.1 BTC 給某個地址),然後錢包就會使用保護的私鑰進行簽名,簽名成功的交易在與區塊鏈上的節點溝通,廣播後被礦工打包,交易就成功被執行了。
在這個過程裡,錢包需要確保交易的正確性,比如當用戶輸入完金額跟地址後,錢包必須能正確地把這些訊息組合成最後的交易,簽名後讓交易被打包執行,避免因為中間過程被攻擊,造成組合出的交易與用戶預期不同的問題。因此錢包不只會用來交易,用來協助用戶與區塊鏈的節點之間溝通,更重要是還要確保這中間的過程不會因為任何漏洞或弱點,造成非預期的交易出現。
最後、錢包是可以產生私鑰的,除了保存私鑰,其實多數錢包都可以直接產生私鑰,這其實也是為什麼很多新人都把私鑰跟錢包劃上等號,因為他們接觸區塊鏈的第一步就是下載一個錢包,然後用這個錢包產生私鑰並開始交易,但其實即便私鑰只是一串亂數,如何能夠真正安全的產生出一串足夠長的、不會跟別人重複的亂數,也是考驗錢包的一步,錢包必須注意到
注意生成私鑰時隨機亂數的取得方式,亂數必須符合 NIST SP 800-22 標準。
產生私鑰的種子長度至少要達到 256 bits。
產生私鑰的過程中,如有任何錯誤發生必須馬上中止,以避免生成 “亂度不足” 的私鑰。
由上所述,我們可以知道錢包試圖幫助用戶保護私鑰並且跟區塊鏈溝通,中間肩負的安全性,從產生的私鑰是否安全、亂度是否足夠,產生的交易是否正確、內容是否被更改過,私鑰的保護是否到位、避免私鑰遭竊,這些都是錢包必須做好的工作,如此才能對加密貨幣進行完善的存儲,我們將在接下來進行一系列的介紹,除了針對各種不同種類錢包的工作原理介紹,還會針對這些類型的錢包曾經被攻擊過的案例介紹,讓用戶更了解在使用不同錢包時需要注意的地方。
瞭解更多區塊鏈和加密貨幣在我們的知識中心。