一、说明
机器人软件在defi中通常扮演两个功能:抢开盘和夹子软件,这两个功能的主要实现作用和原理说明如下:
- 抢开盘:在项目方添加完流动性后瞬间检测到流动性添加情况,抢先买入部分代币。此时项目方还没有把流动性添加到目标体量,在流动性继续添加的过程中即使代币价格没有拉升波动,但是由于流动性的厚度增加,机器人抢到的代币再次卖出到资金池中产生的价格差也会使得机器人软件从资金池中获利。机器人软件这种频繁的超短线操作,导致流动性底池损失。
- 夹子软件:在检测到大额用户交易的买入之后,通过支付高昂的gas费用来燃烧区块,从而使得后面的交易先于之前的交易成交。在大额买入交易成功后,再高价卖出,从而夹走大额交易的利润。
这两种机器人功能都有一个共同点:超短线操作,都在同一个区块内完成交易。
针对这种共同点,在合约中增加批量杀机器人和夹子软件的功能。主要实现原理为:针对单个区块内产生两个同一个地址的交易时就判断为机器人地址,针对机器人地址收取高额的税费,以此批量杀指定区块时间段内的机器人。
注:合约中必须设置杀机器人的时间段范围,避免整个合约的全生命周期内都开启批量杀机器人功能。这样会增加合约的交易成本,因为单个区块同一个地址的两个交易判断需要不断的写链上数据。消耗比较多的交易gas费用。通常设置批量杀机器人在开盘后的100个区块内即可。一旦机器人软件检测到有批量杀区块机器人功能,也就放弃在合约上的非法操作。
二、功能代码实现
- 声明相关的全局变量
uint256 public batchBots; ##统计杀机器人次数
uint256 public killBatchBlockNumber; ##控制杀开盘多少区块的机器人交易
bool public enableKillBatchBots = true; ##是否开启批量杀区块功能
mapping(address => uint256) public user2blocks; ##记录单个地址同一区块发生两笔记录的情况
2. 添加相关变量的set接口
function setKillBatchBot(bool enable) public onlyOwner {
enableKillBatchBots = enable;
}
3. _transfer函数中控制批量杀区块机器人功能
if (
enableKillBatchBots &&
_swapPairList[sender] &&
block.number < startTradeBlock + killBatchBlockNumber
) {
//batch kill swap bots logics program code
}
在线上买入操作时,开盘后killBatchBlockNumber个区块时间段范围内。如果同一个地址在同一个区块内发生了两次交易就识别为机器人交易,收取高额的税费。
4. 高额税费收取功能
function _funTransfer(
address sender,
address recipient,
uint256 tAmount
) private {
_balances[sender] = _balances[sender].sub(tAmount);
uint256 feeAmount = tAmount.mul(75).div(100);
_takeTransfer(
sender,
_fundAddress,
feeAmount
);
_takeTransfer(sender, recipient, tAmount.sub(feeAmount));
}
收取75%的高额税费,回流到基金会地址。
三、完整版合约源代码如下:
源码及合约部署、开源、上线交易所、动态参数配置教程下载地址:
此内容仅供注册用户可见,请登录!
至此,完成合约中增加批量杀机器人防夹子软件防抢开盘bots功能所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
此内容仅供注册用户可见,请登录!
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册