Transaction-Verification
如何在不執行完整網路節點的情況下驗證付款?
我讀過 Nakamoto 的論文“比特幣:一種點對點電子現金系統”。在簡化支付驗證段落中,他說可以在不執行完整網路節點的情況下驗證支付。
我不明白如何使用 Markle 的樹根雜湊來驗證付款。事實上,為了檢查付款,我需要合併和散列右或左分支的所有節點,而不僅僅是根。
此外,如何在所有節點中都沒有看到的情況下選擇需要獲取哪個 Root 雜湊?
你是對的,為了證明交易在一個區塊中得到確認,你需要的不僅僅是 Merkle 根。所需的資訊稱為 Merkle 路徑,包括到您的交易節點的左/右葉和右/左父節點,依此類推直到根。
這是描繪 Merkle 路徑的圖表: http: //chimera.labs.oreilly.com/books/1234000001802/ch07.html#merkle_tree_path
Merkle 根和路徑,以及區塊鏈的塊頭,都是從選擇的隨機比特幣節點中請求的。您的 SPV 客戶端無法驗證交易是否有效(不是雙花、正確簽名等),但由於它可以驗證交易是否包含在具有 X 次確認的區塊中,它可以假設比特幣網路接受了交易. 因此,您的 SPV 節點將通過相信比特幣網路僅包含對區塊鏈的有效交易來接受交易。
我需要合併和散列右或左分支的所有節點
或者你可以得到大部分這些值。如果有人為您提供了正確分支的值,那麼您不需要關於樹的整個一側的任何進一步資訊。如果最終你得到了正確的根雜湊值,那麼你就知道他們沒有騙你。