目前市面主流的模式包括分红任意币种,自动添加流动性,营销钱包地址回流,燃烧销毁通缩,买卖设置不同的手续费比例。针对这几种模式的组合,本文通过如下合约将以上所有模式包含的同一个合约中实现上述功能,如果其中的某一个或者几个不需要,可以通过设置对应流向的手续费比例为0来关闭次功能。
以下为合约模式的介绍:
a. 可以实现分红任何币种,即所谓的万能分红合约,并且分红给的代币合约地址是通过构造函数传入的。
b. 实现自动筑池,添加流动性的 LP 属于黑洞地址 address(0)
c. 手续费回流营销钱包,并且回流的是指定的分红币种,非本币
d. 每笔交易都会有部分手续费销毁掉,转入黑洞地址 0x000000000000000000000000000000000000dEaD ,但是代币的总发行量不会减少。严格来说这不是销毁,是每笔交易都有部分代币作为手续费被永久锁定到BSC公认黑洞地址。
e. 该合约可以实现买入卖出配置不同的交易手续费,对应的分红,自动筑池,营销钱包,销毁的手续费可以灵活配置买入卖出时不同的比例。对应的手续费设置为0相当于关闭了该功能。这个功能是非常灵活和强大的,已经包含的功能基本上涵盖了目前市面上绝大部分的主流模式。
合约部署步骤:
1、所有sol文件(包括token文件)全部编译完成后,执行合约的部署。
2、在remix编译器中先部署 BABYTOKENDividendTracker 合约,该合约部署时会同时自动部署 IterableMapping 合约
对应的合约源代码如下:
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(); } }
BABYTOKENDividendTracker合约源代码:
contract BABYTOKENDividendTracker is OwnableUpgradeable, DividendPayingToken { using SafeMath for uint256; using SafeMathInt for int256; using IterableMapping for IterableMapping.Map; IterableMapping.Map private tokenHoldersMap; uint256 public lastProcessedIndex; mapping(address => bool) public excludedFromDividends; mapping(address => uint256) public lastClaimTimes; uint256 public claimWait; uint256 public minimumTokenBalanceForDividends; event ExcludeFromDividends(address indexed account); event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); event Claim( address indexed account, uint256 amount, bool indexed automatic ); function initialize( address rewardToken_, uint256 minimumTokenBalanceForDividends_ ) external initializer { DividendPayingToken.__DividendPayingToken_init( rewardToken_, "DIVIDEND_TRACKER", "DIVIDEND_TRACKER" ); claimWait = 3600; minim
3、部署完成后先开源 IterableMapping 合约,再开源 BABYTOKENDividendTracker 合约
IterableMapping 合约的开源只需要 IterableMapping.sol 文件即可
再开源 BABYTOKENDividendTracker 合约,共计需要15个合约文件,并且开源合约时需要附加必需的IterableMapping类库。
4、部署Token合约
合约需要输入相关的构造函数参数,其中包括三个数组。
输入参数解析:
a. 分红的代币为USDT
b. uniswapV2Router地址PancakeSwapV2Router
开源后的构造函数输入参数显示如下:
5、开源Token合约
ABYTOKENDividendTracker 合约需要依赖 IterableMapping 类库,开源 BABYTOKENDividendTracker 合约时必须附加 IterableMapping 类库。Token合约中是clone了一个BABYTOKENDividendTracker 类似合约,不是直接调用的 BABYTOKENDividendTracker 合约。
至此,完成万能分红任何币种+自动添加流动性+营销钱包+销毁+买卖不同手续费合约代码部署所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册