Security

乙太坊 ETH 記賬系統如何工作並防止雙花?

  • June 21, 2018

在比特幣中,BTC 記賬系統基於 UTXO(未使用交易輸出),可防止同一個 BTC 被多次使用。聽說乙太坊有更簡單的賬戶餘額系統,但不知道詳情。乙太坊的賬戶餘額如何運作?

如果我有一條消息從 Alice 向 Bob 發送 1 ETH,那麼是什麼阻止了同一條消息被多次使用?是否有序列號系統(如 TCP)?

如果 Alice 先簽署一條從 Alice 向 Bob 發送 1 ETH 的消息,然後再簽署一條從 Alice 向 Charlie 發送 1 ETH 的消息,第二條消息能否在第一條消息之前得到確認?

每個賬戶都有一個全域可訪問的nonce,可以防止同鏈重放攻擊和雙花。這nonce是礦工檢查的序列號,因為具有不正確隨機數的交易的區塊是無效區塊(其他礦工不會在其上建構)。(nonce不能防止跨鏈重放攻擊。)

在第一條消息之前無法確認第二條消息(具有更高的隨機數)。

有關補充詳細資訊,請參閱內容,例如:

全域狀態儲存具有餘額、程式碼和內部儲存的帳戶列表

如果發送賬戶有足夠的餘額來支付交易,則交易有效,在這種情況下,發送賬戶被借記,接收賬戶被記入金額

引用自:https://ethereum.stackexchange.com/questions/1172