本文深入探讨了fee-on-transfer(交易费代币)和rebase(弹性供应代币)两种高级ERC-20代币的特性、潜在的安全漏洞以及集成挑战。强调了这两种代币因其独特的机制可能对DeFi生态系统产生的影响,并讨论了在DeFi协议中集成这些代币时开发者需要考虑的关键问题。
随着 DeFi 和智能合约世界的发展,我们使用的代币的复杂性也在发展。在更高级的 ERC-20 代币类型中,有转移费用代币和 rebase 代币。这些代币引入了独特的机制,可以显著影响它们在 DeFi 生态系统中的行为。虽然它们提供了创新的功能,但它们也带来了一系列潜在的安全漏洞和集成挑战。在本文中,我们将探讨这些代币、它们的潜在缺陷以及如何降低相关的风险。
转移费用代币是 ERC-20 代币,每次转移时都会扣除费用。此费用可用于各种目的,例如销毁一定百分比的代币,将每笔交易的一部分重定向到特定钱包(例如,用于开发、营销或重新分配给持有者),或其他特定于实用程序的机制。
这是一个在 Solidity 中实现的转移费用代币的例子:

ChatGPT 示例
在此示例中,每次发生转移时,都会计算费用并扣除,然后将剩余金额发送给接收者。
Reflect Finance (RFI) 是转移费用代币的一个真实案例。每次转移 RFI 代币时,都会从交易金额中扣除费用(通常为 1%)。然后,此费用将分配给现有代币持有者,从而根据交易量为持有者创建自动收益。
Rebase 代币以算法方式调整其总供应量,同时增加或减少所有代币持有者的余额。通常,目标是通过响应市场状况扩大或缩小总供应量来维持Hook或目标价格。
这是一个简单的 rebase 代币的实现:

ChatGPT 示例
免费加入 Medium 以获取该作者的更新。
Ampleforth (AMPL) 是一种众所周知的 rebase 代币,它会自动调整其供应量,以达到每个 AMPL 1 美元的价格。 rebase 函数根据当前市场价格更改总供应量,扩大或缩小供应量以使价格更接近目标。
许多 DeFi 协议,特别是像 Uniswap 和 Sushiswap 这样的自动化做市商(AMM),都假设发送的代币数量等于收到的数量。对于转移费用代币,此假设会失效,从而导致高于预期的滑点和潜在的交易失败。
协议和智能合约通常依赖于标准的 ERC-20 行为:`balanceOf` 返回一致的值,并且 `transfer` 和 `transferFrom` 导致发送和接收的金额相等。转移费用代币违反了这一假设,这可能会导致智能合约出现故障。
DeFi 协议通常假设代币余额保持静态,除非明确修改。但是,对于 rebase 代币,余额可以由于 rebase 事件而自动调整。这可能会导致重大问题:
Rebase 代币可能容易受到抢跑攻击。恶意行为者可能会试图利用可预测的 rebase 事件,从预期的供应变化中获利,并采用复杂的交易策略来操纵市场。
虽然转移费用和 rebase 代币提供了创新的功能,但它们也带来了重大的复杂性和安全风险,必须谨慎管理。开发人员在将此类代币集成到 DeFi 协议中时,必须考虑这些问题,以确保对代币行为的假设与这些高级 ERC-20 代币的实际机制相符。
由 0xnolo 编写。
- 原文链接: medium.com/@0xnolo/fee-o...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!