Verify
乙太坊如何知道我有足夠的 ETH 可以使用?
乙太坊使用基於賬戶的模型。這意味著如果賬戶 A 有 50 ETH 並向賬戶 B 發送 10 ETH,則交易看起來像“從 A 向 B 發送 10 ETH”(沒有 UTXO 中的輸入和輸出)。
使用這個模型,乙太坊應該在某個步驟檢查賬戶 A 是否真的有 10 個 ETH 以防止雙重支出。
我的問題是乙太坊如何、在哪裡(模組/程式碼/契約)以及何時驗證?
這可能就是你要找的,
https://ethereum.stackexchange.com/a/1173/19016
每個帳戶都有一個可全域訪問的帳戶
nonce
,可防止雙重支出。這nonce
是礦工檢查的序列號,因為具有不正確隨機數的交易的區塊是無效區塊(其他礦工不會在其上建構)。(nonce
不能防止重放攻擊。)在第一條消息之前無法確認第二條消息(具有更高的隨機數)。
有關補充詳細資訊,請參閱此內容,例如:
全域狀態儲存具有餘額、程式碼和內部儲存的帳戶列表
如果發送賬戶有足夠的餘額來支付交易,則交易有效,在這種情況下,發送賬戶被借記,接收賬戶被記入金額
參見https://myetherwallet.groovehq.com/knowledge_base/topics/what-is-nonce。