When block.number equals loan.auctionStartTimestamp + loan.auctionLength, the lender can call the following seizeLoan()
function to seize the loan.
However, at such block.number, another lender can call the following buyLoan()
function to take over the loan.
Therefore, at such block.number when block.number and loan.auctionStartTimestamp + loan.auctionLength are equal, contradicting situations occur.
For example,another lender, who finds the auction rate very appealing, would call the buyLoan()
function to frontrun the seizeLoan()
transaction of the original lender, who would like to seize the loan. The original lender fails at owning assets that could be owned . Because of these asset and opportunity losses, disputes among the original lender and other lender who auctions will occur.
At such block.number when block.number and loan.auctionStartTimestamp + loan.auctionLength are equal, contradicting situations occur
Vscode
The seizeLoan()
function can be updated to check block.timestamp <=
loan.auctionStartTimestamp + loan.auctionLength instead of block.timestamp <=
loan.auctionStartTimestamp + loan.auctionLength for the if statement. Alternatively, the buyLoan()
and Core.refinanceAuction functions can be updated to check block.timestamp >= loan.auctionStartTimestamp + loan.auctionLength instead of block.timestamp > loan.auctionStartTimestamp + loan.auctionLength for the if statement.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.