## 拍卖相关参数 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路径)