前言:
上篇文章我為大家講解了什麼是數字貨币的錢包系統,并用比特币的錢包為例,向大家分析了核心錢包的優劣勢。
核心錢包的優勢在于其強大的安全性,劣勢我在上篇文章的末尾處也為大家解釋的很清楚,沒看的可以回去補補課,為了彌補核心錢包的劣勢,輕錢包就被研發出來,包括SPV錢包與分層定性錢包,詳細解讀如下:
SPV錢包——來自梅克爾樹的驗證
有些時候,我們進行支付隻是想通過一個驗證,知道支付已成功即可,至于完整的交易驗證(需要在完整的賬本資料上校驗)可以交給核心節點來負責,如此一來,錢包的部分功能就能剝離出來,這便是SPV錢包。

SPV錢包的大緻過程如下:
(1)下載下傳完整的區塊首部資料,而不是所有的區塊鍊資料,這樣可以極大的減少需要擷取的賬本資料量,區塊首部包含區塊的梅克爾根,SPV方式需要靠它來實作。
(2)當驗證某筆支付交易時,計算出這筆交易事務的哈希值txHash。
(3)找到txHash所在的區塊,驗證其所在區塊的區塊首部是否包含在賬本資料中。
(4)獲得所在區塊中計算梅克爾根所需要的哈希值。
(5)計算出梅克爾根。
(6)計算結果與所在區塊的梅克爾根相等,則支付交易存在。
(7)根據該區塊所處的高度位置,還可以确定該交易得到了多少個确認。
不難看出,SPV原理的錢包是使用梅克爾樹來驗證支付是否真實發生,隻不過支付驗證所做的事情很少,隻能看到目前的支付交易是否被發起而已,無法保證這筆交易事務最終會進入主鍊,想要進入主鍊,必須等待核心節點進行全面的交易驗證,還需要礦工将資料打包到區塊,整個過程可能會發生失敗,SPV錢包用提高便捷性的代價犧牲了安全性。
分層定性錢包——與比特币一樣的随機性
分層确定性錢包(Hierarchical Deterministic Wallets,有時也簡稱為HD Wallets)具有以下特點:
(1)用一個随機數來生成根私鑰,與比特币錢包生成私鑰性質一樣;
(2)用一個确定的、不可逆的算法,基于根私鑰生成任意數量的子私鑰。
我們仍需要用比特币來舉例,比特币中使用的SHA256就是一個确定不可逆的算法,可以用SHA256設計出一個HD模型:SHA256(seed+n),算作類型1确定性錢包。
嚴格來講,分層确定性錢包是确定性錢包的一種,分層确定性錢包分為Type1、Type2、BIP32規範等類型,這些都是為了實作同一目标,基本原理都是一緻的。
至于分層,利用主私鑰生成逐層的私鑰,公鑰也是如此。而生成的密鑰,可以作為根來繼續生成子密鑰,這就是分層。
值得一提的是,由公鑰生成子公鑰,無需私鑰參與。具體如下:
(1)隻需要備份主私鑰即可,新增位址無須再次備份私鑰;
(2)可保證主私鑰冷儲,增加複數位址,隻需主公鑰即可;
(3)審計便捷,隻需提供主公鑰或某分支的子公鑰,即可檢視下級資料且保證其不能被交易;
(4)可配合權限,設定不同層級的權限,檢視餘額還是能交易等。
凡事都有兩面性,便捷性的提升,換來的是安全性的下降,此類錢包由于私鑰間具備固定關系,随機性下降,當私鑰暴露時,隻需使用主公鑰進行關聯分析,就可能導緻整個樹狀密鑰結構的洩露。
後記
對比核心錢包與輕錢包,我們不難發現二者之間的優勢與劣勢。
核心錢包擁有較高的穩定性與安全性,但操作起來及其不便利,費時又費事,而輕錢包利用精簡交易流程來擷取極大的便利性的同時,犧牲部分的安全性。
在不同的交易中選擇不同的錢包來交易,又或者多種錢包混合使用,也許可以讓效益最大化,但我們仍不難發現,如此以來使用者操作時将非常繁瑣。
未來的錢包技術的發展趨勢一定結合多種優勢于一身,還附帶其他額外的附加功能,而我們UCK在錢包技術的研發上也頗有建樹,且走在行業的最前沿。
UCK将掀起一場錢包技術的革新,就讓我們拭目以待吧。
轉載于:https://my.oschina.net/u/3893960/blog/3081705