心血来潮,写篇小文章,就写一点点示例代码吧
实现交易滑点其实很简单,首先要理解的是从哪里扣手续费
扣手续费,那么得理解那些东西呢 ?文章来源:https://www.toymoban.com/news/detail-525558.html
- swap 背后的逻辑是什么
- 通俗的来讲,swap其实就是他给创建了一个 LP 的合约 (createPair)
- 在dex进行交易的时候,你要理解是用你的TokenA 去兑换 TokenB 出来
- 👌,理解以上两个,就知道你下一步应该做什么了
- 类似于swap背后的原理什么的,这里不做多的阐述,只讲实现滑点
- 上面提到了 TokenA 兑换TokenB,既然有兑换,那肯定有转账,也就是 Transfer
- Erc20 标准中 Transfer 有transfer(); transferFrom(); 两个方法
- 可以看到这两个方法最终会调用内部方法 _transfer();
- ok,下面开始盲写一波代码
// 其他代码省略,这里只写_transfer 中的部分代码
uint256 fee = 4; // 滑点为 4%
function _transfer(from, to, amount) internal {
// 不管这玩意的难度,你只要知道,这玩意很简单就👌
... 省略开头
// 👌,我们正式开始实现 滑点
// 如果是从 lp 的地址转入,或者转出,则说明这是在dex交易
if (from == pair || to == pair ) {
// 从pair转出,也就是你要买的Token
if (from == pair) {
uint256 totalFee = fee * amount / 100;
// 买入,实现买入滑点,你可以在他转给用户之前,实现,转移出去
_balance[addr1] += totalFee / 2 ; // 这里扣除 2%
_balance[addr2] += totalFee - totalFee / 2 ; // 这里扣除 2%
// 这里 只是给 对应的 接受 手续费的地址增加了手续费,还需要给其增加转账事件
emit Transfer(pair, addr1, totalFee / 2); // 表示pair转了了totalFee/2 给addr
emit Transfer(pair, addr2, totalFee / 2);
} else {
// 卖出 Token
// 操作和 买入一样
}
}
... 省略结尾
}
👌,粗略的代码就已经实现了,dex 交易滑点了,其他的可以举一反三,调整代码。
不懂的可留言文章来源地址https://www.toymoban.com/news/detail-525558.html
到了这里,关于pancakeSwap、uniswapV2 ... 如何实现交易手续费(滑点)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!