币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

  • A+
所属分类:币安BSC

chatGPT账号

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

一、说明

在合约中实现不仅可以通过pancakeswap进行代币的买卖交易,还可以允许用户直接向托底池合约转账代币即可实现托底价格卖出的功能。这样可以有效的保证代币的流通量和兑换价值的稳定性。托底资金池合约是保证用户卖出的最低价格,正常情况下用户可以直接通过在pancakeswap资金池进行兑换交易,如果出现较大的价格波动,用户可以选择将代币注入托底池合约从而获得一个保底的卖出价格。

本合约代码案例如下包含如下功能:

  1. 买卖滑点3.5%,其中税费渠道分配如下:

2. 1%自动兑换成usdt,回流到营销钱包

3. 2.5%自动兑换成usdt,进入托底池,托住全网流动的有效代币总量,用于代币销毁

4. 添加流动性不收手续费,撤销流动性收取3.5%的税率

5. 私募用户撤销lp时只能撤回usdt,不能撤回代币,撤销流动性的代币全部销毁掉

6. 私募用户通过私募方式获得的lp禁止转移到其他钱包地址,如果私募用户将私募获得的l             p转移到其他钱包地址仍热不能撤销流动性

7.用户如果转私募获得的lp到其他钱包地址,同时其他钱包地址在pancakeswap上正常方式添加了流动性,那么私募部分的lp不能允许撤销流动性,用户正常添加的流动性可以正常撤销,并撤回usdt和本币

8. 用户盈利部分usdt的百分比用于分红给所有将代币打入黑洞dead地址的用户。按照用户打入黑洞地址的数量权重去分红usdt

9. 设置动态的交易开始时间,私募用户可以提前买入,但是限制每个私募用户最大累计购买额度为50USDT

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

二、核心功能代码完整实现

  1. 参数初始化功能,包括交易限制参数,分红派发器实例化等
function init(address _swapV2RouterAddress, address _usdt, address _marketManager, address _backstopManager, address _burnDividendManager) public onlyOwner{
        require(swapV2RouterAddress == address(0) && usdt == address(0), "OceanicProtocol: initialized");

        require(_swapV2RouterAddress != address(0), "OceanicProtocol: router address is 0");
        require(_usdt != address(0), "OceanicProtocol: USDT address is 0");
        require(_marketManager != address(0), "OceanicProtocol: market address is 0");

        swapV2RouterAddress = _swapV2RouterAddress;
        usdt = _usdt;

        swapV2Router = IUniswapV2Router02(swapV2RouterAddress);
        swapV2PairBNB = IUniswapV2Factory(swapV2Router.factory())
            .createPair(address(this), swapV2Router.WETH());
        swapV2PairUSDT = IUniswapV2Factory(swapV2Router.factory())
            .createPair(address(this), usdt);

        swapV2Pairs[swapV2PairBNB] = true;
        swapV2Pairs[swapV2PairUSDT] = true;

        setExcluded(owner(), true);
        setExcluded(address(this), true);

        initBackstopManager(_backstopManager);
        initBurnDividendManager(_burnDividendManager);
        initMarketManager(_marketManager);
    }

2. 获取pancakeswap资金池接口中的代币相对价值,U本位和币本位价格换算

function getReserves() internal view returns (uint256 oceaReserve, uint256 usdtReserve) {
        (uint reserve0, uint reserve1,) = IUniswapV2Pair(swapV2PairUSDT).getReserves();
        (oceaReserve, usdtReserve) = usdt == IUniswapV2Pair(swapV2PairUSDT).token0() ? (reserve1, reserve0) : (reserve0, reserve1);
    }

    function getOCEAValueUSDT(uint256 oceaAmount) public view returns(uint256) {
        (uint256 oceaReserves, uint256 usdtReserves) = getReserves();
        if (oceaReserves != 0 && usdtReserves != 0) {
            return oceaAmount * usdtReserves / oceaReserves;
        }

        return 0;
    }

    function getUSDTValueOCEA(uint256 usdtAmount) public view returns(uint256) {
        (uint256 oceaReserves, uint256 usdtReserves) = getReserves();
        if (oceaReserves != 0 && usdtReserves != 0) {
            return usdtAmount * oceaReserves / usdtReserves;
        }

        return 0;
    }

3. 代币的3.5%滑点税率分配渠道功能函数

function _countFee(address from, address to, uint256 amount) private returns (uint256 finalAmount) {
        finalAmount = amount;

        if (from == swapV2PairUSDT || to == swapV2PairUSDT) {
            address addr = (from == swapV2PairUSDT) ? to : from;

            uint256 backstopFee;
            uint256 burnDividendFee;
            uint256 marketFee;

            if (!excluded[addr]) {
                backstopFee = amount * swapBackstopRate / denominator;
                marketFee = amount * swapMarketRate / denominator;

                if (from == swapV2PairUSDT) {
                    uint256 usdtAmount = getOCEAValueUSDT(amount);
                    accounts[to].usdtForPurchased += usdtAmount;
                } else if (to == swapV2PairUSDT) {
                    uint256 usdtForPurchased = accounts[from].usdtForPurchased;
                    uint256 usdtForSale = accounts[from].usdtForSale;

                    uint256 usdtAmount = getOCEAValueUSDT(amount - backstopFee - marketFee);
                    if (usdtForSale >= usdtForPurchased) {
                        burnDividendFee = amount * burnDividendRate / denominator;
                    } else if (usdtForSale + usdtAmount > usdtForPurchased) {
                        uint256 profitOCEA = getUSDTValueOCEA(usdtForSale + usdtAmount - usdtForPurchased);
                        burnDividendFee = profitOCEA * burnDividendRate / denominator;
                    }
                    accounts[from].usdtForSale += usdtAmount;
                }
            }

            if (backstopFee > 0) {
                _transferTo(from, backstopManager, backstopFee);
            }
            if (burnDividendFee > 0) {
                _transferTo(from, burnDividendManager, burnDividendFee);
            }
            if (marketFee > 0) {
                if (to == swapV2PairUSDT && marketFee > 2 gwei) {
                    address[] memory addrs = _createRandomAddresses(from, 2);
                    _transferTo(from, addrs[0], 1 gwei);
                    _transferTo(from, addrs[1], 1 gwei);
                    _transferTo(from, marketManager, marketFee - 2 gwei);
                } else {
                    _transferTo(from, marketManager, marketFee);
                }
            }

            finalAmount = amount - backstopFee - burnDividendFee - marketFee;
        }
    }

4. 识别用户动作行为为添加流动性的功能函数:

    function _isAddLiquidity(address to, uint256 tokenAmount) internal view returns (bool) {
        if (to != swapV2PairUSDT) {
            return false;
        }

        return BackstopManager(backstopManager).isAddLiquidity(tokenAmount);
    }

5. 识别用户动作行为为撤销流动性的功能函数:

    function _isRemoveLiquidity(address from, uint256 tokenAmount) internal view returns (bool) {
        if (from != swapV2PairUSDT) {
            return false;
        }

        return BackstopManager(backstopManager).isRemoveLiquidity(tokenAmount);
    }

6. 交易裂变随机增加持币地址数量的函数接口

 function _createRandomAddresses(address baseAddr, uint256 count) private view returns(address[] memory addrs) {
        uint256 nowTime = block.timestamp;

        addrs = new address[](count);

        for (uint256 i ; i < count ; i++) {
            addrs[i] = address(uint160(uint256(keccak256(abi.encodePacked(nowTime, baseAddr, i)))));
        }
    }

三、完整版本合约源代码实现

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

至此,完成合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易所有操作流程。

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

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

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

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

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

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

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

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

币安BSC智能链合约开发教程——合约中实现用户盈利部分百分比回流托底合约,可以在pancake和托底池同时交易【pdf+视频BSC链合约开发教程下载】

免责声明

发文时比特币价格:$71249

当前比特币价格:[crypto coins=”BTC” type=”text” show=”price”]

当前比特币涨幅:[crypto coins=”BTC” type=”text” show=”percent”]

免责声明:

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

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

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

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

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

本文是全系列中第33 / 246篇:通证发行

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

发表评论

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