## 拍卖相关参数
Acala 和 Karura 相关参数配置的是一样的:
```
MinimumIncrementSize = 2% //最小加价幅度
AuctionTimeToClose = 75 blocks(约15分钟) // 叫价后拍卖的延长时间
AuctionDurationSoftCap = 600 blocks (约2小时) // 拍卖持续时间软上限
```
## 拍卖类型
拍卖分两种类型, `target > 0` 和 `target = 0`
### 1.`target > 0`
债仓清算生成的拍卖target = 债务和罚金,属于`target > 0`的情况。 这种拍卖主要目的是把 collateral 卖到 target数量的 aUSD 用于还款,如果叫价高于 target, 则拍卖会进行反向处理:以bid price为准, 但只售出target数量的collateral, 多出的collateral会退回给 refund recipient (被清算债仓的所有者), 举个例子: 拍卖10DOT, target为670 aUSD
i. A 出价 500 aUSD, 被扣除 500 aUSD, 标的物 10 DOT
ii. B 出价 700 aUSD, 700 > 670, 拍卖进入反向处理, B 实际扣除 670 aUSD, 标的物变为 `10 * 670/700 = 9.57 DOT`, 0.43 DOT 退回给了 refund recipient, 之前A已经出价, 退还 500 aUSD 给 A
iii. C 出价 900 aUSD, 扣除 670 aUSD, 退还给 B 670 aUSD, 标的物继续变化, `10 * 670/900 = 7.44 DOT`, 2.13DOT 退回给 refund recipient
### 2.`target = 0`
不会有反向处理, 叫价即为实际扣款(下周我们要创建的拍卖target都会设成0)
## 创建拍卖
创建拍卖时,记录当前时间 now 为 start-time, 初始的拍卖结束时间为 `start-time + AuctionDurationSoftCap`
## 出价
一旦拍卖被成功叫价,当前的时间为 now, 拍卖的结束时间变为 `now + AuctionTimeToClose`, (注意是从now延长AuctionTimeToClose,而不是在初始结束时间`start-time + AuctionDurationSoftCap`上延长), 但如果 now >= `start-time + AuctionDurationSoftCap` , 拍卖的持续时间已经超过软上限了, 我们希望加快拍卖的进程, 拍卖的结束时间则变为 `now + AuctionTimeToClose/2`
成功叫价的判断:
```
new_bid - last_bid >= max(last_bid, target) * MinimumIncrementSize
```
如果该拍卖是第一次被叫价, last_bid为0。 另外如果拍卖的持续时间已经超过软上限, MinimumIncrementSize会 x2, 这也是希望加快拍卖进程
## 拍卖结束
区块到拍卖的结束时间时,会自动处理,根据拍卖的类型,当前的出价和DEX的价格也分多种情况:
### `target > 0`
1. 没有出价:
+ 此时如果DEX的出价能 >= target, DEX吃掉拍卖(因为dex的出价可能 > target了,同样也可能有反向处理)
+ DEX出价 < target, 流拍, collateral 全部交给cdp-treasury后续做处理。
2. 有出价:
+ 出价 >= target, 且出价 > DEX的出价, bidder成功拍得, 会获得标的物
+ 出价 <= DEX的出价, 且 DEX的出价 >= target, DEX 会胜出, bidder只能拿回先前的扣款
+ 出价 和 DEX的出价 均 < target, 流拍, bidder 拿回先前的扣款,collateral 全部交给cdp-treasury后续做处理。
### `target = 0`
1. 没有出价, DEX 吃下拍卖
2. 有出价:
+ 出价 > DEX的出价,bidder成功拍得, 会获得标的物
+ 出价 <= DEX的出价, bidder 获得退款, DEX吃下拍卖
3. 没有出价, DEX也不能交易,流拍(几乎不可能出现, DEX价格再低也会是情况1, 除非拍卖的这个抵押品在DEX中和aUSD没有swap路径)