Transactions
塊內的狀態變化
我在某處讀到“狀態”僅在每個塊的末尾更新。我還讀到每個塊都包含特定的事務序列,因此隱式地“更新”了塊內的狀態。這可能是語義上的,但我只想確定狀態變數是如何更新的:改變狀態的事務是否會在下一個事務之前這樣做,而不管它是否在同一個塊中?
需要明確的是:假設合約變數
Book
是 10 ETH,這樣使用者就可以押注這 10 ETH。每次交易下註一個金額X
,Book
減少X
:Book = Book - X
。投注受到限制,因此Book
始終 >=0:require(Book - X >= 0)
在投注功能的頂部。如果 Bob 下注 6 ETH,Alice 下注 6 ETH,這顯然與我的要求背道而馳。但是,如果他們的交易在同一個區塊中,第二個交易會被拒絕嗎?
一個改變狀態的交易會在下一個交易之前這樣做嗎,不管它是否在同一個區塊中?
是的
如果他們的交易在同一個區塊中,第二筆交易會被拒絕嗎?
是的
重要的一點是,Alice 和 Bob 都不知道誰是第一個:礦工決定哪個交易是第一個。
另請參閱挖礦期間交易的預設順序是什麼?