Transactions
布朗尼中的競爭條件,如何保證這將按順序執行?
假設我有這樣的契約:
contract Test{ uint8 test = 0; // getter and setter }
我想使用一些python程式碼來發布它,比如:
initial = contract.getTest() contract.setTest(1, {"from": 0x123123123...}) final = contract.getTest()
既然
getTest
是呼叫,而且setTest
是事務,這應該不是安全程式碼吧?或者呼叫與事務同步調度,並且此程式碼中沒有競爭條件?
getTest
如果我按順序執行上述內容,將始終返回 1 嗎?
為了 100% 保證這將按順序執行,您可以
wait
探勘一筆交易。initial = contract.getTest() set_transaction = contract.setTest(1, {"from": 0x123123123...}) set_transaction.wait(1) final = contract.getTest()
wait(1)
意味著我們將等待 1 個區塊等待交易完成。