一、说明
1、加池分红顾名思义就是添加流动性分红指定币种,可以分红主流代币比如:usdt,bnb,doge等,也可以分红指定任意币种。只要添加流动性就可以按照LP的权重分红其他币种。
2、持币分红即钱包地址持有自定义代币即可获得对应代币的分红,并且按照钱包持币的权重分红相应比例的其他代币。
注:两种模式虽然都是分红其他币种,但是分红模式和原理是不同的,实现主要分红功能的派发器合约代码也是不同的。
二、派发器代码区别
1、持币分红派发器代码:
以下是主要用来实现代币分红派发的核心功能process代码实现
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); }
上述代码主要原理是每次有买卖交易时,添加对应的msg.sender地址到相关持币数组中。遍历持币数组,结合相关的代币权重来分红指定主流币种。
2、加池分红派发器代码
以下主要是加池分红派发器支持多币种派发,其构造函数如下:
contract MultTokenDistributor { constructor (address token1, address token2) { IERC20(token1).approve(msg.sender, uint(~uint256(0))); IERC20(token2).approve(msg.sender, uint(~uint256(0))); } receive() external payable {}
以上派发器代码支持同时派发多币种,以上设计原因主要是考虑到:加池分红不一定只分一种币种,有可能分红多个币种,因此需要支持多币种派发。
合约中包括 receive()函数的原因是为支持分红WETH
当交易触发相关的代币兑换数量阈值及分红机制时会实现按照权重做加池分红、持币分红等相关分红机制。
三、完整版合约源代码如下
四、合约部署、开源、上线交易所、动态参数配置教程如下
源码及合约部署、开源、上线交易所、动态参数配置教程下载地址:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册