當前位置:
首頁 > 最新 > 區塊鏈解讀31-SPV+錢包

區塊鏈解讀31-SPV+錢包

解讀區塊鏈,SPV(Simplified Payment Verification)+錢包

SPV簡單支付驗證(Simplified Payment Verification),這個概念出現其實很簡單,以比特幣為例子,目前節點如果存儲完整的區塊鏈數據那麼有幾百G,一般的個人終端上無法滿足這個量級的存儲空間,而且這個數據量還會一直增加,那麼針對個人的終端需要一種簡單的驗證模式,相應就出現了SPV,比如MultiBit這種輕量級錢包用的就是SPV模式。

SPV簡單支付驗證,在SPV節點不保存全部的區塊鏈數據,只保存區塊頭的數據,這樣的話大小應該是全部數據的千分之一,對整個存儲的容量要求就小多了,這種節點一般也稱為SPV客戶端或者輕量級客戶端。存儲區塊頭信息理解區塊鏈結構的可能了解,這種模式無法驗證全部交易,但是能驗證支付,所謂驗證支付就是通過區塊頭的HASH信息去驗證這筆支付是否被確認,根據區塊的深度,獲知這個支付是否被支付確認。如果是交易驗證,那麼就涉及到了很複雜的過程,包括需要知道是否有足夠餘額,是否存在雙花情況、腳本運行情況等,這些交易驗證一般都有運行全部區塊鏈數據的節點去驗證。

舉個例子:A和B進行交易,在全資料庫節點,通過回溯從當前區塊到創世區塊,鏈接後查詢UTXO資料庫,檢查交易是否有被支付,驗證交易的有效性。但是在SPV節點UTXO是無法驗證是否支付,SPV節點通過查詢區塊間的梅克爾樹路徑,然後在當前區塊等待之後6個區塊的生成的,確保交易被確認,這種方式能證明這個交易不是雙重支付。

具體再說明下整個驗證過程:

當SPV節點收到一個交易請求,其實節點是無法證實對端節點的可靠性的,那麼在一個交易發起過程中,一般會包括對端節點的支付UTXO、對端節點的簽名、交易金額、SPV節點的地址。SPV節點驗證通過支付驗證,檢查區塊頭信息來確認發生這個交易的是否在區塊鏈中,並且在當前的區塊鏈系統中有多少區塊進行確認。這裡啰嗦下區塊頭,區塊頭中包括prev_block_hash和merkle_root_hash這兩個最為重要的驗證值。

1.SPV節點通過getheaders從相鄰的全數據節點獲得區塊頭信息(這裡涉及一個問題,SPV對特定的幾個交易選擇讀取,無疑會透露錢包地址信息)

2.計算當前交易的HASH值。

3.用計算後後的HASH值,去比對定位block head,確定是否存在目前的最長一條鏈接上。

4.從區塊中獲取構建merkle tree 所需的hash值,並計算merkle_root_hash

5.計算結果如果一致說明交易真實存在。

6.根據block header來確認有多少區塊確認交易。

SPV的由於數據量的精簡,一旦去請求全數據區塊頭信息的時候,會出現全節點的惡意發送或者節點拒絕服務,那麼這時候就要求與多節點交互保證節點誠實數據可靠。另一方面你SPV節點去請求也會不可避免的暴露自身的地址,這需要對匿名隱私上有一定的考慮。

Bloom filter:bloom過濾器解決了客戶端檢索的問題,原理是Bloom filter可以快速判斷出某檢索值一定不存在於某個指定的集合,從而可以過濾掉大量無關數據,減少客戶端不必要的下載量。這樣的節點可以為去中心化方式SPV查詢提供必要的支持。從而從安全性上得到一定的保證。

錢包概念:錢包一般認為最重要就是私鑰,私鑰的安全性之前的文章中也有提及。

這裡的錢包我們理解是存放一張張的一次性支票(UTXO),以及每個人的印簽(私鑰)。支付過程:

1.取出UTXO,計算花費、餘額、交易費。

2.使用UTXO,註明金額和支付給對方的地址,有餘額就再加上自己的地址。同時加上自己的簽名。

3.提交後,系統驗證支付是否有效。

4.驗證成功後,原先UTXO從未支付資料庫刪除,對方把UTXO存入錢包。

錢包理解存儲若干UTXO和支配UTXO的私鑰,現在為了安全考慮,在線錢包只有UTXO,離線存儲私鑰。這也是安全分離。

當然現在針對錢包UTXO的操作有兩種方式:

1.下載完整的UTXO,本地有一個UTXO庫,每次通過設置區塊位置去驗證完整性,解析所有的交易數據,這種方式被認為是去信任,數據準備性有保證,但是對網路來說需要大量大量數據保證整個驗證過程。

2.有某個中心中介節點,收入所有的UTXO庫,通過API請求和自身相關的UTXO數據,那麼這種方式就存在中心化的概念,依賴中介節點(中心節點會有故障點或者惡意欺騙可能),但對網路和本地存儲要求就沒那麼高。

上述說明後、發現錢包和SPV機制其實是兩個概念,有時候很多人都認為錢包都是SPV機制,這裡再引入一個SPV輕錢包,SPV輕錢包是參考SPV機制實現的錢包,通過上述第二種中心中介方式獲取數據。

大致介紹的SPV模式和錢包的概念

筆者初學區塊鏈,很多東西也是慢慢摸索,之所以寫下這些基本概念一方面作為自己學習的整理,另一方面也希望更多交流學習的機會。如有興趣可以直接給我留言或者加筆者微信。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 公眾號 的精彩文章:

嫁給高富帥的正確打開方式
2017袁大頭今年部分成交記錄及價格
美國初體驗 細節顛覆認知
生活萬家人命 染成五色文章
外匯監管機構IIROC詳解

TAG:公眾號 |