共識機制之後,乙個很重要的知識點就是spv支付驗證,看了一遍參考書,同時也蒐集網上的一些資料研究了下,現把關於spv支付驗證的一些學習心得總結下。
首先就是弄懂了幾個概念,全節點和spv節點,支付驗證與交易驗證
區塊鏈交易驗證的過程比較複雜,包括賬戶餘額驗證、雙重支付判斷等,通常由儲存區塊鏈完整資訊的區塊鏈驗證節點來完成。
而支付驗證的過程比較簡單,只是判斷該筆支付交易是否已經得到了區塊鏈節點共識驗證,並得到了多少的確認數即可。
簡單的說就是:交易驗證要檢驗這個交易是否合法,支付驗證就是驗證這筆交易是否已經存在。
spv驗證的步驟如下:
計算待驗證支付的交易雜湊值;
節點從區塊鏈網路上獲取並儲存最長鏈的所有區塊頭至本地;
節點從區塊鏈獲取待驗證支付對應的默克爾樹雜湊認證路徑;(這裡找到了該交易對應的雜湊值)
根據雜湊認證路徑,計算默克爾樹的根雜湊值,將計算結果與本地區塊頭中的默克爾樹的根雜湊值進行比較,定位到包含待驗證支付的區塊;(找到這個雜湊值屬於哪個區塊)
根據該區塊頭所處的位置,驗證該區塊的區塊頭是否已經包含在已知最長鏈中,確定該支付已經得到的確認數量,如果包含則證明支付真實有效。(證明本交易得到了6次確認)
關於默克爾樹路徑和默克爾樹根雜湊的計算網上也有很多的資料,其大致步驟就是自下而上從待驗證交易節點往上與相鄰的節點做雜湊運算,直至最後計算出乙個雜湊值,這個雜湊值就是該默克爾樹根的雜湊值,由於本地儲存了所有的區塊頭資訊,而每個區塊頭都含有該區塊的默克爾樹根雜湊的值,將計算得到的根雜湊與本地的最長鏈中的根雜湊值做比較,判斷出本地是否存在這樣的區塊,如果存在,則判斷區塊所處的位置,如果該區塊已經經過了6次確認,則可認定支付是真實有效的。
還有一點就是其中的第3步,這是其中關鍵的一步,如何獲取到默克爾樹雜湊認證路徑,其用到了bloom過濾器,鏈結到乙個全節點,相鄰的全節點如果發現有對應的區塊資訊,就以默克爾區塊的形式傳送給spv節點,這裡spv節點必須要連線乙個相鄰的全節點獲取默克爾認證路徑。
區塊鏈入門
0x00 區塊鏈 base 區塊鏈概念 選自長亭科技 區塊鏈安全生存指南 1.1 始於位元幣 區塊鏈 blockchain 最早由 中本聰 satoshi nakamoto 於2008年 在其 位元幣 一種點對點電子現金系統 中提出,位元幣也成為了目前最廣為人知的區塊鏈應用案例。廣義上講,區塊鏈技術...
區塊鏈入門
1.參考部落格 位元幣 一種點對點的電子現金系統 從一到n,掘金區塊 區塊鏈行業研究報告 2.引入 sha256 非對稱加密 加密 hash值 私鑰 加密後的hash值 解密 加密後的hash值 公鑰 解密後的hash值1 shaa256 接收到的值 hash值2 hash值2 vs hash值1 ...
區塊鏈入門
從字面上看 區塊鏈是由乙個個記錄著各種資訊的小區塊鏈結起來組成的乙個鏈條,類似於我們將一塊塊磚頭疊起來,而且疊起來後是沒辦法拆掉的,每個磚頭上面還寫著各種資訊,包括 誰疊的,什麼時候疊的,磚頭用了什麼材質等等,這些資訊你也沒辦法修改。從計算機上看 區塊鏈是一種比較特殊的分布式資料庫。分布式資料庫就是...