践行区块链

FilDA 存款还借款原理剖析

2021-06-14  本文已影响0人  Ashton

FilDA 是 heco 上的 DeFi 借贷平台,本来和其它 DeFi 借贷平台 并没多大差别,但其最近产品更新带来了越来越多的亮点。存款还借款就是其中一个。

0x01 正常的还款是怎样的

就像下图所示,这个账户借了一点儿钱,差不多 6.77 USDT。


image.png

要还钱的话,是需要钱包里有至少 6.77 USDT 放在那里的。目前这个钱包里有 30 好几 USDT 就是可以正常还款的。这和现实生活中拿现金还贷款是类似的,我们可以称之为 现金还款

这是目前 99% 的 DeFi 借贷平台所支持的唯一一种还款方式。

0x02 存在什么样的问题

现金还款需要手上有现金,但如果你手上没现金怎么办?这里有几种情况:

  1. 手上没有要还款的那个币种,但是有其它币种。比如你借了一笔 USDT,出去各种腾挪赚了不少 HT,但手上 USDT 所剩无几了。针对这种情况,正常情况下你要先去交易所把 HT 换成 USDT,然后进行还款。FilDA 很早也就提供了换币还款功能


    image.png

    可以一键把换币和还款都做了,免去了取交易所换币的过程。


    image.png
  2. 但是很多用户其实手上是没必要保留现金的。把币放到 FilDA 这种借贷平台里吃利息不香么?为啥要把没任何利息收入的币放在钱包里呢?比如你借了一笔 USDT,出去各种腾挪赚了不少 HT,然后直接把这些 HT 存入了 FilDA,赚取无损的利息收入。但问题来了,要还款时怎么办?正常情况下,需要这么几步操作:
    第一步:把 HT 从 FilDA 取出来
    第二步:打开 MDEX (Heco 上的一个去中心化交易所)
    第三步:把 HT 换成 USDT
    第四步:打开 FilDA 并进行 USDT 还款
    特别繁琐是不是,有了前面提到的换币还款功能,这些步骤可以简化成两步:
    第一步:把 HT 从 FilDA 取出来
    第二步:使用换币还款功能进行 USDT 还款
    感觉一点儿也不复杂了是不是,不过如果你是玩 DeFi 的老手,就会很快发现一个惊人的现实:在操作层面,

以上全错

你甚至连第一步都走不下去,用户往往都是极其贪婪的,往应用里存价值 1000U 的 HT,恨不能借出价值 1000U 的 USDT,尽管实际上由于抵押率的限制,可能最多只能借出 800U,赚了更多的 HT 之后,还想借出更多的 USDT。

看着账户里存了价值 1600U 的 HT,实际只借出了 800U,但你是没法直接取出价值 800U 的 HT 进行换币还款的,因为一旦这样操作,会导致抵押品不足的问题,所以底层协议会禁止这样的操作,你要按实际可取出的 HT 数量去取款,换币还款,然后再取款,再换币还款,反复操作直到手抽筋...

有没有可能更简单些,所有操作 一步完成 呢?

0x03 存款还借款

最近 FilDA 新上线的存款还借款,

image.png
就实现了这样的 一步完成,可以将任何存款直接拿来还借款,再也不用因为要还款还要在钱包里非要保留资产了。有任何资产直接放心大胆的放进去吃利息就好了,要还款时直接拿出一部分存款将借款还掉就好了。

这,是怎么做到的?
最直接的想法,你可以写一个合约,把下面的操作放在一个合约函数里:
第一步:取出抵押资产 HT
第二步:将抵押资产通 HT 过 DEX 兑换为 USDT
第三步:用兑换出来的 USDT 还掉 USDT 债务

很不幸的是,这几乎是完全走不通的,假设 HT 的抵押率为 80%,你存了价值 1000U 的 HT 作为抵押资产,借出 800U,这种情况下,你在第一步是一分钱的 HT 也取不出的,更轮不到第二步第三步了。

怎么办?

现实生活中有种过桥贷,就是为类似这种场景而生的。简单来说,这个时候如果旁边有个资金池,先从这个资金池里借 800U 还掉你的债务,然后再取出价值 800U 的 HT,通过 DEX 兑换为 800U 还给资金池,问题不就完美解决了么?

总结一下:
第一步:从资金池借一笔钱,在存款还贷款界面你看到的单笔限额,实际上就是资金池的限额,资金池里最多只允许借这么多钱。


image.png

第二步:用从资金池里借出的钱把借款债务还掉
第三步:取出等数量的抵押资产
第四步:将抵押资产通过 DEX 卖出,还钱给资金池
所有步骤放在一个智能合约函数里,一笔交易完成。

上一篇下一篇

猜你喜欢

热点阅读