狹義上數字資產錢包為私鑰存儲工具,廣義上含余額查詢、發送交易等基本功能。
錢包行業競爭激烈,目前無較好盈利模式;約70%的錢包支持移動客戶端,對網頁端支持度最弱,僅占26%;61%的錢包為開源項目;65%的錢包提供行情、理財、資訊等附加功能,其中提供交易功能的錢包數最多,約占75%。
錢包種類繁多,對錢包從連網與否、數據存儲、私鑰存儲、主鏈關系以及私鑰簽名這五方面進行了分類闡述,分析了其在安全性、易用性和功能性等策略上的不同。
從技術原理出發,詳細闡述了錢包助記詞、Keystore、私鑰、公鑰和地址產生的方法及其相互關系。
錢包作為區塊鏈世界入口的功能將不斷發展完善,金融屬性也將日趨強化,有望成為多種資產一體化管理入口、DAPP應用入口、通證使用權、收益權等功能性入口
第一章 數字資產錢包產業現狀
1.1 錢包產業概述
根據Statista統計,2018年Q1全球數字資產錢包用戶數為2395萬人,同比增85.80%,環比增長11.34%,增長十分迅猛。
數字資產錢包最狹義的定義是儲存私鑰工具,廣義上則應該包含數字資產余額查詢,發送交易等基本功能(廣義上也能把交易所理解成一種錢包)。
從不同的角度出發,對數字資產錢包的定義和分類都不相同,比如從錢包是否連網來看,可以分為冷錢包和熱錢包,從數據存儲完整性來看又可分為全節點錢包和輕節點錢包等。
從未來發展來看,錢包不僅將作為區塊鏈世界的入口,還會承擔數字資產理財管理,交易兌換等擴展性金融功能,其重要性值得數字資產相關從業者關注。
1.2 錢包產業市場分析
錢包作為區塊鏈產業必不可少的一環,隨著區塊鏈產業的發展和擴張也呈現并行加速的現象,越來越多的項目方加入數字資產錢包領域。相較于全球60億人口和40億互聯網用戶來說,數字資產錢包用戶占比還非常小,未來市場潛力非常巨大。
如下圖所示。當然也意味著區塊鏈目前還處于行業發展的初期,數字資產錢包作為行業配套基礎設施也同樣處于行業早期。
數字資產錢包的安全性是最受關注的話題,特別是私鑰的存儲機制甚為關鍵,約61.29%的項目選擇項目開源,一方面接受各方對其代碼進行監督審查,另一方面也更容易獲得技術極客的幫助,不斷地改進升級,如圖1.6所示。
1.3 錢包商業模式分析
錢包作為私鑰管理工具,目前還沒有很好的盈利變現模式,基本都處于早期積累用戶和沉淀資金的狀態。 為尋求收入來源,各錢包紛紛推出周邊增值服務,一方面為增加用戶黏性,提高流量入口,另一方面也試圖增加收入來源。如提供理財、資訊、POS挖礦、交易、資產聚合等功能。目前有65%的數字資產錢包項目都提供附加功能,如圖1.9所示。
在提供附加功能的錢包項目中,提供數字資產交易或兌換服務的錢包數量最多,約占75%;其次為行情服務,約占60%;提供資產聚合服務的錢包項目最少,僅占5%,如圖1.10所示。
?交易及兌換類服務
錢包用戶天然擁有交易需求,如果幣不用提出錢包就可以實現交易,不但減少了用戶提幣轉幣的操作步驟,減少了犯錯的概率,也增強了用戶黏性,為錢包項目的后續轉型提供了很好的發展方向和資金沉淀。不過內置交易所極大地增加了系統的復雜度,為本身對安全性要求較高的錢包類產品引入了更大的風險,用戶資金安全性將受到一定程度挑戰。
?行情資訊服務
錢包內置豐富的新聞資訊、行情快報、項目簡介、K線圖、大額資金流動監控、代碼活躍度等數字資產市場行情信息。
基于以上提供的各類增值服務,目前主流錢包項目方獲得盈利的幾種方式如表1.1所示。
第二章 數字資產錢包分類概述
隨著行業的發展,市場上出現的錢包產品越來越多,使用的技術、策略以及側重的功能點都不相同,本章將從五個角度出發,對現有的錢包產品做一個分類梳理和總結。如圖2.1所示,可以從五個角度對錢包進行分類梳理,每一種分類方式其實都體現了該錢包所采用的策略重點,以及其面向的用戶群體。有的體現了安全性、有的堅持易用性、而有些則強調功能。
2.1按是否連網分類
數字資產錢包本質上是存儲私鑰的工具,私鑰的安全性至關重要,為了將安全性做到極致,出現了不連網的冷錢包,因此可以依據錢包是否連網分為冷錢包和熱錢包。目前冷熱錢包的項目數量占比如下圖所示,冷熱錢包數量基本符合二八分布定律。
?熱錢包
特點:保持實時連網上線的錢包通常稱為熱錢包。
【貓說】:熱錢包相對于冷錢包使用起來更方便,既可在PC上使用,也可在手機等移動終端使用,還可對錢包內資產隨時進行操作,因此目前83.87%的錢包都為熱錢包模式。但正由于其連網,也給了黑客攻擊的基礎條件,錢包安全性會受到挑戰。不過通常錢包項目方會對存儲的私鑰以及通訊數據包進行加密處理,一定程度上也能避免黑客輕易入侵。
??冷錢包
特點:冷錢包通常指不連網使用的錢包,也叫離線錢包。根據實現方式的不同,還可以分為硬件錢包和紙錢包。硬件錢包用來生成密鑰和保存密鑰,設備本身不會泄露或者輸出密鑰,而只是在我們按下某個按鈕或者輸入設備密碼后顯示密鑰的保管情況。紙錢包,顧名思義就,就是把密鑰記在紙上,然后把紙鎖在保險柜里。
【貓說】:冷錢包將私鑰存儲在完全離線的設備上,相比于熱錢包是更安全的方法,但成本更高易用性更差,需要一臺不連網的電腦專門用于安裝離線端。雖然冷錢包相對于熱錢包更安全,但是冷錢包也不是絕對安全,可能會遇到硬件損壞,錢包丟失等情況,需要做好備份。
2.2按數據存儲完整性分類
數字資產錢包通常和區塊鏈節點關系緊密,依據錢包存儲節點賬本數據的完整性可以將其分為全節點錢包和輕錢包,其中輕錢包也包括SPV節點錢包。由于全節點錢包需要下載所有的賬本數據,會占用大量的存儲空間以及計算資源,不適用于手機等移動終端,也不便于普通用戶使用,故目前市面上約90%的錢包都為輕節點錢包,如下圖所示。
?全節點錢包
特點:全節點錢包參與到網絡的的數據維護中同步了區塊鏈上的所有數據,具有更有隱秘、驗證更快等特點。但是由于數據量比較大,會導致擴展性低。
【貓說】:由于需要同步鏈上信息的原因,很多全節點錢包的幣種單一,不能夠支持多種數字資產,一般為官方錢包。此外,全節點錢包需要占用很大的硬盤空間,并且一直在增長。每次使用前需要先同步區塊數據,會導致易用性變差。
?輕錢包
特點:輕錢包是為了解決全節點錢包需要占據很大的硬盤空間而出現的,不需要存儲完整的區塊數據。雖然輕錢包不會下載新區塊的所有數據,但是它會對數據進行分析后,僅獲取并在本地存儲與自身相關的交易數據,運行時依賴比特幣網絡上的其他全節點,一般在手機端和網頁端運行。
【貓說】:輕錢包可以有更多的擴展性,一方面可以在幣種上進行擴展,用來很方便地對多種資產進行管理。另一方面可以在運行DAPP。因為它只同步和自己相關的數據,所以很輕便。輕錢包根據實現原理可以分為中心化錢包和去中心化錢包。比如,客戶端錢包,瀏覽器錢包,網頁版錢包等。
2.3按私鑰存儲方式分類
私鑰是數字資產領域安全的核心,而錢包的本質其實是幫助用戶方便和安全地管理和使用私鑰,因此,私鑰的存儲方式非常關鍵,按照私鑰是否存儲在本地,我們可以將錢包分為中心化錢包和去中心化錢包兩種類型,目前去中心化錢包為主流模式,約占82.76%。
?中心化錢包
特點:私鑰不由用戶自持,而是由錢包項目方在鏈下中心化服務器上保管,通常資金也交由服務方托管。
【貓說】:中心化錢包通常也叫Offchain錢包,私鑰和資產都交由錢包進行中心化管理,此種方式的錢包產品用戶不必擔心私鑰丟失而導致資金損失,通常可支持密碼找回功能;不過資金風險會更集中在錢包項目方,中心化服務器一旦被黑客攻克,用戶將遭受不必要的損失。
?去中心化錢包
特點:私鑰由用戶自持,資產存儲在區塊鏈上。
【貓說】:去中心化錢包通常也叫Onchain錢包,私鑰的保管都轉交給用戶,若私鑰遺失,錢包將無法幫用戶恢復,資金將永久遺失;但去中心化錢包很難遭受黑客的集中攻擊,用戶也不用擔心錢包服務商出現監守自盜的情況。
2.4按主鏈關系分類
目前各區塊鏈公鏈都是較為獨立的平臺,平臺和平臺之間缺乏直接的互通,因此各類錢包出現了兩大分化,一種是專門針對某一公鏈平臺的主鏈錢包,通常由平臺項目方或者社區開發提供;另一種則是同時支持多平臺接口的多鏈錢包,支持的資產類型較為多樣。依據火幣區塊鏈研究院整理的數據顯示,主鏈錢包約占35.48%,支持多鏈的錢包占絕對多數,隨著行業的發展,這一比例可能進一步被拉大。
?主鏈錢包
特點: 對于可以定制化發行通證的公鏈我們定義其為平臺類公鏈,此類公鏈上可以運行多種DAPP,平臺專屬錢包不僅是為了滿足平臺類通證正常使用所必備的核心組件,也可以作為一個應用商店,對基于其平臺開發的DAPP進行集中宣發和鏈接跳轉。
【貓說】: 對于平臺類公鏈來說,平臺通證通常具備一定的使用功能,平臺上的各類角色所開展的活動都是圍繞通證來進行,比如說礦工、平臺用戶、存儲節點或者是計算節點等,因此需要錢包來作為各方進行通證存儲和流通的節點。錢包也可以作為平臺類項目是否可用的判斷標準之一。
?多鏈錢包
特點: 可支持多種主鏈平臺通證的錢包。
【貓說】: 不同的主鏈通常采用的技術方案都各不相同,如果要支持多種主鏈平臺的通證接入錢包,則需要逐一進行接口開發,有一定的開發難度和工作量。此類錢包對于支持內置交易所和跨鏈互兌業務有著天然的優勢。
2.5按私鑰簽名方式分類
為了加強數字資產的安全性并配合某些應用場景使用,出現了需要多方私鑰簽名才可使用錢包的策略,因此可將錢包分為單簽名錢包和多簽名錢包。依據火幣調研的統計數據分析,如下圖,支持多簽名的錢包僅占25.81%,單簽名模式是市場上更受歡迎的方式。
?單簽名錢包
特點:只需單個私鑰簽名即可交易。
【貓說】:單簽名模式簡單,用戶可操作性強,但由于只有一個密鑰,風險也更集中,私鑰持有賬戶的單點淪陷——如果丟失或者泄漏私鑰會可能直接導致賬戶中所有的資產的丟失。
?多重簽名錢包
特點:必須有2個(或多個)私鑰同時簽名才可以交易。
【貓說】:通常一個私鑰用戶保存,一個交給服務器,如果只有服務器私鑰被盜,黑客沒有本地私鑰,交易時無法簽名的。也可用于公司或者組織內由多方共同管理財產場景下使用,密鑰由多位成員管理,需多數成員完成簽名才可動用資產。多重簽名機制相較于單簽名是更安全了,但易用性卻受到很大的影響,用戶需要理解一些技術細節,還需要多方協同,學習和使用成本高了不少。此外,多重簽名的機制更復雜,也帶來一些安全隱患,如parity錢包的多重簽名機制就被黑客利用,令逾15萬個以太坊被盜。
第三章 數字資產錢包技術實現原理
3.1技術總覽
數字資產錢包技術實現主要包含三個部分:
1.錢包自身設計,如何生成助記詞,keystore和密碼等;
2.私鑰、公鑰和地址產生的方法;
3.錢包提供商遠程調用各公鏈RPC接口設計;
如下圖所示,可總體概括數字資產錢包實現的技術流程:
眾所周知,私鑰為一串無規律字符串,非常不便于記憶,使用更是不方便,所以從錢包設計的角度,為簡化操作同時又不失安全性,就出現了助記詞的方法。一般情況下,助記詞由一些單詞組成,只要記住這些單詞,按照順序在錢包中輸入,就能打開錢包,下文將詳細闡述其中的原理和方法。
3.2錢包設計框架
3.2.1生成助記詞(BIP39標準)
助記詞庫有2048個詞,用11位可全部定位詞庫中所有的詞(2^11=2048),作為詞的索引,故一個詞用11位表示,助記詞的個數可為(熵+校驗和)/11,值為12,15,18,21,24。規定熵的位數必須是32的整數倍,所以熵的長度取值為128到256之間取32的整數倍值,分別為128,160,192,224,256;校驗和的長度為熵的長度/32位,所以校驗和長度可為4,5,6,7,8位。
生成助記詞的具體步驟如圖所示:
1)生成長度為128?256位(bits)的隨機序列(熵),以128位為例;
2)取熵SHA256哈希后的前n位作為校驗和(n= 熵長度/32),圖為128/32=4;
3)隨機序列(熵) + 校驗和拼合為一個字符串,圖為128+4=132;
4)把步驟3得到的結果每11位切割,圖為 132/11 =12個字符串;
5)步驟4得到的每個字符串匹配預先定義的2048 個詞庫里的單詞;
6)步驟5得到的結果就是助記詞串,這是一個有順序的單詞組,也就是我們一直說的助記詞。
3.3私鑰、公鑰和地址產生的方式
從私鑰推導出公鑰、再從公鑰推導出公鑰哈希都是單向的,采用不可逆算法,也就是常聽到的橢圓曲線算法:如圖所示。
整體的公鑰和地址生成過程如圖所示:
1)通過隨機數生成私鑰;
2)私鑰經過SECP256K1算法處理生成了公鑰;
3)同SHA256一樣,RIPEMD160也是一種Hash算法,經過一次SHA256 + 一次RIPEMD160哈希運算,由公鑰計算得到公鑰哈希;
4)將一個字節的地址版本號連接到公鑰哈希頭部,進行兩次SHA256運算,將結果的前4字節作為公鑰哈希的校驗值,連接在其尾部;
5)將第4步結果使用BASE58進行編碼,即得到錢包地址。
從字節層面拆開來看,公鑰的詳細生成流程如下圖所示:
1)私鑰是32字節(256位)的隨機數;
2)在私鑰頭部加上版本號;
3)在私鑰尾部加上壓縮標志;
4)將私鑰進行兩次SHA256哈希運算,取兩次哈希結果的前4字節作為校驗碼,添加到壓縮標志之后;
5)將2,3,4步得到的隨機數用BASE58進行編碼,就可以得到WIF(Wallet import Format)私鑰(用于錢包之間導入導出私鑰,是用戶較為常見的密鑰格式)。
6)私鑰經過橢圓曲線乘法運算,可以得到公鑰。公鑰是橢圓曲線上的點,并具有x和y坐標。
從字節層面拆開來看,錢包地址的詳細生成流程如下圖所示:
1)將公鑰通過SHA256哈希算法處理得到32字節的哈希值;
2)后對得到的哈希值通過RIPEMD-160算法來得到20字節的公鑰哈希Hash160;
3)把版本號+公鑰哈希Hash160組成的21字節數組進行雙次SHA256哈希運算;
4)將哈希值的前4個字節作為校驗和,放在21字節數組末尾;
5)對組成25位數組進行Base58編碼,最后得到錢包地址。
3.4 恢復錢包的N種方式
了解了錢包的基本技術原理以及助記詞、Keystore、私鑰、公鑰和地址的關系后,遇到私鑰丟失等情況我們就可以有條不紊地進行錢包找回工作了,如圖3.11所示,只要不是私鑰、密碼、助記詞同時全部丟失,你還有N種方法可以恢復錢包。
4.2 錢包安全策略思維設計
【錢包的安裝:imtoken為例】
題庫鏈接:
https://mp.weixin.qq.com/s/inL1xvKXs-NW4AHWKATldQ
錢包安裝:
附錄1:常見名詞
1. 密鑰:是指某個用來完成加密、解密、完整性驗證等密碼學應用的秘密信息。在對稱密碼中,加密和解密用的密鑰是同一個。而在非對稱密碼中,加密和解密用的鑰匙不同,根據是否公開可分為公鑰和私鑰。
2. 私鑰:在非對稱密碼中,加密和解密用的鑰匙不同。根據是否公開,可分為公鑰和私鑰。公鑰和私鑰成對生成和使用。其中由用戶自己保管、不對外公開的,稱為私鑰。
3. 公鑰:在非對稱密碼中,可對外公開并傳遞的密鑰稱為公鑰。
4. 地址:通常由公鑰產生。公鑰經過多種加密算法、哈希算法等生成用戶錢包地址,類似傳統金融中的銀行卡號。
5.? 數字簽名:類似寫在紙上的普通的物理簽名,轉移資產的時候需要用戶簽名才能啟動。多重簽名,則是地址允許多個用戶用一個公鑰單獨發送部分地址,共同管理資產。
6.? 助記詞:將難以記憶的私鑰通過加密算法轉換成一組常見單詞。私鑰與助記詞之間可以互相轉換。
7.? Keystore:通過加密算法加密過后的私鑰,通常以文件格式儲存。
8.? 冷錢包:離線錢包,在沒有連網環境下使用的,統稱冷錢包。
9.? 腦錢包:腦錢包的主要原理是用可預測的算法把口令轉換成一對公私鑰,用戶通過輸入自行編寫的一串字符串,即可與一個篤定的密鑰生成一一對應的映射,是一種密鑰生成方式。
10. 硬件錢包:用專業的硬件存儲數字資產,將數字資產私鑰單獨儲存在一個芯片中,與互聯網隔離,即插即用。
11. 紙錢包:將私鑰或助記詞以字符串、二維碼等形式記錄在紙張上來進行保存和使用的方法。
12. 熱錢包:即連網又稱在線錢包,處于連接互聯網狀態,私鑰存儲能被網絡直接訪問的錢包。
13. 重錢包:全節點錢包,保存私鑰的同時,需同步所有區塊鏈數。
14. 輕錢包:不保存所有區塊的數據,只保存跟自己相關的數據的錢包。
15. 去中心化錢包:用區塊鏈網絡上其他全節點,不用保存所有區塊數據,需保存和同步與自己相關的數據,無需第三方管理存儲你的私鑰,私鑰由本人控制。
16. 中心化錢包:用戶無私鑰,數據均完全依賴運行提供錢包產品的中心化的第三方。
參考:
鏈接:https://mp.weixin.qq.com/s/BDr8QlXkLDgUzZLoHYmh8A