1个不稳定版本

0.1.0 2022年2月17日

#29 in #defi


用于 port-sundial

AGPL-3.0

11KB
264

⏰ 时计

时计使Solana上的固定利率借贷成为可能。

它将用户在Port上的头寸分为两部分

  • 本金代币(与底层代币一一对应)
  • 收益代币(可变部分,取决于底层协议的收益)

到期时,1个本金代币允许用户以1:1的比例兑换1个底层代币。1个收益代币允许用户兑换在借贷期间获得的利息。

用法

固定利率借贷

本金代币可用于通过零息债券模型实现固定利率借贷,因为本金代币始终可以按1:1的比例兑换为底层代币。

用户可以在各种DEX上交易本金代币。本金代币的卖方可以被视为借款人,而买方可以被视为出借人。

由于货币的时间价值,1个本金代币的成交价应始终低于1个底层代币。具体来说,1个本金USDC的成交价应低于1 USDC。

借贷的利率计算如下

支付的利息 = 本金USDC价格与1之间的差额

假设1个本金USDC(ppUSDC)的成交价为0.95 USDC。那么出借人将要收取或借款人将要支付的利息是(1 - 0.95)= 0.05 USDC。然后用户可以将它年化以计算APY。

利率互换

由于收益代币始终映射到特定时期的借贷利率。收益代币的买方可以被视为放弃固定利率以换取浮动利率。收益代币的卖方可以被视为放弃浮动利率以换取固定利率。

用户交互

用户可以创建[个人资料],将Port LP代币作为抵押品存入,并直接从时计中铸造本金代币(ppToken),然后在市场上将其出售以获得底层代币,这相当于以固定利率借款。

用户必须在ppToken到期前偿还其发行的流动性,即日晷池结束后。否则,用户将面临被清算的风险。

存款和偿还无需提前刷新任何内容,但若要提取抵押品或借款(发行ppToken),您需要确保要从其提取日晷抵押品以及刷新您的日晷资料。

要刷新日晷抵押品,您需要先刷新相应的储备。要刷新日晷资料,您需要先刷新资料中所有已存入的日晷抵押品。它们在10个槽位后将变为过期。

清算

对于清算,您需要选择您想要清算的特定日晷资料、您想要偿还的贷款以及您想要提取的抵押品,然后刷新该资料中的所有日晷抵押品,然后发送清算交易。

链上程序会检查是否可以执行清算。如果可以,用户将偿还贷款并获得额外的抵押品提取。

您获得的抵押品价值将是您偿还的贷款价值乘以(100 + 该抵押品的清算罚金)。

开发

版本要求

  • Nodejs > v15.0
  • Anchor v0.18.0
  • Solana v1.7.8

启动前端测试环境

npm install -g ts-node
anchor localnet

在单独的终端运行以下命令以设置所有链上程序

anchor migrate

本地运行测试

yarn idl:generate
yarn test:e2e

Mac用户需要安装GNU Sed以使 yarn idl:generate 正确运行。

brew install gnu-sed

依赖关系

~1.5MB
~36K SLoC