文章
问答
讲堂
百科图谱
线下集训
更多
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
文章
问答
讲堂
线下集训
专栏
活动
工作
文档
集市
搜索
登录/注册
10
限定用户只在外部进行Swap交易的场景下,如何为这个Token实现买卖手续费?
. ###### 我知道uniswap提供了允许交易费的兑换方法,如swapExactETHForTokensSupportingFeeOnTransferTokens ###### ###### 但在我看到实现swap买卖费的Token合约里,都是通过合约内部来进行带手续费的兑换的,而并不是用户在外部swap兑换。 . ###### **问题是,在一个比较单纯的ERC20 Token中,这个Token的交易场景是用户在外部进行swap交易的。** ###### **1.这个时候还可以在Token合约里实现买卖手续费吗?** ###### ###### **2.我要如何在这种交易场景下(用户仍然在外部swap交易),在token中实现买卖手续费呢?** .
.
我知道uniswap提供了允许交易费的兑换方法,如swapExactETHForTokensSupportingFeeOnTransferTokens
但在我看到实现swap买卖费的Token合约里,都是通过合约内部来进行带手续费的兑换的,而并不是用户在外部swap兑换。
.
问题是,在一个比较单纯的ERC20 Token中,这个Token的交易场景是用户在外部进行swap交易的。
1.这个时候还可以在Token合约里实现买卖手续费吗?
2.我要如何在这种交易场景下(用户仍然在外部swap交易),在token中实现买卖手续费呢?
.
0 条评论
分类:
Uniswap
请先
登录
后评论
最佳答案
2024-12-05 21:41
是的,在 transfer 和 transferFrom 函数中添加扣除手续费的逻辑即可
是的,在 transfer 和 transferFrom 函数中添加扣除手续费的逻辑即可
0 条评论
0
请先
登录
后评论
Wade
- Footprint Analytics CTO
擅长:数据分析,GameFi,NFT | 采纳率 16% | 回答于 2024-08-26 10:43
默认排序
时间排序
其它 3 个回答
De7e
2024-09-18 19:36
目前我的测试是,在_transfer()中,买交易可以正常实现对token的税。 但是卖交易(to=pair),如果扣除token会导致uniswap的k值错误。 目前使用的变通方法是,在_transfer()中从用户地址的余额中扣除token作为手续费,当然项目要提前和用户说明。不过感觉这样实现还不是太好。
请先
登录
后评论
NPC.李括
2024-11-20 11:47
在 ERC20 代币中实现买卖手续费,即使用户在外部进行交易(例如通过 Uniswap 等去中心化交易所),仍然是可能的,但需要一些特定的设计考虑。以下是你可以考虑的解决方案: 通过转账函数实现手续费 在你的 ERC20 代币合约中,重写 transfer 和 transferFrom 方法,以在每次转账时收取手续费。这种方法会在用户通过任何合约或外部调用转账时自动扣除手续费。 ``` pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract MyToken is ERC20 { uint256 public feePercentage = 2; // 2% fee constructor() ERC20("MyToken", "MTK") { _mint(msg.sender, 10000 * 10 ** decimals()); } function _transfer(address sender, address recipient, uint256 amount) internal override { uint256 fee = (amount * feePercentage) / 100; uint256 amountAfterFee = amount - fee; super._transfer(sender, address(this), fee); // Transfer fee to the contract super._transfer(sender, recipient, amountAfterFee); // Transfer remaining amount } } ```
请先
登录
后评论
De7e
2024-12-05 21:41
补充一下吧,谢谢大家的回答。 可以正常在_transfer()中实现买卖手续费的逻辑,只是兑换的时候使用支持fee的兑换方法去兑换就行。 不会有uniswap k值的问题。
请先
登录
后评论
您需要登录后才可以回答问题,
登录
关注
3
关注
收藏
0
收藏,
1170
浏览
De7e
提出于 2024-08-23 19:49
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因: