Blockchain

比特幣網路中的使用者如何驗證付款?

  • January 27, 2022

我是一個試圖學習比特幣背後想法的初學者。

比特幣白皮書中說:

使用者只需要保留一份最長的工作量證明鏈的區塊頭副本,他可以通過查詢網路節點來獲得,直到他確信自己擁有最長的鏈,並獲得將交易連結到區塊的 Merkle 分支它帶有時間戳。他不能自己檢查交易,但是通過將其連結到鏈中的某個位置,他可以看到網路節點已經接受了它,並且在進一步確認網路已經接受它之後添加了塊。

在這裡,要驗證交易的使用者,它如何驗證區塊鍊網路中的特定交易?交易 ID 和 UTXO

的作用是什麼?他們如何幫助交易找到它所在的區塊來驗證自己?

驗證和確認是有區別的。

驗證是檢查某些數據(例如交易數據)是否符合所有比特幣規則。例如,您可以檢查交易的輸出總和是否不超過其輸入的總和。您可以檢查沒有任何輸入已經被花費。您可以檢查簽名。您可以檢查鎖定腳本的格式是否正確。有很多這樣的檢查。驗證交易不會告訴您是否已付款(收到)。

交易的確認只不過是對已添加到區塊鏈的區塊數量的計數,這些區塊要麼是包含該交易的區塊,要麼是連結回該區塊的區塊。0個區塊表示未確認,6個以上視為不可撤銷確認。全節點可以自己計算這個塊數。因此,當您付款時,您對交易的確認是您感興趣的。確認是告訴您付款已發生,已不可撤銷地收到的資訊。


交易 ID只是唯一標識某個特定交易的數字的表示。節點可以使用此事務 ID 來索引事務列表以幫助檢索。例如,某些軟體可能會創建指向包含每個事務的塊的事務 ID 索引。

**未使用的交易輸出(UTXO)**實際上是未使用的硬幣。節點可以並且應該檢查感興趣的交易的輸入是否都是 UTXO。這是比特幣如何防止雙重支出的一部分。每個完整節點通常會保留所有 UTXO 的列表,並在處理每個新事務時刪除已使用的 UTXO 並添加新創建的 UTXO。


Simplified Payment Verification是 Nakamoto 白皮書中包含問題中引用的文本的部分。全節點自己完成所有驗證。輕量級節點,例如那些使用簡化支付驗證(SPV)的節點,在一定程度上依賴於其他節點來執行驗證。與完整節點不同,他們部分信任其他一些節點是誠實的。因此引用的文本不適用於完整節點。

引用自:https://bitcoin.stackexchange.com/questions/112029