CDP

CDP全称为Collateralized Debt Position,中文名称叫担保债仓

UDT:用户自定义代币

保存担保物的数量、铸造的稳定币数量、担保物类型、还有拥有者信息、利息、时间等

该合约有3个业务逻辑:质押(借款)、赎回(还款)、清算

代码:https://github.com/NexisDao/NexisDao-core/tree/main/contracts/cdp

质押(借款)

确认抵押的资产价值大于借款金额*质押率

  1. 判断script在output中,数量只有1个

  2. data:TAI.amount, UDT.amount, UDT_id(config id), owner.hash

  3. 从配置中读取lock的hash

  4. 验证output[0].lock==配置中的lock

  5. 验证output[1].lock=output[0].lock

  6. 验证output[0].type为UDT,且data的u128与参数UDT.amount一致

  7. 从配置中,读取UDT的抵押率等信息

  8. 计算最多可以获得多少TAI,确保data中的数值小于该值

赎回(还款)

偿还借出的TAI和支付少量的利息,赎回抵押的资产

  1. 确保CDP只有1个,在input中

  2. 确保input[0].lock==input[1].lock==UDTLock,lock只有2个

  3. 确保input[0]为UDT;input[0].UDT.amount=CPD.udt.amount

  4. 确保output[0].lock=CPD.owner,且为UDT;output[0].amount=CPD.udt.amount

  5. 确保input.TAI.amount-output.TAI.amount=CDP.TAI

  6. 确保output[1].lock=CommunityLock, 为TAI且amount>=手续费

清算

当UDT的价格下跌,触发警戒线时,资产将被清算。

警戒线为资产的质押率;不同的UDT的质押率,可能有差异。

清算流程:

  1. UDT价格下跌时,UDT价格*数量 <= TAI数量*质押率,该笔质押单就允许被清算

  2. UDT.lock验证存在CDP

  3. CDP.lock验证存在CDP

  4. CDP.type验证UDT数量正确

  5. CDP.type确认input没有TAI,走清算流程

  6. CDP.type验证UDT价值低于抵押门限

  7. output中存在Debt

  8. Debt.type验证存在CDP

  9. Debt.type验证UDT和Debt的lock正确

最后更新于