CDP
CDP全称为Collateralized Debt Position,中文名称叫担保债仓
UDT:用户自定义代币
保存担保物的数量、铸造的稳定币数量、担保物类型、还有拥有者信息、利息、时间等
该合约有3个业务逻辑:质押(借款)、赎回(还款)、清算
代码:https://github.com/NexisDao/NexisDao-core/tree/main/contracts/cdp
质押(借款)
确认抵押的资产价值大于借款金额*质押率
判断script在output中,数量只有1个
data:TAI.amount, UDT.amount, UDT_id(config id), owner.hash
从配置中读取lock的hash
验证output[0].lock==配置中的lock
验证output[1].lock=output[0].lock
验证output[0].type为UDT,且data的u128与参数UDT.amount一致
从配置中,读取UDT的抵押率等信息
计算最多可以获得多少TAI,确保data中的数值小于该值
赎回(还款)
偿还借出的TAI和支付少量的利息,赎回抵押的资产
确保CDP只有1个,在input中
确保input[0].lock==input[1].lock==UDTLock,lock只有2个
确保input[0]为UDT;input[0].UDT.amount=CPD.udt.amount
确保output[0].lock=CPD.owner,且为UDT;output[0].amount=CPD.udt.amount
确保input.TAI.amount-output.TAI.amount=CDP.TAI
确保output[1].lock=CommunityLock, 为TAI且amount>=手续费
清算
当UDT的价格下跌,触发警戒线时,资产将被清算。
警戒线为资产的质押率;不同的UDT的质押率,可能有差异。
清算流程:
UDT价格下跌时,UDT价格*数量 <= TAI数量*质押率,该笔质押单就允许被清算
UDT.lock验证存在CDP
CDP.lock验证存在CDP
CDP.type验证UDT数量正确
CDP.type确认input没有TAI,走清算流程
CDP.type验证UDT价值低于抵押门限
output中存在Debt
Debt.type验证存在CDP
Debt.type验证UDT和Debt的lock正确
最后更新于