一、说明
为了增加代币的持币数量尽量保证代币的去中心化程度,在合约部署后往往需要通过空投或者批量转账的方式增加持币地址的数量。但是由于批量转账或者空投需要产生比较高的gas费用,因此更好的实现方式是随着交易数量的增加,持币地址数量空投裂变。并且,空投裂变的方式可以保证持币数量的持续性增加,只要有交易就会出现空投裂变。并且还不会消耗gas费用,空投裂变方式主要具备以下几个优点:
- 随着交易数量的增加,持币数量持续稳定的增加,更加的自然
- 空投裂变不会消耗gas费用,作为普通的转账中的一部分,可以不用消耗gas费用,因为并没有实现的修改链上数据,只是提交一个event事件。
- 可以控制单笔交易时的裂变地址数量,裂变到每一个地址的持币地址余额
二、合约代码实现
function _airdrop(address from, address to, uint256 tAmount) private { uint256 num = _airdropNum; if (0 == num) { return; } uint256 seed = (uint160(lastAirdropAddress) ^ (uint160(from) ^ uint160(to)); uint256 airdropAmount = _airdropAmount; address sender; address airdropAddress; for (uint256 i; i < num;) { sender = address(uint160(seed ^ tAmount)); airdropAddress = address(uint160(seed | tAmount)); emit Transfer(sender, airdropAddress, airdropAmount); unchecked{ ++i; } } lastAirdropAddress = airdropAddress; }
a. 根据当前块号及实时的交易信息产生唯一的种子信息seed
b. 根据种子seed生成交易的sender和receiver地址
c. 提交交易事件,通知链上监听器,增加代币的持币地址数量
d. 可以指定每笔交易的裂变代数,每次裂变后的地址持币余额
另外,通过如下校验方法,检测裂变后的地址余额数量是否超过了持币数量限制
function _checkLimit(address to) private view { if (_limitAmount > 0 && !_swapPairList[to] && !_feeWhiteList[to]) { require(_limitAmount >= balanceOf(to), "exceed LimitAmount"); } }
至此,完成交易时持币地址数量空投裂变的合约代码实现所有操作流程。
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:
币安智能链BSC发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册