Mining-Theory
找到一個有效的 nonce 如何說明初始交易的有效性
我絕不是專家,也不是密碼學家,但我有興趣知道比以下事件鏈結束時發生的事情多一點。
後面這一系列事件的最後發生的事情當然和先發生的事情有關,所以如果後面的事情有錯誤或不完整的部分,請糾正我!
假設我們處於 Alice (A) 想要將一個比特幣轉移給 Bob (B) 的情況。
- A 的私鑰有對應的公鑰。私鑰用於簽名。這與與前一個鏈塊相關的散列資訊、時間戳和其他元素一起構成了交易。
- 交易被廣播到網路,等待直到被礦工驗證(連同其他交易)。
- 在極端綜合中,礦工所做的是嘗試找到一個隨機數,將其添加到他們收到的交易數據中並經過雙重雜湊處理後,滿足一定的難度條件(設置為平均添加一個新塊,例如,每 10 分鐘)。
- 一旦礦工找到一個有效的隨機數,她就會將它發送到網路,以便可以(輕鬆地)檢查它。在實踐中,由於找到工作的 nonce 需要時間和精力,這構成了工作量證明。
我發現難以理解的是:如何找到諸如隨機數之類的隨機數可以證明交易是有效的一個比特幣並且是從 A 到 B 的?
如果除了 A 之外沒有人知道她的私鑰,nonce 怎麼能成為問題的解決方案?
換句話說,我知道找到一個有效的 nonce 非常困難,因此找到一個兼容的 nonce 有效地證明了花費大量時間和精力來找到它。我不明白找到隨機數的數學問題的解決方案如何與初始 A 到 B 交易有效(而不是錯誤或“不誠實”交易)這一事實相關。
找到 nonce 和計算工作證明與交易驗證無關。在昂貴的工作證明鏈中將塊鎖定在一起,確保用替代品替換目前的分類帳/區塊鍊是昂貴的。
此外,交易不包含有關區塊或工作證明的資訊。交易的驗證是通過使用橢圓曲線密碼學來實現的。具體來說,就是曲線 secp256k1 上的橢圓曲線數字簽名算法 (ECDSA)。
ECDSA 的數學確保只有知道私鑰的人才能生成有效的簽名。但是,任何人都可以使用公鑰來驗證簽名是由知道私鑰的人生成的。
最後,為了確保未使用的交易輸出 (UTXO) 不會被雙花,比特幣協議規定,如果一個塊包含一個引用特定 UTXO 作為輸入的交易,該交易之前已在交易輸入中引用過,則該塊是無效的。