contract LiquidationEngine {
struct Position {
address owner;
uint256 collateral;
uint256 debt;
}
// 清算函数
function liquidate(uint256 positionId) external {
Position storage pos = positions[positionId];
uint256 collateralValue = oracle.getPrice(pos.collateralToken) * pos.collateral;
uint256 minRequired = pos.debt * MIN_COLLATERAL_RATIO / 100;
if (collateralValue < minRequired) {
uint256 discount = pos.debt * 5 / 100; // 5% 清算奖励
pos.collateralToken.safeTransfer(msg.sender, discount);
_auctionCollateral(pos.collateral - discount);
}
}
}