以“SupportingFeeOnTransferTokens”结尾的 Uniswap Router 合约函数如何工作?

问题描述 投票:0回答:1

Uniswap 路由器合约有一些以

*SupportingFeeOnTransferTokens
结尾的方法,例如
swapExactTokensForETHSupportingFeeOnTransferTokens

https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol

我隐约(认为我)理解这些方法应该被调用来交换代币,这些代币在转账过程中会以某种方式收取税收/佣金。

我有几个关于这些的问题:

  1. 简而言之,这些函数与常规交换函数的行为有何不同?它们是否以某种方式与 minOut 参数交互?

  2. Dex UI 如何知道要调用哪个方法?它如何知道需要调用

    SupportingFee
    版本而不是标准交换?

  3. 如果我的 web3 脚本调用错误版本的方法会发生什么?失败?金额错误?

ethereum smartcontracts web3js
1个回答
0
投票

来自文档

与 swapExactTokensForTokens 相同,但对于以下令牌会成功 转账需收取费用。

so 什么是转账费用代币?

在大多数情况下,转移代币的费用会燃烧或转移一小部分 每次转账的一部分,以便转账的接收者结束 比发件人提供的略少。这被称为 “包含”转账费用。

如果是包含转账代币费用的情况,您可以使用 路由器合约中相应的交换函数以 “支持转账费用”。这些功能通过调整来成功 “amountOutMin”参数用于检查收件人金额而不是 计算不变式时的发送金额。

所以基本上

Fee-on-transfer
代币会自动从任何交易中扣除费用,并且通常将此费用重定向到特定活动,例如:

  • 燃烧一部分代币(将其永久从流通中移除,从而减少总供应量)。
  • 将一部分分配给所有代币持有者作为被动收入的形式。
  • 分配一部分用于其他指定活动,如慈善、项目开发等

对于转账收费代币,仅转账预期金额可能会因自动扣除费用而导致差异。如果处理不当,可能会导致交易失败或发送错误的金额。

© www.soinside.com 2019 - 2024. All rights reserved.