Block-Interval
使用 block.number 的拍賣期
我有類似的東西:
contract example{ uint endBlock; constructor(uint _elitism) public { endBlock= block.number + 40; // 10 min of time } modifier onlyBeforeEnd() { require(block.number > endBlock, "Auction already ended."); _; } function getBalance() onlyBeforeEnd public view returns(uint){ return msg.sender.balance; } }
如果我嘗試執行
getBalance()
功能,每次都會得到:“拍賣已經結束。” 但為什麼?拍賣應該持續10分鐘。有人可以幫我嗎?
每次得到:“拍賣已經結束。” 但為什麼?
修飾符中的
require()
語句不正確。require(block.number > endBlock, "Auction already ended."); ^ ^ ^ ^ +---------- A ---------+ +---------- B ---------+
該
require()
語句要求 A 為真才能繼續執行程式碼。如果 A 不為真,則返回錯誤 B。A 直到拍賣結束後才為真。如果您
getBalance()
在拍賣結束前執行,則 A 為假,並返回錯誤 B。