cUSDC V3(Compound V3)作为非标准Rebasing代币,CometExt.sol

  • RareSkills
  • 发布于 2024-01-09 22:59
  • 阅读 190

文章详细介绍了Compound V3合约的行为,它类似于一种可调整供应量的ERC 20代币,即借贷平台的USDC余额的现值可以被转移。文章还讨论了Compound V3实现的ERC 20函数及其工作原理。

The Compound V3 合约表现得像一个重基 ERC 20 代币。重基代币是指具有算法调整供给而不是固定供给的代币。这儿的“代币”表示正的 USDC 余额的现值。也就是说,贷方可以将其本金的现值转移到其他地址,就如同它是一个 ERC 20 代币一样。由于本金的价值通常因利息累积而增加,这个 ERC 20 代币的价值随着时间的推移而向上重基。

Compound V3 不使用代币保管标准(例如 ERC-4626)来追踪借贷池的“份额”。

正如我们在讨论本金和现值时指出的,用户可能已经存入 100 USDC 但因利息累积而获得 110 USDC 的信用——这 110 代表现值。正是这个单位的账目由 Compound V3 的 ERC20 功能管理。

前提条件

用户必须熟悉利息指数和 Compound V3 的 现值和本金价值的概念。由于 Comet 是我们在这里讨论的主要智能合约的名称,本文中将 Compound V3 和 Comet 交替使用。

本文结构

每个标题将讨论 Compound V3 实现的一个 ERC 20 功能,以及它如何实现该功能。一些功能并不是 ERC 20 标准的一部分,但对本讨论是相关的。

totalSupply 和 totalBorrow (Comet.sol)

totalBorrow,顾名思义,是借入的 USDC 总额。也就是说,它是债务的现值。我们可以通过合约返回的结果和我们在 Compound 平台上看到的来证实这一点。这不仅仅是借款人从平台提取的 USDC 数量——它还包括借入的 USDC 上累积的利息。

下面我们展示一张 Compound V3 用户界面的截图,显示了这个值,以及 Etherscan 返回的 totalBorrow() 函数的结果。

total borrowing screenshot compound v3

类似地,totalSupply() 并不是贷方存入 Compound 的 USDC 数量——而是 现值 的总存款。

下面截图中的 totalSupply 和 totalBorrow 代码 应该能帮助你清晰理解现值之间的关系。

totalSupply\(\) 和 totalBorrow\(\) 函数

下面我们截图了两次对 totalSupply 的查询。请注意,右侧第二张截图中的 totalSupply 已经增加。

totalSupply\(\) increasing

totalSupply() 函数的行为与 ERC 20 的 totalSupply() 相同。

借款人无法转移债务,因此 totalBorrow 不用于任何代币类接口。

balanceOf (Comet.sol)

balanceOf 在我们关于本金和现值的讨论中已经涵盖,因此在此不再赘述。

transfer 和 transferFrom (Comet.sol)

transfer 和 transferFrom 都会转移贷方的现值。金额参数以现值来测量。

transfer\(\) 和 transferFrom\(\)

这两个函数在内部都会调用 transferInternal。在 Compound V3 中,转...

剩余50%的内容订阅专栏后可查看

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/