一、说明
为了防止项目上线交易所后的抢开盘软件异常抢购导致的价格频繁异常波动,因此需要设置开盘杀区块机制,同时设置开盘防巨鲸抢购机制。本合约代码案例通过设置开盘时间后前20分钟内动态手续费模式来杀开盘前20分钟的区块实现batchkillblock功能;通过设置开盘一小时内单个钱包地址最大持币数量和单笔交易的最大交易量来防止巨鲸。具体功能如下:
1、开盘前20分钟手续费呈梯形递减,每五分钟递减2%,最终达到恒定手续费
2、买卖交易分别设置不同的动态手续费率,并且不需要通过合约所有权onlyowner权限调用
3、通过batchKillBlock机制防止价格的大幅度波动
4、开盘一小时内设置单个钱包地址的最大持币数量,单笔交易的最大交易额度,限制代币被巨鲸长期持有,损害合约的流动性。
二、具体代码实现
1、开盘20分钟内手续费每五分钟递减2%核心代码
function _dynRangeRateReal() view private returns (uint256) { require(block.timestamp > startTime, "BEP20: trade not started"); require(startTime + 20 minutes > block.timestamp, "BEP20: The dynRateReal is not in the recent time range"); uint256 dynRateReal; uint256 deltaTime = block.timestamp - startTime; uint256 times = deltaTime / (5 minutes); dynRateReal = dynRangeRate.sub(dynPerLevelRate.mul(times)); return dynRateReal; }
2、开盘一小时内防巨鲸核心代码
function _tradeControl(address from, address to, uint256 amount) view private { if ( from == address(uniswapV2PairBNB) || to == address(uniswapV2PairBNB) || from == address(uniswapV2PairUSDT) || to == address(uniswapV2PairUSDT) ) { address addr = (from == address(uniswapV2PairBNB) || from == address(uniswapV2PairUSDT)) ? to : from; if (excluded[addr]) { return; } if (startTime > block.timestamp) { revert("BEP20: trade not started"); } if ( startTime + 60 minutes > block.timestamp && (from == address(uniswapV2PairBNB) || from == address(uniswapV2PairUSDT)) ) { require(amount <= _maxDeals, "BEP20: The maximum number of deals is 2000"); } } }
通过以上两种限制机制可以比较好的防止项目上线交易所时被抢开盘软件恶意抢购导致的价格异常波动和流动性损害。
至此,完成复利模式下开盘前20分钟手续费每5分钟递减2%代码实现的所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册