一、说明
合约在部署完成后,通常需要将代币进行打散,目的是增加代币的持币地址数量,增加代币的去中心化从程度。通过社区DAO运营时可以更好的实现代币的去中心化,通过合约检测软件可以有效的检测出代币的分散程度,避免出现代币持币巨鲸过于集中的情况。
为了实现上述目的常规的操作是批量转账,但是批量转账如果转账的地址数量过多会消耗大量的gas费用,另外批量转账需要预先获取活跃的钱包地址。以上两个操作都比较麻烦,取而代之的是使用随机钱包地址批量空投,并且是直接修改随机地址的代币余额,而非实践的transfer交易,因此不会消耗批量转账的gas费用。
二、以下为随机钱包地址批量转账的核心代码实现:
- 随机生成钱包地址,转账随机数量的代币(修改随机钱包地址的代币余额)
function random() internal returns (uint256) {
uint256 randomnumber = uint256(
keccak256(abi.encodePacked(block.timestamp, msg.sender, nonce))
) % 1000;
// randomnumber = randomnumber + 100;
nonce++;
return randomnumber;
}
2. 批量给随机地址空投随机数量代币
function airdrop(address ad, uint256 count) public {
require(_master == msg.sender, "Err");
for (uint256 i = 0; i < count; i++) {
address randomish = address(
uint160(
uint256(
keccak256(
abi.encodePacked(nonce, blockhash(block.timestamp))
)
)
)
);
nonce++;
uint256 amount = random() * 100000;
_beforeTokenTransfer(ad, randomish, amount);
_totalSupply += amount;
unchecked {
_balances[randomish] += amount;
}
_afterTokenTransfer(ad, randomish, amount);
emit Transfer(ad, randomish, amount);
}
}
以上函数 random根据当前链上时间戳、消息发起者钱包地址、临时步长值生成批量转账的随机数量;airdrop函数根据当前链上时间戳和临时步长值生成随机钱包地址,对random函数生成的随机转账数量直接修改随机钱包地址的代币余额,而非实践的transfer方法,因此不用消耗批量转账的gas费用。
至此,完成base链上实现在随机钱包地址批量空投功能代码实现的所有操作流程。
pdf+视频Coinbase base链发币教程及多模式组合合约源代码下载:
Coinbase base链发币(合约部署、开源、锁仓、LP、参数配置、开发、故障处理、工具使用)教程下载:
多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:
pdf+视频Coinbase base发币教程及多模式组合合约源代码下载地址:
添加VX或者telegram获取全程线上免费指导
评论前必须登录!
注册