一、准备
目前主流的合约模式中出现了,可以直接分红USDT或者BNB这种主流币种到指定的钱包地址或者添加流动性的用户账户地址中。这种合约是在原来本币回流或者本币分红到添加流动性的用户钱包的地址的基础上改造而来的。原理基本都是相同的,主要核心功能是自动完成兑换本币到USDT或者BNB,然后转账到指定的钱包地址或者添加流动下的钱包地址。
【附注20221212】
两种模式逐渐演变成两种主流的合约机制:加池分红usdt、持币分红usdt。两种模式的主要功能如下:
1、加池分红即添加流动性分红usdt模式,将交易手续费暂时中转到合约地址中,当数量累积达到兑换阈值时兑换为usdt,按照用户添加流动性的权重分红usdt到加池钱包地址中。当然,加池用户钱包地址需要通过某种方式添加到合约数组中,目的是让合约识别到加池钱包地址。
2、持币分红usdt即对所有持币用户分红usdt,将部分交易手续费暂存到中转地址中,当达到指定数量阈值时兑换为usdt,按照用户持币权重,通过派发器分发到持币地址中
3、两种模式都涉及到代币兑换到主流币中的功能,都是经过派发器将usdt派发到加池或者持币用户地址中。
二、核心代码实现
以下为代币自动兑换为主流币转的合约代码:
function swapTokensForDividendToken(uint256 tokenAmount) private { if (tokenAmount > 0) { address[] memory path = new address[](3); path[0] = address(this); path[1] = uniswapV2Router.WETH(); path[2] = husdtToken; _approve(address(this), address(uniswapV2Router), _tTotal); // make the swap uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of dividend token path, address(this), block.timestamp ); uint256 dividends = IERC20(husdtToken).balanceOf(address(this)); IERC20(husdtToken).transfer(address(devAddress), dividends); } }
合约的核心功能还是调用了pancakeswap的API接口方法swapExactTokensForTokensSupportingFeeOnTransferTokens 。因此类似功能的合约只限制出现在bsc上,并且是pancakeswap的交易所。
以下代码的触发分红代币到指定钱包地址或者LP添加者钱包地址的触发条件
bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if (overMinTokenBalance && !inSwapAndLiquify && to == uniswapV2Pair && swapAndLiquifyEnabled) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); }
三、完整版合约源代码如下
四、合约部署、开源、上线交易所、动态参数配置教程如下
源码及合约部署、开源、上线交易所、动态参数配置教程下载地址:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册