Function: execute(address authorizer, address market, address debtor, uint256 block_number, uint256 starts_at, uint256 ends_at, uint256 deadline, uint256 bid, uint8 v, byte[32] r, byte[32] s)
This executes the auction.
Inputs
authorizerControl: Full.
Constraints: None.
Impact: The signer.
marketControl: Full.
Constraints: None.
Impact: The relevant market where the liquidation is happening.
debtorControl: Full.
Constraints: None.
Impact: The debtor.
block_numberControl: Full.
Constraints: None.
Impact: The
block_numberof the signature.
starts_atControl: Full.
Constraints: None.
Impact: When the auction starts.
ends_atControl: Full.
Constraints: None.
Impact: When the auction ends.
deadlineControl: Full.
Constraints: None.
Impact: The deadline.
bidControl: Full.
Constraints: None.
Impact: The current bid.
vControl: Full.
Constraints: None.
Impact: Signature.
rControl: Full.
Constraints: None.
Impact: Signature.
sControl: Full.
Constraints: None.
Impact: Signature.
Branches and code coverage (including function calls)
Intended branches
Timestamp checks work.
Cannot liquidate user without enough stable.
Negative behavior
Cannot auction healthy positions.
Soft/hard liquidations verified against bids.
Function call analysis
execute -> _exexute(msg.sender, Auction(...), bid)What is controllable? Nothing (must pass sig checks).
If return value controllable, how is it used and how can it go wrong? Discarded.
What happens if it reverts, reenters, or does other unusual control flow? N/A.
execute -> _exexute(msg.sender, Auction(...), bid) -> isAuctionable(auction.marker, auction.debtor)What is controllable? Nothing (must pass sig checks).
If return value controllable, how is it used and how can it go wrong? Could stop liquidations even in unhealthy positions.
What happens if it reverts, reenters, or does other unusual control flow? N/A.
execute -> _exexute(msg.sender, Auction(...), bid) -> currentPrice(...)What is controllable? Nothing (must pass sig checks).
If return value controllable, how is it used and how can it go wrong? Make liquidations unprofitable, resulting in unhealthy positions.
What happens if it reverts, reenters, or does other unusual control flow? N/A.
execute -> _exexute(msg.sender, Auction(...), bid) -> market.collateral().swappableValue(auction.debtor)What is controllable? Nothing (must pass sig checks).
If return value controllable, how is it used and how can it go wrong? The return value is controllable and affects what type of liquidation it is --- controllable by manipulating the underlying pool.
What happens if it reverts, reenters, or does other unusual control flow? N/A.
execute -> _exexute(msg.sender, Auction(...), bid) -> market.credit().liquidate(debtors, account)What is controllable? Nothing (must pass sig checks).
If return value controllable, how is it used and how can it go wrong? Amounts liquidated.
What happens if it reverts, reenters, or does other unusual control flow? N/A.
execute -> _exexute(msg.sender, Auction(...), bid) -> market.credit().auction(account, bid, auction.debtor)What is controllable? Only bid, everything else is checked against signature.
If return value controllable, how is it used and how can it go wrong? Amounts liquidated.
What happens if it reverts, reenters, or does other unusual control flow? N/A.