币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】

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

万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署;该合约在部署时最常见的报错就是“tracker contract is already inited”即追踪合约已经初始化完成。出现该报错的原因是在部署子合约tracker时没有配置到主合约的关联关系,在主合约部署时没有成功勾连子合约地址导致的。


chatGPT账号

币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】

一、准备
1、该合约模式如下:
a. 可以实现分红任何币种,即所谓的万能分红合约,并且分红给的代币合约地址是通过构造函数传入的。
b. 实现自动筑池,添加流动性的 LP 属于黑洞地址 address(0)
c. 手续费回流营销钱包,并且回流的是指定的分红币种,非本币
d. 每笔交易都会有部分手续费销毁掉,转入黑洞地址 0x000000000000000000000000000000000000dEaD ,但是代币的总发行量不会减少。严格来说这不是销毁,是每笔交易都有部分代币作为手续费被永久锁定到BSC公认黑洞地址
e. 该合约可以实现买入卖出配置不同的交易手续费,对应的分红,自动筑池,营销钱包,销毁的手续费可以灵活配置买入卖出时不同的比例。对应的手续费设置为0相当于关闭了该功能。这个功能是非常灵活和强大的,已经包含的功能基本上涵盖了目前市面上绝大部分的主流模式。
2、该合约的部署过程比较复杂,需要先部署 IterableMapping 类库合约,然后再部署 BABYTOKENDividendTracker 合约,并且 BABYTOKENDividendTracker 合约的开源需要依赖IterableMapping 类库,最后才能部署Token合约,在部署Token合约时将 BABYTOKENDividendTracker 的合约地址作为构造函数的参数传入Token合约中。
3、该合约部署完成后,不需要做任何的配置即可实现目标的合约模式。
4、该合约模板是平台自动生成的模板,对应的服务费通过 serviceFeeReceiver_ 和  serviceFee_ 参数来控制。在部署合约时为了实现取消服务费的目的通过设置serviceFeeReceiver_为自己的其他钱包地址,serviceFee_为0的方式来实现,同时避免改动代码。
【附注20221216】
该合约在部署时最常见的报错就是“tracker contract is already inited”即追踪合约已经初始化完成。出现该报错的原因是在部署子合约tracker时没有配置到主合约的关联关系,在主合约部署时没有成功勾连子合约地址导致的。因此在整体部署该合约时要分开部署,先部署子合约,再部署主合约。在子合约部署时要预先关联主合约,主合约部署时要勾连子合约地址,才能实现主子合约联动,实现持币分红任意币种。
二、合约部署步骤
1、所有sol文件(包括token文件)全部编译完成后,执行合约的部署。
2、在remix编译器中先部署 BABYTOKENDividendTracker  合约,该合约部署时会同时自动部署 IterableMapping  合约
币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】
执行分红任意币种的处理代码如下:
function process(uint256 gas)
    public
    returns (
        uint256,
        uint256,
        uint256
    )
    {
        uint256 numberOfTokenHolders = tokenHoldersMap.keys.length;

        if (numberOfTokenHolders == 0) {
            return (0, 0, lastProcessedIndex);
        }

        uint256 _lastProcessedIndex = lastProcessedIndex;

        uint256 gasUsed = 0;

        uint256 gasLeft = gasleft();

        uint256 iterations = 0;
        uint256 claims = 0;

        while (gasUsed < gas && iterations < numberOfTokenHolders) {
            _lastProcessedIndex++;

            if (_lastProcessedIndex >= tokenHoldersMap.keys.length) {
                _lastProcessedIndex = 0;
            }

            address account = tokenHoldersMap.keys[_lastProcessedIndex];

            if (canAutoClaim(lastClaimTimes[account])) {
                if (processAccount(payable(account), true)) {
                    claims++;
                }
            }
            iterations++;

            uint256 newGasLeft = gasleft();

            if (gasLeft > newGasLeft) {
                gasUsed = gasUsed.add(gasLeft.sub(newGasLeft));
            }

            gasLeft = newGasLeft;
        }

        lastProcessedIndex = _lastProcessedIndex;

        return (iterations, claims, lastProcessedIndex);
    }
3、部署完成后先开源 IterableMapping 合约,再开源 BABYTOKENDividendTracker 合约
IterableMapping合约地址: 0xd847f9a614c89ac3d33ea4caf636181daf5a108b
再开源 BABYTOKENDividendTracker 合约,该合约开源需要如下sol文件:
SafeMath.sol,SafeMathInt.sol,OwnableUpgradeable.sol,DividendPayingToken.sol,Initializable.sol, 
ContextUpgradeable.sol,IERC20.sol,SafeMathUint.sol,ERC20Upgradeable.sol,DividendPayingTokenInterface.sol, 
DividendPayingTokenOptionalInterface.sol,IERC20Upgradeable.sol,IERC20MetadataUpgradeable.sol,BABYTOKENDividendTracker.sol,IterableMapping.sol
共计需要15个合约文件。
并且开源合约时需要附加必需的IterableMapping类库
BABYTOKENDividendTracker合约地址:0xxxxbe1205xxxxxca8cxxxa8b3932272xxxx09
4、部署Token合约
合约需要输入相关的构造函数参数。其中包括三个数组,数组作为构造函数参数时的输入格式如下:
本次合约部署输入的构造函数参数如下:
币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】
输入参数解析:
a. 分红的代币为USDT
b. uniswapV2Router地址即PancakeSwapV2Router
c. 营销钱包地址
开源后的构造函数输入参数显示如下:
5、开源Token合约
开源合约时使用所有sol文件,不需要附加任何类库。
不需要附加 IterableMapping  和 BABYTOKENDividendTracker  类库即可开源成功。
BABYTOKENDividendTracker  合约需要依赖 IterableMapping  类库,开源 BABYTOKENDividendTracker  合约时必须附加 IterableMapping  类库。
Token合约中是clone了一个BABYTOKENDividendTracker  类似合约,不是直接调用的 BABYTOKENDividendTracker  合约。
Token中合约克隆BABYTOKENDividendTracker  类似合约的代码如下:
币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】
IterableMapping类代码如下:
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint256) values;
        mapping(address => uint256) indexOf;
        mapping(address => bool) inserted;
    }

    function get(Map storage map, address key) public view returns (uint256) {
        return map.values[key];
    }

    function getIndexOfKey(Map storage map, address key)
    public
    view
    returns (int256)
    {
        if (!map.inserted[key]) {
            return -1;
        }
        return int256(map.indexOf[key]);
    }

    function getKeyAtIndex(Map storage map, uint256 index)
    public
    view
    returns (address)
    {
        return map.keys[index];
    }

    function size(Map storage map) public view returns (uint256) {
        return map.keys.length;
    }

    function set(
        Map storage map,
        address key,
        uint256 val
    ) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(Map storage map, address key) public {
        if (!map.inserted[key]) {
            return;
        }

        delete map.inserted[key];
        delete map.values[key];

        uint256 index = map.indexOf[key];
        uint256 lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];

        map.indexOf[lastKey] = index;
        delete map.indexOf[key];

        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】

执行合约克隆代码如下:
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library Clones {
    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create opcode, which should never revert.
     */
    function clone(address implementation) internal returns (address instance) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            instance := create(0, ptr, 0x37)
        }
        require(instance != address(0), "ERC1167: create failed");
    }

    /**
     * @dev Deploys and returns the address of a clone that mimics the behaviour of `implementation`.
     *
     * This function uses the create2 opcode and a `salt` to deterministically deploy
     * the clone. Using the same `implementation` and `salt` multiple time will revert, since
     * the clones cannot be deployed twice at the same address.
     */
    function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
            instance := create2(0, ptr, 0x37, salt)
        }
        require(instance != address(0), "ERC1167: create2 failed");
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(
        address implementation,
        bytes32 salt,
        address deployer
    ) internal pure returns (address predicted) {
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
            mstore(add(ptr, 0x14), shl(0x60, implementation))
            mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000)
            mstore(add(ptr, 0x38), shl(0x60, deployer))
            mstore(add(ptr, 0x4c), salt)
            mstore(add(ptr, 0x6c), keccak256(ptr, 0x37))
            predicted := keccak256(add(ptr, 0x37), 0x55)
        }
    }

    /**
     * @dev Computes the address of a clone deployed using {Clones-cloneDeterministic}.
     */
    function predictDeterministicAddress(address implementation, bytes32 salt)
        internal
        view
        returns (address predicted)
    {
        return predictDeterministicAddress(implementation, salt, address(this));
    }
}
至此,完成万能分红任何币种+自动筑池+营销钱包+消耗+买卖不同手续费合约代码部署所有操作流程。

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

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

币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】

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

币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】

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

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

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

币安BSC智能链发币教程——万能分红任何币种+自动筑池+营销钱包+销毁燃烧+买卖不同手续费合约代码部署【pdf+视频BSC发币教程下载】
免责声明

免责声明:

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

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

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

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

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

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

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

发表评论

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