币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】

  • A+
所属分类:币安BSC
摘要

添加流动性分红USDT+燃烧通缩合约代码实现及合约部署配置操作教程文档


chatGPT账号

一、准备

本合约实列主要实现添加流动性分红usdt,代币燃烧通缩功能。用户添加流动性资金池获取对应数量的LP,按照用户获取LP数量的权重分红对应的手续费转换为USDT到添加流动性的用户钱包地址中。同时,代币线上交易时燃烧通缩到部分代币,变相提升代币稀缺度。具体的合约实现功能如下:

1、总计5%手续费,其中2%燃烧,3%加池分红usdt

2、线上交易收手续费,线下转账不收手续费

3、自动设置开盘时间为首次添加流动性时间戳

4、代币派发器合约SMCWarp可以设置usdt回流到指定的开发者钱包地址,正常情况应该是转账到业务主合约地址

5、加池分红usdt,最多分红20个加池地址,避免过多子交易导致gas费升高。下次分红从上次分红的结束索引继续开始分

币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】

二、合约代码实现

1、业务主合约构造函数:

constructor(address tokenOwner) ERC20("Bitcoin", "BTC") {						
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);						
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())						
        .createPair(address(this), address(_baseToken));						
		uint256 total = 80000 * 10**18;				
        _approve(address(this), address(0x10ED43C718714eb63d5aA57B78B54704E256024E), total.mul(1000));						
        USDT = IERC20(_baseToken);						
        pair = IERC20(_uniswapV2Pair);						
        uniswapV2Router = _uniswapV2Router;						
        uniswapV2Pair = _uniswapV2Pair;						
        _tokenOwner = tokenOwner;						
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);						
        _isExcludedFromFees[tokenOwner] = true;						
		_isExcludedFromFees[tokenOwner] = true;				
        _isExcludedFromVipFees[address(this)] = true;						
        swapTokensAtAmount = total.div(10000);						
        _mint(tokenOwner, total);						
    }

2、代币兑换为USDT合约代码实现:

function swapTokensForOtherUsdt(uint256 tokenAmount) private {					
		address[] memory path = new address[](2);				
        path[0] = address(this);						
        path[1] = address(_baseToken);						
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(						
            tokenAmount,						
            0,						
            path,						
            address(warp),						
            block.timestamp						
        );						
		warp.withdraw();				
    }

3、当前流动性资金池状态判断功能:

function _isAddLiquidityV1()internal view returns(bool ldxAdd){					
						
        address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0();						
        address token1 = IUniswapV2Pair(address(uniswapV2Pair)).token1();						
        (uint r0,uint r1,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves();						
        uint bal1 = IERC20(token1).balanceOf(address(uniswapV2Pair));						
        uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair));						
        if( token0 == address(this) ){						
			if( bal1 > r1){			
				uint change1 = bal1 - r1;		
				ldxAdd = change1 > 1000;		
			}			
		}else{				
			if( bal0 > r0){			
				uint change0 = bal0 - r0;		
				ldxAdd = change0 > 1000;		
			}			
		}				
    }

4、添加流动性分红usdt按照LP持币权重分发代码实现:

function _splitOtherSecond(uint256 sendAmount) private {						
        uint256 buySize = ldxUser.length;						
        uint256 totalAmount = pair.totalSupply();						
        if(buySize>0 && totalAmount > 0){						
            address user;						
            if(buySize >20){						
                for(uint256 i=0;i<20;i++){						
                    if(ldxindex >= buySize){ldxindex = 0;}						
                    user = ldxUser[ldxindex];						
                    uint256 amountUsdt = pair.balanceOf(user).mul(sendAmount).div(totalAmount);						
                    if(amountUsdt>10**10){						
						USDT.transfer(user,amountUsdt);
                    }						
					ldxindex = ldxindex.add(1);	
                }						
            }else{						
                for(uint256 i=0;i<buySize;i++){						
                    user = ldxUser[i];						
                    uint256 amountUsdt = pair.balanceOf(user).mul(sendAmount).div(totalAmount);						
                    if(amountUsdt>10**10){						
						USDT.transfer(user,amountUsdt);
                    }						
                }						
            }						
        }						
    }

5、SMCWarp接口具体实现类代码如下:

contract SMCWarp is Owner {
    IERC20 public usdtToken;
    IERC20 public dorToken;

    function initialize(IERC20 _usdtToken, IERC20 _dorToken) external isOwner {
        usdtToken = _usdtToken;
        dorToken = _dorToken;

        usdtToken.approve(address(dorToken), uint256(-1));
    }

    function approve() external {
        usdtToken.approve(address(dorToken), uint256(-1));
    }

    function withdraw() external returns(bool){
     uint256 amountUsdt = usdtToken.balanceOf(address(this));
     usdtToken.transfer(dorToken,amountUsdt);
     return true;
    }
}

三、完整版本合约源代码及部署配置教程文档如下

币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】

至此,完成添加流动性分红USDT+燃烧通缩合约代码实现所有操作流程。

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:

币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:

币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】

多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:

币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:

此处为隐藏的内容!
登录后才能查看!

添加VX或者telegram获取全程线上免费指导

币安智能链BSC发币教程——添加流动性分红USDT+燃烧通缩合约代码实现【pdf+视频币安链BSC发币教程下载】
免责声明

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

本文是全系列中第152 / 237篇:通证发行

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号
知点

发表评论

您必须登录才能发表评论!