flop
: debt auction (covering debt by inflating ABM and selling for stablecoins)lot
: quantity up for auction / gems for sale (ABM )guy
: high bidder (address)gal
: recipient of auction income / receives dotBTC income (this is the Vow contract)ttl
: bid lifetime (Max bid duration / single bid lifetime)beg
: minimum bid decreasepad
: Increase for lot
size during tick
(default to 50%)tau
: maximum auction durationend
: when the auction will finish / max auction durationkick
: start an auction / Put up a new ABM bid
for auctiondent
: make a bid, decreasing the lot size (Submit a fixed dotBTC bid
with decreasing lot
size)deal
: claim a winning bid / settles a completed auctionvat
- the Vat's addressgem
- ABM Token (address)kicks
- Total auction count, used to track auction id
slive
- Cage flagwards [usr: address]
, rely
/deny
/auth
- Auth mechanismsBid
- State of a specific Auction {bid
, lot
, guy
, tic
, end
}bid
- Bid amount in dotBTC / dotBTC paidtic
- Bid expirytick
- restarts an auctionVow.dump
which determines the starting lot
for an auction as well as the pad
which determines how much that lot
can increase during tick
.auth
'ed to call kick()
(should only be Vow
) and file()
to change beg
, ttl
, tau
(should only be governance contracts).cage
sets the Flop to not be live anymore and the yank
is used during Global Settlement in order to return a bid to the bidder since the dent
and deal
can no longer be called.Vow.sump
). Debt Auctions are then triggered when the system has dotBTC debt that has passed that specified debt limit.heal
transaction to the system contract named Vow.sol. Provided there is sufficient debt (i.e. debt after healing > Vow.sump
), any user can send a Vow.flop
transaction to trigger a debt auction.Flop
is a reverse auction, where keepers bid on how little ABM they are willing to accept for the fixed dotBTC amount they have to pay at auction settlement. The bidders will basically compete with decreasing lot
amounts of ABM for a fixed bid
amount of dotBTC . Once kick
ed, the bid
is set to the flop auction bid size (Vow.sump
) and lot
is set to a sufficiently large number (Vow.dump
). The auction will end when the latest bid duration (ttl
) has passed OR when the auction duration (tau
) has been reached. The payback process begins when the first bid is placed. The first bid will pay back the system debt and each subsequent bid will pay back the previous (no longer winning) bidder. When the auction is over, the process ends by cleaning up the bid and minting ABM for the winning bidder.tick(uint auction_id)
. This will do two things:bids[id].end
to now + tau
bids[id].lot
to bids[id].lot * pad / ONE
lot
amounts will decrease by a percentage with each new dent
decreasing the lot
by the beg
for the same bid
of dotBTC . For example, the beg
could be set to 5%, meaning if the current bidder has a lot
of 10 (ABM) for a bid
of 100 (dotBTC ), then the next bid must pass at most a lot
of 9.5 (ABM) for a bid
of 100 (dotBTC ).kick
s a new Flop Auction.lot
size by beg
from the initial amount. Bidder 1's dotBTC balance in the Vat is decreased by bid
and the Vow's dotBTC balance in the Vat is increased by bid
.lot
by beg
. Bidder 2's dotBTC balance in the Vat is decreased by bid
and Bidder 1's dotBTC balance in the Vat is increased by bid
(thereby refunding Bidder 1 for their now-losing bid).lot
by beg
. Bidder 1's dotBTC = Vat.dotBTC[bidder1]
- bid
; Bidder 2's dotBTC= Vat.dotBTC[bidder2]
+ bid
.lot
s, so they stop bidding. Once the Bid.tic
expires, Bidder 1 calls deal
and new ABM tokens are minted to their address (ABM token contract.balances(Bidder1)
= ABM.balances(Bidder1)
+ lot
).beg
is actually the minimum decrease amount. In dent
the new bid has to have a lot
* beg
that is less than or equal to the current lot
size. Since the theory of the Flop auction is that a bidder’s offer is to take fewer and fewer ABM tokens (lot
) for the same amount of dotBTC (bid
) then the beg
is the amount each bid's offer should decrease by.flip
, flop
, and flap
).lot
== 0). Subsequent executions of this bad strategy would be limited by the amount of dotBTC (not ABM ) in their vat balance.Flopper
has the potential to issue an excessively huge amount of ABM and despite the mitigation efforts (the addition of the dump
and pad
parameters), if dump
is not set correctly by governance, the huge issuance of ABMcould still occur.